[NLP复习笔记] 神经网络及BP算法

1. 神经网络

1.1 神经元

神经元(Neuron)或节点(Node) 是神经网络的基本单元。下图是一个简单的神经元示意图,x 表示 输入Input), xi 表示来自于前面第 i神经元Neuron)的输入,通常会增加一个虚拟的 x0=1 用于对应连接当前神经元的 权重 w 中的 偏置量bias)。

在进行数据的加权和偏置处理,以及通过 激活函数 σ 后,得到 隐藏输出Hidden),在图中就是 a。这是神经网络进行特征学习的所在。

最后生成一个值/向量 y 作为当前这个神经元的输出(Output)。


1.2 神经网络

通常情况下,神经网络有三种类型的层,每个层都由若干个神经元组成:

  • 输入层Input Layer):这是数据进入神经网络的地方,不进行任何计算。

  • 隐藏层Hidden Layers):介于输入层和输出层之间的层,可以有一个或多个。隐藏层进行数据的加权和偏置处理,以及激活函数的应用。

  • 输出层Output Layer):生成最终的输出,如分类预测或回归值。

在输入层到隐藏层、隐藏层到输出层之间,往往都会有 权重矩阵,权重决定了输入对于输出的贡献大小,是神经网络中的可学习参数。

图中,x 表示输入层,W 为输入层到隐藏层的权重矩阵,h 表示隐藏层,U 为隐藏层到输出层的权值矩阵,y 为输出层。

假设输入层 xRn×1,隐藏层 hRd×1,显然权重矩阵 WRd×n,通过:

h=σ(Wx)

得到隐藏层向量,而这个 d 就是我们经过加权求和和偏置处理后,提取的特征的数量,相当于将 n 维度的空间映射到了 d 维度。隐藏层 h 往往会再通过一个激活函数 σ,图中没有展示出来。

假设输出层 yRm×1,那么隐藏层到输出层的权重矩阵 URm×d,通过:

z=Uhy=softmax(z)

得到输出。不过,往往会再通过一个激活函数,此处一般采用 softmax




2. 正向传播

正向传播 其实就是将一个样本 x 输入到神经网络,经过多层向前计算,最终得到输出 y 的过程。

最后,在正向传播结束后产生了预测输出 y,然后与实际的标签或输出比较,计算 损失函数 L

在神经网络中,损失函数 L 一般采用 交叉熵损失(Cross-Entropy Loss,常用于 分类任务。而本篇文章只讨论比较简单的二分类任务,所以用到的是 二分类交叉熵损失Binary Cross-Entropy

对于当前问题,我们有如下的损失函数 L

L(y^,y)=logp(y|x)=[ylogy^+(1y)log(1y^)]=[ylogσ(wx)+(1y)log(1σ(wx))]




3. 反向传播(BP算法)

3.1 BP算法简介

BP 算法,即 反向传播算法Backpropagation Algorithm),是一种用于训练神经网络的常用方法。

在前面,我们定义了损失函数 L,而反向传播的关键就是将输出误差以一种特定的方式传回网络,用于计算相对于每个权重的误差导数(梯度),而每个权重的梯度则反映了增加或减少这个权重,损失函数的值的变化。

使用这些梯度以及一个学习率参数来更新网络中的权重,我们通常采用 梯度下降法

wt+1=wtηLw

经过反复迭代后,最小化损失函数,得到最优参数(权重)。

但是,我们无法直接得到导数 Lw,此时就需要向前计算,采用 链式法则 来计算导数:


3.2 典型示例

我们用一个比较简单的示例来理解 BP 算法。如下图所示,是一个神经网络(虽然看起来很简陋),经过正向传播后计算出了每个神经元的值以及最后的损失函数值:

然后,我们从损失函数开始需要进行反向传播。因此,我们需要损失函数中每个权重对应的导数。

由链式求导法则:

Lc=eLa=Leea=cLb=Leeddb=2c

然而实际上的问题不止这么简单,对于一个分类问题,损失函数往往采用 交叉熵损失,且往往涉及激活函数 sigmoid 的求导、ReLU 的求导。

下图就是一个简单的示例:

图中,输入层 xR2×1,输入层到隐藏层的权重矩阵 W[1]R2×2,经过加权求和以及偏置后得到 z[1]R2×1,经过 ReLU 函数激活得到隐藏层 a[1]R2×1。隐藏层到输出层的权重矩阵 W[2]R1×2,经过加权求和与偏置得到 z[2],然后经过 sigmoid 函数(也就是 σ)得到最终的输出层 a[2]。最后当前的计算损失函数值。

sigmoid 函数求导后为 σ(x)(1σ(x)),具体证明可见 sigmoid函数求导-只要四步

类似于前面那个非常简陋的例子的过程,采用链式求导法则,可以得到如下导数公式的推导:

  • 每一层的表达式


  • 损失函数


  • 阶段求导

  • 链式求导


PS:这个是作业里的题目,直接贴图片了,还是很好理解的。




参考

《机器学习》周志华

神经网络15分钟入门!足够通俗易懂了吧

神经网络,BP算法的理解与推导

posted @   MarisaMagic  阅读(236)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示