机器学习笔记07:神经网络的反向传播(Backpropagation)


——–本文中除了在图片下方标记了出处的图片,均为原创,转载请注明出处——–


上一篇文章《机器学习笔记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 (网络的层数)
Sl no. of units(not counting bias unit) in layer l (第 l 层的单元数,不算偏置单元)


对于二元分类问题, y=0 or 1 。输出单元也只有一个。即 SL=1 (最后一层只有一个单元);对于多类分类问题(类数大于2),若类数为 K ,则 yRK 。如上图的四类分类问题中,有

y=1000,0100,0010,0001
输出层(最后一层)的单元数量也为 K

现在来看误差函数(Cost Function)。先来回顾一下逻辑回归中的误差函数:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j
其中第一项是原来的误差函数,第二项是惩罚项。

现在来看看神经网络的误差函数。首先需要知道 hΘ(x)RK (hΘ(x))i=ithoutput 。神经网络的误差函数可以记为如下:

J(Θ)=1m[i=1mk=1Ky(i)klog(hΘ(x(i)))k+(1y(i)k)log(1hΘ(x(i)))k]+λ2ml=1L1i=1Slj=1Sl+1(Θ(l)ji)2

其中 K 为输出层的单元数,即类数。在计算误差的时候,需要将每一类都计算进去。后面的惩罚项是整个神经网络中所有的参数 Θ 的值之和。注意 i 是从 1 开始,因为我们通常不处理偏差项,就如在逻辑回归中不处理 θ0 一样。以上就是神经网络中误差函数。


2.反向传播算法(Backpropagation Algorithm)

反向传播在神经网络中是一个非常重要的部分。它的主要作用是最小化误差函数,也就是提高神经网络的准确性。和在线性回归和逻辑回归中一样,我们采用梯度下降(Gradient descent)法来最优化误差函数。上面已经说明了误差函数为:

J(Θ)=1mi=1mk=1K[y(i)klog(hΘ(x(i)))k+(1y(i)k)log(1hΘ(x(i)))k]+λ2ml=1L1i=1Slj=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)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值