1.代价函数
首先引入一些新记法,便于稍后讨论。
假设神经网络的样本有m个,每个样本包含一组输入x和一组输出信号y,L表示神经网络的层数,Sl即第l层的单元个数(不包括偏置单元)。
将神经网络的分类定义为两种情况:二类分类和多类分类。
在逻辑回归中,我们的代价函数:
我们只有一个输出变量,也只有一个因变量y。但是在神经网络中不同,我们可以有很多输出变量,我们的hθ(x)是一个维度为k的向量,并且我们训练集中的因变量也是同样维度的向量,一次我们的代价函数会更复杂。
神经网络的代价函数:
代价函数虽然看起来复杂,但是背后的思想相同,我们希望通过代价函数来观察算法预测的结果与真实情况的误差。不同的地方在于,对于每一行特征,我们都会给出k个预测,预测k个不同的结果,选择其中可能性最高的一个,与y中的实际数据比较。后面的正则化是排除了每一层的θ0后,每一层的θ矩阵的和。最里层的循环j循环所有的行,外面的i循环所有的列。
2.反向传播算法
和线性回归和逻辑回归类似,神经网络也可以用梯度下降算法,但是神经网络比较复杂,该如何计算梯度?
需要如下两个式子:
在前面,我们给出了前馈网络的计算方法,对于一个给定训练样本的神经网络,通过前向传播的方式从输入层开始,正向一层一层进行计算,直到最后一层。
现在,为了计算代价函数的偏导数,我们需要一种反向传播算法。其核心是最小化网络输出值和目标值之间的误差。首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直至倒数第二层。
对下面的神经网络: