Luozm +

机器学习课程笔记-5

Notes about Andrew Ng's Machine Learning course on Coursera-part 5

原创文章,转载请注明:转自Luozm's Blog

1. Neural Networks–Learning

1.1 Cost function

$L$ = 网络层数 $s_l$ =l层的神经元数目(不包括偏置项) $K$ = 输出类别数

Classification

Cost function for NN:

其中,$h_\theta(x)\in\mathcal R^K$,$(h_\theta(x))_i=i^{th}$ 输出。

1.2 Backpropagation

如何对每个参数求偏导?也就是$\dfrac{\partial}{\partial \Theta_{i,j}^{(l)}}J(\Theta)$

BP algorithm 具体步骤: 准备工作:给定训练集 $\lbrace (x^{(1)}, y^{(1)}) \cdots (x^{(m)}, y^{(m)})\rbrace$,对于所有的 $(l,i,j)$,令 $\Delta^{(l)}_{i,j}=0$

For 训练样本 t=1 to m:

  1. 令 $a^{(1)} := x^{(t)}$
  2. 对于 $l=2,3,…,L$,正向计算所有输出 $a^{(l)}$ forward
  3. 使用$y^{(t)}$ 来计算 $\delta^{(L)} = a^{(L)} - y^{(t)}$(这是输出层的误差)
  4. 使用 $\delta^{(l)} = ((\Theta^{(l)})^T \delta^{(l+1)}).* a^{(l)}.* (1 - a^{(l)})$(也就是每层线性组合及sigmoid的局部偏导数)来计算 $\delta^{(L-1)}, \delta^{(L-2)},\dots,\delta^{(2)}$
  5. $\Delta_{i,j}^{(l)}:=\Delta_{i,j}^{(l)}+a_j^{(l)}\delta_i^{(l+1)}$(或向量版本:$\Delta^{(l)}:=\Delta^{(l)}+\delta^{(l+1)}(a^{(l)})^T$)

由此我们更新矩阵:

$D_{i,j}^{(l)} := \dfrac{1}{m}\left(\Delta_{i,j}^{(l)} + \lambda\Theta_{i,j}^{(l)}\right)$(正则化)

$D_{i,j}^{(l)} := \dfrac{1}{m}\Delta_{i,j}^{(l)}$(偏置不需要正则化)

最终我们得到:

1.3 BP–Intuition

二元分类时:

其中一个样本(忽略正则化):

最后一层的误差正式地说应该是损失函数对于scores function的偏导数:

bp_intuition

注意有分支结构时,反向传播求导应该相加:$\delta_2^{(2)}=\Theta_{12}^{(2)}*\delta_1^{(3)}+\Theta_{22}^{(2)}*\delta_2^{(3)}$

© Luozm . All rights reserved. | Top

Life

Theory

Develop