花书+吴恩达深度学习(三)反向传播算法 Back Propagation

本文通过逐步解析,从Logistic Regression出发,深入讲解两层神经网络中的反向传播算法,包括单个样本和多个样本的情况。内容涵盖梯度计算、参数更新,帮助理解深度学习中的Back Propagation。
摘要由CSDN通过智能技术生成

目录

0. 前言

1. 从 Logistic Regression 中理解反向传播

2. 两层神经网络中单个样本的反向传播

3. 两层神经网络中多个样本的反向传播


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

花书+吴恩达深度学习(一)前馈神经网络(多层感知机 MLP)

花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)

花书+吴恩达深度学习(三)反向传播算法 Back Propagation

花书+吴恩达深度学习(四)多分类 softmax

0. 前言

在神经网络中,通过前向传播,将线性拟合和非线性激活的计算结果传递至最后一层 \hat{y} 。

然后通过反向传播,从最后一层进行梯度计算,每一层使用到了后面一层的计算结果对各自的参数进行修改,直到输入层。

本篇文章通过几个例子层层递进,理解反向传播算法。

1. 从 Logistic Regression 中理解反向传播

如下图所示,为单个样本通过 LR 单元:

其中,样本有两个特征,前向传播通过线性单元和非线性激活函数 sigmoid ,得出结果,然后计算损失函数。

损失函数采用:

\mathfrak{L}(a,y)=y\log(a)+(1-y)\log(1-a)

反向传播中,首先对最后一层的输出计算梯度:

\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} a}= -\frac{y}{a}+\frac{1-y}{1-a}

其次,对倒数第二层的输出计算梯度:

\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} z}=\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} a}\frac{\mathrm{d} a}{\mathrm{d} z}=(-\frac{y}{a}+\frac{1-y}{1-a})\cdot a(1-a)=a-y

然后,求出了对 z 的梯度之后,可以计算对参数的梯度:

\begin{align*} & \frac{\partial \mathfrak{L}}{\partial w_j}=\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} z}\frac{\partial z}{\partial w_j}=(a-y)x_j \\ & \frac{\partial \mathfrak{L}}{\partial b}=\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} z}\frac{\partial z}{\partial b}=(a-y) \end{align*}

最后,就可以使用梯度下降的方法对参数进行修改。

在每一层计算梯度的过程中,都使用到了后面一层的计算结果,可以看成是梯度的计算从后面不断的往前面传递的反向传播

2. 两层神经网络中单个样本的反向传播

在 logistic regression 的例子中,可以看成是一个神经元的反向传播。

现在,我们构建一个两层多个神经元的神经网络:

我们对其进行向量化,单个样本表示为 X ,维度 (2,1) 。

第一层网络中,参数权重表示为 W^{[1]} ,维度 

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值