多层感知机的反向传播算法

本文介绍了多层感知机的反向传播算法,包括基本概念、损失函数(平方误差和交叉熵)及其适用场景,以及反向传播过程中参数更新的梯度计算公式。通过讲解,阐述了为何交叉熵损失函数更适用于分类任务,而平方误差损失函数更适合连续输出。文章还详细推导了反向传播算法中的关键公式,为理解和实现神经网络的反向传播提供了理论基础。
摘要由CSDN通过智能技术生成

1 基本概念

前向传播

多层感知机中,输入信号通过各个网络层的隐节点产生输出的过程称为前向传播。

图形化表示

下图展示了一个典型的多层感知机

  • 定义第 ( l ) (l) (l) 层的输入为 x ( l ) x^{(l)} x(l)
  • 在每一层中
    • 首先利用输入 x ( l ) x^{(l)} x(l) 计算仿射变换 z ( l ) = W ( l ) x ( l ) + b ( l ) z^{(l)}=W^{(l)} x^{(l)} + b^{(l)} z(l)=W(l)x(l)+b(l)
    • 然后激活函数 f f f 作用于 z ( l ) z^{(l)} z(l),得到 a ( l ) = f ( z ( l ) ) a^{(l)}=f(z^{(l)}) a(l)=f(z(l))
    • a ( l ) a^{(l)} a(l) 直接作为下一层的输入,即 x ( l + 1 ) x^{(l+1)} x(l+1)

x ( l ) x^{(l)} x(l) m m m 维向量, z ( l ) z^{(l)} z(l) a ( l ) a^{(l)} a(l) n n n 维向量,则 W ( l ) W^{(l)} W(l) m × n m\times n m×n 维的矩阵,这里分别用 z i ( l ) z^{(l)}_i zi(l) a i ( l ) a^{(l)}_i ai(l) W i j ( l ) W^{(l)}_{ij} Wij(l) 表示其中的一个元素。

多层感知机结构图
反向传播算法

在网络训练中,前向传播最终产生一个标量损失函数。
反向传播算法( Back Propagation ) 则将损失函数的信息沿网络层向后传播用以计算梯度,达到优化网络参数的目的。反向传播算法是多层神经网络有监督训练中最简单也最一般的方法之一。

2 多层感知机的损失函数

给定包含 m m m 个样本的集合 { ( x ( 1 ) , y ( 1 ) ) , ⋯   , ( x ( m ) , y ( m ) } \{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)}\} { (x(1),y(1)),,(x(m),y(m)},假设多层感知机的层数(layer)为 N N N,在第 l l l 层的神经节点数目为 s l s_l sl

2.1 平方误差损失函数

J ( W , b ) = [ 1 m ∑ i = 1 m J ( W , b ; x ( i ) , y ( i ) ) ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W i j ( l ) ) 2 = [ 1 m ∑ i = 1 m 1 2 ∥ y ( i ) − f w , b ( x ( i ) ) ∥ 2 ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s ( l + 1 ) ( W i j ( l ) ) 2 \begin{aligned} J(W,b) &= [\frac{1}{m} \sum_{i=1}^m J(W,b;x^{(i)},y^{(i)})] + \frac{\lambda}{2} \sum_{l=1}^{N-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_l+1} (W_{ij}^{(l)})^2 \\ &= [\frac{1}{m} \sum_{i=1}^m \frac{1}{2} \| y^{(i)}-f_{w,b}(x^{(i)}) \|^2] + \frac{\lambda}{2} \sum_{l=1}^{N-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{(l+1)}} (W_{ij}^{(l)})^2 \end{aligned} J(W,b)=[m1i=1mJ(W,b;x(i),y(i))]+2λl=1N1i=1slj=1sl+1(Wij(l))2=[m1i=1m21y(i)fw,b(x(i))2]+2λl=1N1i=1slj=1s(l+1)(Wij(l))2

  • 第一项为平方误差项;
  • 第二项为 L2 正则化项,在功能上可以称作权重衰减项,目的是减少权重的幅度,防止过拟合,其中 W i j ( l ) W_{ij}^{(l)} Wij(l) 指的是第 l l l 层神经网络上的第 i i i 节点到第 l + 1 l+1 l+1 层神经网络上的第 j j j 个节点的权重;
  • 第二项前面的系数 λ \lambda λ 为权重衰减参数,用于控制损失函数中两项的相对权重。

2.2 交叉熵损失函数

以二分类场景为例,交叉熵损失函数定义为:

J ( W , b ) = − [ 1 m ∑ i = 1 m J ( W , b ; x ( i ) , y ( i ) ) ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( W i j ( l ) ) 2 = − [ 1 m ∑ i = 1 m { y ( i ) ln ⁡ o ( i ) + ( 1 − y ( i ) ) ln ⁡ ( 1 − o ( i ) ) } ] + λ 2 ∑ l = 1 N − 1 ∑ i = 1 s l ∑ j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值