本文从李飞飞的课件cs231n的得到启发,将关于反向传播算法的内容做下总结。
下图是对深度学习的直观解释:
该图右侧表示图像空间,通过几个分界面将图像空间分成几个不同的区域,每个区域的图像具有相似的特征。
左侧为卷积神经网络的简单版,将输入图像与权重矩阵W想乘,加上偏置项即可得到属于各个类别的scores,score越大,属于该类的概率越大。
但是,基本思路是这样,具体实施的话,需要考虑很多问题:
1. 上述方法虽然能计算出scores,但当scores不满足我们的期望时(也就是说当前分类器并不是最优),如何去处理? → → 通过最小化损失函数的方法来找到最优的分类器。
2. 如何去量化损失?
3. 量化损失后,如何将损失最小化?
损失函数的选择
Multiclass SVM loss
理论推导
其中 xi x i is image and yi y i is integer label
整个数据集上的损失函数如下所示:
Li L i 又如何定义呢?
该是的直观理解:当非目标的score比目标的score大1以上时,认为损失为零,否则,认为损失为 sj−syi+1 s j − s y i + 1
Example
假设有一个分类任务:设计一个分类器将三幅图像分类。
给定三幅图像,通过下图的方法计算出每幅图对应的scores向量:
每幅图对应一个scores向量,如下图所示:
但是据我们观察,每幅图对应的scores向量中最大值并非对图像的正确分类,因此,说明目前的分类器(也就是 W,b W , b )并不是最优,需要进行优化。
根据上述loss计算公式进行如下计算:
我们计算第三幅图像的scores,因此, i=3 i = 3 , y3=3 y 3 = 3 , j=1,2 j = 1 , 2
最终计算结果如下图所示:
![](http://orj2sz5qx.bkt.clouddn.com/DL4-loss%E7%BB%93%E6%9E%9C.png)
总的损失为:
现在损失已经计算好了。
程序实现
这种损失在通过Python程序如何实现呢?
def L_i_vectorized(x,y,w):
scores = W.dot(x) //计算scores
margins = np.maximum(0,scores-scores[y]+1) //计算SVM loss Ly
margins[y] = 0 //无需计算该样本对应的margin,因此,将margins对应的值置0
loss_i = np.sim(margins) //elements to sum
return loss_i //返回SVM loss L_y
正则化项的引入
当不引入正则化项时,最终的分类器仅在训练数据上有良好的分类效果,从而引入了Data loss,如下图所示,此时并不能对test data进行好的估计,也就是所谓的过拟合,我们期待最终的分类器是简单的,因此,引入正则项,则最终的效果如下图所示:
!DL4-未引入正则项
!DL5-引入正则项
常用的正则项:
1. L2 regularization $R(W)=\sum{k}
back-propagation
BP算法的主要流程可以总结如下:
BP算法的主要流程可以总结如下:
输入:训练集 D=(xk,yk)mk=1 D = ( x k , y k ) k = 1 m ; 学习率;
过程:
1. 在(0, 1)范围内随机初始化网络中所有连接权和阈值
2. repeat:
3. for all (xk,yk)∈D ( x k , y k ) ∈ D do
4. 根据当前参数计算当前样本的输出;
5. 计算输出层神经元的梯度项;
6. 计算隐层神经元的梯度项;
7. 更新连接权与阈值
8. end for
9. until 达到停止条件
输出:连接权与阈值确定的多层前馈神经网络
参数说明
wljk w j k l :从第 (l−1)th ( l − 1 ) t h 层的 kth k t h neural到第 lth l t h 层的 jth j t h neural;
blj b j l :第 lth l t h 层的第 jth j t h 个神经元的bias;
alj a j l :第 lth l t h 层的第 jth j t h 个神经元的输出(与 (l−1)th ( l − 1 ) t h 的加权输入并通过激活函数的结果);
zlj z j l :第 lth l t h 层的第 jth j t h 个神经元未经过激活函数的加权值;
!DL1-2-变量对应图
矩阵形式为:
注意: σ() σ ( ) 是激活函数,主要目的是引入非线性,有多种激活函数。
同时,损失函数也有多种类型,此例子中为误差均方根函数。
关于误差函数有两个假设:
first:误差函数 C C 被看做所被训练样本的误差的均方根的平均(在批量梯度下降中会用到),