(1)代价函数
假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的 neuron 个数(𝑆𝑙表示输出层神经元个数),𝑆𝐿代表最后一层中处理单元的个数。例如下图神经网络图中:
=3,
=5,
=
=4,L=4
将神经网络的分类定义为两种情况:二类分类和多类分类,
二类分类:𝑆𝐿 = 1(=k=1), 𝑦=0𝑜𝑟 1表示哪一类;
𝐾类分类:𝑆𝐿= 𝑘, 𝑦𝑖=1表示分到第i 类;(𝑘 > 2)
回顾逻辑回归问题中我们的代价函数为:
在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量𝑦,但是在神经网络中,我们可以有很多输出量,我们的ℎ𝜃(𝑥)是一个维度为𝐾的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,
正则化的那一项只是排除了每一层𝜃0后,每一层的𝜃 矩阵的和。最里层的循环𝑗循环所有的行(由𝑠𝑙 +1 层的激活单元数决定),循环𝑖则循环所有的列,由该层(𝑠𝑙层)的激活单元数所决定。即:ℎ𝜃(𝑥)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization 的 bias项处理所有参数的平方和。
(2)反向传播算法(Backpropagation Algorithm)
我们的算法表示为:
(3)反向传播算法的直观理解
前向传播算法如下:
反向传播算法如下:
(4)梯度检验
原因:对一个较为复杂的模型使用梯度下降算法时,可能会存在不容易察觉的错误,虽然看起来代价在不断减小,但最终结果可能并不是最优解。采用梯度的数值检验方法。在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。即对于某个特定的 𝜃,我们计算出在 𝜃-𝜀 处和 𝜃+𝜀 的代价值(𝜀是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 𝜃处的代价值。
当𝜃是一个向量时,我们则需要对偏导数进行检验。因为代价函数的偏导数检验只针对一个参数的改变进行检验,下面是一个只针对𝜃1进行检验的示例:
(5)随机初始化
通常初始参数为正负𝜀之间的随机值。
对逻辑回归来说初始化所有参数为0是可行的,但是对神经网络来说不可行,若初始参数都为0或一样的非0值,则第二层的所有激活单元都会有相同的值。
(6)总结
训练神经网络:
1.参数的随机初始化
2.利用正向传播方法计算所有的ℎ𝜃(𝑥)
3.编写计算代价函数 𝐽 的代码
4.利用反向传播方法计算所有偏导数
5.利用数值检验方法检验这些偏导数
6.使用优化算法来最小化代价函数