上一篇文章《机器学习笔记06:神经网络的表示(Neural Networks-Representation)》 大概描述了神经网络的起源、结构、表示、工作方法及一些应用。今天这篇文章对应 Coursera 上的Stanford机器学习课程的week05。主要的内容是神经网络的学习,包括梯度下降、反向传播等。
1.误差函数(Cost Function)
线性回归和逻辑回归中都用到了误差函数来衡量模型的准确度,当然神经网络也不例外。先来看一个神经网络的图片,这里需要引入一些标记,以便于后面的描述。
本图片属于Stanford机器学习课程,转载请注明出处
对于神经网络,有如下几个记号:
Notation | Representation |
---|---|
{ (x(1),y(1)),(x(2),y(2)),...,(x(m),y(m)),} | training set (训练集) |
L | total no. of layers in network (网络的层数) |
|
no. of units(not counting bias unit) in layer l (第
|
对于二元分类问题, y=0 or 1 。输出单元也只有一个。即
y=⎡⎣⎢⎢⎢⎢1000⎤⎦⎥⎥⎥⎥,⎡⎣⎢⎢⎢⎢0100⎤⎦⎥⎥⎥⎥,⎡⎣⎢⎢⎢⎢0010⎤⎦⎥⎥⎥⎥,⎡⎣⎢⎢⎢⎢0001⎤⎦⎥⎥⎥⎥
输出层(最后一层)的单元数量也为
K
。
现在来看误差函数(Cost Function)。先来回顾一下逻辑回归中的误差函数:
现在来看看神经网络的误差函数。首先需要知道 hΘ(x)∈RK , (hΘ(x))i=ithoutput 。神经网络的误差函数可以记为如下:
J(Θ)=−1m[∑i=1m∑k=1Ky(i)klog(hΘ(x(i)))k+(1−y(i)k)log(1−hΘ(x(i)))k]+λ2m∑l=1L−1∑i=1Sl∑j=1Sl+1(Θ(l)ji)2
其中 K 为输出层的单元数,即类数。在计算误差的时候,需要将每一类都计算进去。后面的惩罚项是整个神经网络中所有的参数
2.反向传播算法(Backpropagation Algorithm)
反向传播在神经网络中是一个非常重要的部分。它的主要作用是最小化误差函数,也就是提高神经网络的准确性。和在线性回归和逻辑回归中一样,我们采用梯度下降(Gradient descent)法来最优化误差函数。上面已经说明了误差函数为:
J(Θ)=−1m∑i=1m∑k=1K[y(i)klog(hΘ(x(i)))k+(1−y(i)k)log(1−hΘ(x(i)))k]+λ2m∑l=1L−1∑i=1Sl∑j=1Sl+1(Θ(l)ji)2
在梯度下降的过程中,需要计算每个 Θ 的偏导数,并用来更新 Θ 自身:
Θ(l)ji=Θ(l)ji−∂∂Θ(l)jiJ(Θ)
用一个样本来说明如何进行反向传播。假设神经网络如下图所示:
本图片属于Stanford机器学习课程,转载请注明出处
假如有一个样本 (x,y) 首先,我们需要进行前向传播,也就是计算预测值:
a(1)=x
z(2)=Θ(1)a(1)
a(2)=g(z(2))adda(2)0
z(3)=Θ(2)a(2)
a(3)