这一节主要讲梯度更新与BP算法。
-
我们将把所有的样本的误差求平均然后进行更新的算法称之为batch gradient descent。一次只更新一个样本的算法称之为stochastic gradient descent。
-
它有三个好处, 一个是计算开销小, 因为我们不用每次都计算所有样本然后进行更新计算; 二是增加了随机性, 因为我们不清楚如果全部一次更新的话是否选择的点就是最优的点;三是它非常简单, 应用起来也不麻烦。
-
在movie rating的例子中, 就是计算user更movie之间的内积, 然后计算误差, 一个一个更新。
-
接下来就是讲神经网络了。 perceptron 能力有些, 神经网络就是combine perceptrons, 如OR, AND, XOR门。当然也要注意generalization的能力。
-
前向传播。有多个层, 每个层都是经过一个线性变换-非线性变换。 在这里的非线性变换是用tanh函数。
-
那么, 神经网络应该如何训练呢。主要的的key就是W决定了h(x)所以,就是Error在W中每个元素中传播。
-
在计算的过程中, 其中关键的法则就是链式求导, 将e对w的求导转化为e对signal s求导, s对w求导。 显然s对w求导就是x而已, 重要的是e对s求导, 在这里我们将其记为delta。
-
首先看它对最后一层的情况。 计算处error, 然后求导。
-
更一般化的, 从后一层反向传播到前一层。与前向传播类似, 都有w乘以另外一个项。
-
最终的算法如下。