ML学习笔记第五周(一):代价函数与反向传播

1 代价函数

符号表示 具体含义
(x(i),y(i))(x^{(i)},y^{(i)}) ii个训练实例
mm 训练实例的个数
LL 神经网络结构的层数
sls_l ll层的单元数量(不包含偏置单元)

ML学习笔记第五周(一):代价函数与反向传播
ML学习笔记第五周(一):代价函数与反向传播
J(Θ)=1mi=1mk=1K[yk(i)log((hΘ(x(i)))k)+(1yk(i))log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θj,i(l))2J(\Theta) = - \frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \left[y^{(i)}_k \log ((h_\Theta (x^{(i)}))_k) + (1 - y^{(i)}_k)\log (1 - (h_\Theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} ( \Theta_{j,i}^{(l)})^2

在神经网络中,我们可能有许多输出节点。我们表示hΘ(x)kh_\Theta(x)_k作为一个假设,作为假设函数的第kk个输出。

我们添加了一些嵌套的求和来计算我们的多个输出节点。在等式的第一部分中,在方括号之前,我们有一个额外的嵌套求和,它循环输出节点的数量。

在正则化部分中,在方括号之后,我们必须考虑多个Θ\Theta矩阵。当前theta矩阵中的列数等于当前层中的节点数(包括偏置单元)(即sj+1s_j+1)。当前Θ\Theta矩阵中的行数等于下一层中的节点数(不包括偏置单元)(即sj+1s_{j+1})。与逻辑回归一样,我们对每个项都进行平方,以使最终的模型尽可能简洁。

2 反向传播算法

ML学习笔记第五周(一):代价函数与反向传播
假设只有一个样本,把前向传播向量化,这使得我们可以计算神经网络结构里的每一个神经元的激励值。ML学习笔记第五周(一):代价函数与反向传播
反向传播(Back propagation):δj(l)\delta ^{(l)}_{j}就是第ll层节点jj的误差。
注意:没有δ(1)\delta ^{(1)}项,因为第1层为输入层,没有误差。
ML学习笔记第五周(一):代价函数与反向传播
反向传播法这个名字,源于我们从输出层开始计算δ(4)\delta^{(4)},然后我们返回到上一层计算第三隐藏层的δ(3)\delta^{(3)},接着我们再往前一步来计算δ(2)\delta^{(2)} ,所以说,我们是类似于把输出层的误差反向传播给了第3层,然后是再传到第2层,这就是反向传播的意思。
(右侧蓝色笔记为向量化之后的形式)
ML学习笔记第五周(一):代价函数与反向传播
反向传播算法具体实现流程:(红色笔记为向量化后的操作)
ML学习笔记第五周(一):代价函数与反向传播
ML学习笔记第五周(一):代价函数与反向传播

3 反向传播直观理解

ML学习笔记第五周(一):代价函数与反向传播
ML学习笔记第五周(一):代价函数与反向传播
ML学习笔记第五周(一):代价函数与反向传播

4 参考资料

1、https://www.coursera.org