Machine Learning----Task4

Deep Learning & Backpropagation

1. Introduction to Deep Learning

Development

  • 1958-Perceptron(linear model) ---- limitations
  • 1980s-Multi-layer perceptron (similar to DNN today)
  • Backpropagation (useful when hidden layers <= 3)
  • 1 hidden layer is “good enough”, why deep?
  • RBM initialization(Breakthrough)
  • GPU (save time)
  • popular in speech recognition
  • win ILSVRC image competition (ILSVRC (ImageNet Large Scale Visual Recognition Challenge))

Three steps of DL

  • Step1:神经网络(Neural network)
  • Step2:模型评估(Goodness of function)
  • Step3:选择最优函数(Pick best function)

Step1 Nerual network

Nerual network consists of neurons.
Newwork Parameter \theta : all the weights and bias in the neurons

概念:前馈(feedforward)也可以称为前向,从信号流向来理解就是输入信号进入网络后,信号流动是单向的,即信号从前一层流向后一层,一直到输出层,其中任意两层之间的连接并没有反馈(feedback),亦即信号没有从后一层又返回到前一层。

image

image

一个神经网络如果权重和偏差都知道的话就可以看成一个函数,他的输入是一个向量,对应的输出也是一个向量。可以给上面结构的参数设置为不同的数,就是不同的函数(function)。这些可能的函数(function)结合起来就是一个函数集(function set)。这个时候函数集(function set)是比较大的,是以前的回归模型(linear model)等没有办法包含的函数(function),所以说深度学习(Deep Learning)能表达出以前所不能表达的情况。

  • To understand full connect and feedforward
    Input Layer:1 layer
    Hidden Layer:N layers
    Output Layer:1 layer
    chapter13-6
    full connect: pairwise connectively between each two layers
    feedforward: move forward

  • Deep means many hidden layers

  • 2012 AlexNet:8层
  • 2014 VGG:19层
  • 2014 GoogleNet:22层
  • 2015 Residual Net:152层
  • 101 Taipei:101层
    随着层数变多,错误率降低,随之运算量增大,通常都是超过亿万级的计算。对于这样复杂的结构,一定不会一个一个的计算,对于亿万级的计算,使用loop循环效率很低。

引入矩阵计算(Matrix Operation)能使得我们的运算的速度以及效率高很多

Matrix Operation

chapter13-9
sigmoid(权重w【黄色】 * 输入【蓝色】+ 偏移量b【绿色】)= 输出
其中sigmoid更一般的来说是激活函数(activation function),现在已经很少用sigmoid来当做激活函数。

  • If we have lots of layers:

    image
    从结构上看每一层的计算都是一样的,也就是用计算机进行并行矩阵运算。

整个神经网络的本质:通过隐藏层进行特征转换

把隐藏层通过特征提取来替代原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征(相当于黑箱操作)而对于输出层,其实是把前面的隐藏层的输出当做输入(经过特征提取得到的一组最好的特征)然后通过一个多分类器(可以是softmax函数)得到最后的输出y。
image

  • Examples----Handwriting

    从上图看神经网络的结构决定了函数集(function set),所以说网络结构(network structured)很关键

image

  • 多少层? 每层有多少神经元?
    这个问我们需要用尝试加上直觉的方法来进行调试。对于有些机器学习相关的问题,我们一般用特征工程来提取特征,但是对于深度学习,我们只需要设计神经网络模型来进行就可以了。对于语音识别和影像识别,深度学习是个好的方法,因为特征工程提取特征并不容易。
  • 结构可以自动确定吗?
    有很多设计方法可以让机器自动找到神经网络的结构的,比如进化人工神经网络(Evolutionary Artificial Neural Networks)但是这些方法并不是很普及 。
  • 我们可以设计网络结构吗?
    可以的,比如 CNN卷积神经网络(Convolutional Neural Network )

Step2 Goodness of function

2

对于模型的评估,我们一般采用损失函数来反应模型的好差,对于神经网络来说,我们采用交叉熵(cross entropy)函数来对 y\hat{y} 的损失进行计算,接下来就是调整参数,让交叉熵越小越好。


对于损失,不仅要计算一笔数据的,而是要计算整体所有训练数据的损失,然后把所有的训练数据的损失都加起来,得到一个总体损失L。接下来在function set里面找到一组函数能最小化这个总体损失L,或者找一组神经网络的参数 \theta ,来最小化总体损失L

  • Step3:Pick best function


具体流程: \theta 是一组包含权重和偏差的参数集合,随机找一个初试值,接下来计算一下每个参数对应偏微分,得到的一个偏微分的集合 \nabla{L} 就是梯度,有了这些偏微分,就可以不断更新梯度得到新的参数,这样不断反复进行,就能得到一组最好的参数使得损失函数的值最小

Backpropagation

image
在神经网络中计算损失最好的方法就是反向传播,我们可以用很多框架来进行计算损失,比如说TensorFlow,theano,Pytorch等等

Think:

Isn’t it better when there are more hidden layers?

image
参数多的model拟合数据很好是很正常的。下面有一个通用的理论:
对于任何一个连续的函数,都可以用足够多的隐藏层来表示。那为什么我们还需要‘深度’学习呢,直接用一层网络表示不就可以了?(In next course)

Backpropagation

1赞

西久同学,继续保持拼劲

浙ICP备19012682号