深度学习:手写反向传播算法(BackPropagation)

简介: 深度学习:手写反向传播算法(BackPropagation)

深度学习:手写反向传播算法(BackPropagation)

前置知识回顾

损失函数:交叉熵
优化方法:SGD与GD
网络结构:多层感知机是如何运作的
链式法则:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/e6b8800a13a34fa58efca5a7ed395122.jpeg)

前向传播

首先定义一个简单的三层全连接神经网络,其中为了方便运算,我们省略了激活函数与偏置系数b,网络结构如图所示:

                                         ![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/e6b1d5a8895744b3ae907ea6c7cb0f51.jpeg)

下面我们开始前向计算: 请添加图片描述
请添加图片描述

1.在这里我们发现,其中计算的结果也就是隐藏层神经元的数值z1与z2,那么不难看出,我们把这次计算的输出当作下次计算的输入,就可以计算出z3与z4,这样逐层传播,就是上述网络的前想传播过程。
2.当我们得到网络的结果矩阵z3与z4,下面我们要通过代价函数计算损失
为了方便运算,我们采用均方误差(MSE)来计算损失计算过程如下:
在这里插入图片描述

其中y假设为真实值。
上述过程就是前向计算的过程。

反向传播

计算完代价函数,我们就需要更新我们的参数,之前我们学习的梯度梯度下降法只能更新一层神经网络的参数,而在多层网络中,我们需要用到链式法则的知识来得到其他层参数的偏导数,就可以逐层更新参数。具体过程如下:
我们从后往前更新参数:
首先计算损失函数对第二层网络参数的偏导数
$$\begin{vmatrix} \dfrac{\partial l_1}{\partial w_5} & \dfrac{\partial l_{1}}{\partial w_7} \\ \dfrac{\partial l_{2}}{\partial w_6} & \dfrac{\partial l_{2}}{\partial w_8} \end{vmatrix}=\begin{vmatrix}
\dfrac{\partial l_{1}}{\partial z_{3}}\dfrac{\partial z_3,}{\partial w_5} & \dfrac{\partial l_{4}}{\partial z_{3}}\dfrac{\partial z_{3}}{\partial w_7} \
\dfrac{\partial l_{2}}{\partial z_{4}}\dfrac{\partial z_4}{\partial W_6} & \dfrac{\partial l_{2}}{\partial z_{4}}\dfrac{\partial z_4}{\partial W_{8}}
\end{vmatrix}$$
计算偏导数后,我们可以通过梯度下降法更新参数(这里假设a为学习率):

$$ \begin{vmatrix} w_{5}-a\dfrac{ \partial l_{1}}{\partial w_5} & w_{7}-a\dfrac{\partial l_1}{\partial w_1}, \\ w_{6}-a\dfrac{\partial l_{2}}{\partial w_6} & w_{8}-a\dfrac{\partial l_{2}}{\partial w_8} \end{vmatrix}=\begin{vmatrix} w_{5*} & w_{7*}\\ w_{6*}& w_{8*} \end{vmatrix} $$

接着,我们就继续向前跟新,这里损失函数对参数的偏导数为:
$$ \dfrac{\partial l_{1}}{\partial w_{1}}=\dfrac{\partial l_{1}}{\partial z_{1}}\dfrac{\partial z_{1}}{\partial w_1}=\dfrac{\partial l_{1}}{\partial z_{3}}\dfrac{\partial z_3}{\partial z_{1}}\dfrac{\partial z_{1}}{\partial w_{1}} $$
有了偏导数,我们就可以重复上述操作,直至更新完所有参数。

代码实现

import torch.nn as nn
import torch.nn.functional as F

x = torch.tensor([2.0,2.0],requires_grad=True)
class model(nn.Module):
    def __init__(self,x):
        super(model, self).__init__()
        self.x = x
        self.fc1 = nn.Linear(2, 2)
        self.fc2 = nn.Linear(2, 2)
    def forward(self):
        x = self.fc1(self.x)
        x = self.fc2(x)
        return x
    
    
x = model(x).forward() 
x = x.sum().backward()
目录
相关文章
|
2天前
|
机器学习/深度学习 存储 缓存
【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现
【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现
69 32
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法概念介绍
深度学习算法概念介绍
|
2天前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统频偏估计和补偿算法matlab仿真
### 算法仿真结果 展示5张图像,描绘了基于深度学习的频偏估计和补偿在MATLAB 2022a中的仿真效果。 ### 理论概要 - 深度学习算法用于建立信号与频偏的非线性映射,无需导频,节省资源。 - 网络模型(如CNN或RNN)处理IQ数据,提取特征,简化估计补偿过程,降低复杂度。 - 64QAM系统中,通过神经网络实现精确频偏感知,增强通信性能。 ### MATLAB核心程序 - 代码生成64QAM信号,模拟不同SNR和频偏条件,使用深度学习进行相位估计和补偿。 - 仿真比较了有无补偿的误码率,显示补偿能显著改善通信质量。 ```
50 1
|
2天前
|
机器学习/深度学习 算法 调度
深度学习|改进两阶段鲁棒优化算法i-ccg
深度学习|改进两阶段鲁棒优化算法i-ccg
|
2天前
|
机器学习/深度学习 算法 网络架构
什么是神经网络学习中的反向传播算法?
什么是神经网络学习中的反向传播算法?
9 2
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(二)
深度学习算法简介(二)
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(一)
深度学习算法简介(一)
|
2天前
|
机器学习/深度学习 存储 编解码
利用深度学习优化视频压缩算法
【4月更文挑战第28天】随着数字媒体时代的到来,视频数据量急剧增加,有效的视频压缩技术变得尤为重要。本文探讨了一种基于深度学习的视频压缩框架,旨在提高压缩效率同时保持较高的视频质量。通过使用卷积神经网络(CNN)对视频帧进行特征提取,并结合先进的编码技术,本研究提出了一种新的率失真优化算法。实验结果表明,该算法在多个标准测试序列上相比传统方法能显著降低比特率,同时维持了良好的视觉质量。
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
2天前
|
机器学习/深度学习 人工智能 算法
揭秘深度学习中的优化算法
【4月更文挑战第24天】 在深度学习的广阔天地中,优化算法扮演着至关重要的角色。本文将深入探讨几种主流的优化算法,包括梯度下降法、随机梯度下降法、Adam等,并分析它们的特点和适用场景。我们将通过理论分析和实例演示,揭示这些优化算法如何帮助模型更高效地学习参数,从而提高模型的性能。