神经网络反向传播的数学原理

简介: 如果能二秒内在脑袋里解出下面的问题,本文便结束了。 已知:神经网络反向传播的数学原理,其中神经网络反向传播的数学原理。

如果能二秒内在脑袋里解出下面的问题,本文便结束了。

已知:神经网络反向传播的数学原理,其中神经网络反向传播的数学原理

求:神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理


到这里,请耐心看完下面的公式推导,无需长久心里建设。

首先,反向传播的数学原理是 “求导的链式法则” :

神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理的可导函数,则神经网络反向传播的数学原理

接下来介绍

  • 矩阵、向量求导的维数相容原则

  • 利用维数相容原则快速推导反向传播

  • 编程实现前向传播、反向传播

  • 卷积神经网络的反向传播

快速矩阵、向量求导

这一节展示如何使用链式法则、转置、组合等技巧来快速完成对矩阵、向量的求导

一个原则维数相容,实质是多元微分基本知识,没有在课本中找到下列内容,维数相容原则是我个人总结:

维数相容原则:通过前后换序、转置 使求导结果满足矩阵乘法且结果维数满足下式:

如果神经网络反向传播的数学原理, 神经网络反向传播的数学原理,那么神经网络反向传播的数学原理

利用维数相容原则解上例:

step1:把所有参数当做实数来求导,神经网络反向传播的数学原理

依据链式法则有神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理

可以看出除了神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理的求导结果在维数上连矩阵乘法都不能满足。

step2:根据 step1 的求导结果,依据维数相容原则做调整:前后换序、转置

依据维数相容原则神经网络反向传播的数学原理,但神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理,自然得调整为神经网络反向传播的数学原理

同理:神经网络反向传播的数学原理,但 神经网络反向传播的数学原理神经网络反向传播的数学原理神经网络反向传播的数学原理,那么通过换序、转置我们可以得到维数相容的结果神经网络反向传播的数学原理

对于矩阵、向量求导:

  • “当做一维实数使用链式法则求导,然后做维数相容调整,使之符合矩阵乘法原则且维数相容” 是快速准确的策略;

  • “对单个元素求导、再整理成矩阵形式” 这种方式整理是困难的、过程是缓慢的,结果是易出错的(不信你试试)。

如何证明经过维数相容原则调整后的结果是正确的呢?直觉!简单就是美...

快速反向传播

神经网络的反向传播求得 “各层” 参数神经网络反向传播的数学原理神经网络反向传播的数学原理的导数,使用梯度下降(一阶 GD、SGD,二阶 LBFGS、共轭梯度等)优化目标函数。

接下来,展示不使用下标的记法(神经网络反向传播的数学原理神经网络反向传播的数学原理or神经网络反向传播的数学原理)直接对神经网络反向传播的数学原理神经网络反向传播的数学原理求导,反向传播是链式法则维数相容原则的完美体现,对每一层参数的求导利用上一层的中间结果完成。

这里的标号,参考 UFLDL 教程 - Ufldl

前向传播:

神经网络反向传播的数学原理 (公式 1)

神经网络反向传播的数学原理         (公式 2)

神经网络反向传播的数学原理为第神经网络反向传播的数学原理层的中间结果,神经网络反向传播的数学原理为第神经网络反向传播的数学原理层的激活值,其中第神经网络反向传播的数学原理层包含元素:输入神经网络反向传播的数学原理,参数神经网络反向传播的数学原理神经网络反向传播的数学原理,激活函数神经网络反向传播的数学原理,中间结果神经网络反向传播的数学原理,输出神经网络反向传播的数学原理

设神经网络的损失函数为神经网络反向传播的数学原理(这里不给出具体公式,可以是交叉熵、MSE 等),根据链式法则有:

神经网络反向传播的数学原理神经网络反向传播的数学原理

这里记 神经网络反向传播的数学原理,其中神经网络反向传播的数学原理 、 神经网络反向传播的数学原理可由 公式 1 得出,神经网络反向传播的数学原理加转置符号神经网络反向传播的数学原理是根据维数相容原则作出的调整。

如何求 神经网络反向传播的数学原理? 可使用如下递推(需根据维数相容原则作出调整):

神经网络反向传播的数学原理

其中神经网络反向传播的数学原理、 神经网络反向传播的数学原理

那么我们可以从最顶层逐层往下,便可以递推求得每一层的神经网络反向传播的数学原理

注意:神经网络反向传播的数学原理是逐维求导,在公式中是点乘的形式。

反向传播整个流程如下:

1) 进行前向传播计算,利用前向传播公式,得到隐藏层和输出层 的激活值。

2) 对输出层 (第神经网络反向传播的数学原理层),计算残差:

神经网络反向传播的数学原理(不同损失函数,结果不同,这里不给出具体形式)

3) 对于神经网络反向传播的数学原理的隐藏层,计算:

神经网络反向传播的数学原理

4) 计算各层参数神经网络反向传播的数学原理神经网络反向传播的数学原理偏导数:

神经网络反向传播的数学原理
神经网络反向传播的数学原理

编程实现

大部分开源 library(如:caffe,Kaldi/src/{nnet1,nnet2})的实现通常把神经网络反向传播的数学原理神经网络反向传播的数学原理作为一个 layer,激活函数神经网络反向传播的数学原理作为一个 layer(如:sigmoid、relu、softplus、softmax)。

反向传播时分清楚该层的输入、输出即能正确编程实现, 如:

神经网络反向传播的数学原理                             (公式 1)

神经网络反向传播的数学原理                                     (公式 2)

(1) 式 AffineTransform/FullConnected 层,以下是伪代码:

神经网络反向传播的数学原理

注: out_diff = 神经网络反向传播的数学原理 是上一层(Softmax 或 Sigmoid/ReLU 的 in_diff)已经求得:

神经网络反向传播的数学原理 (公式 1-1)

神经网络反向传播的数学原理              (公式 1-2)

神经网络反向传播的数学原理                    (公式 1-3)

(2) 式激活函数层(以 Sigmoid 为例)

注:out_diff = 神经网络反向传播的数学原理是上一层 AffineTransform 的 in_diff,已经求得,

神经网络反向传播的数学原理

在实际编程实现时,in、out 可能是矩阵 (通常以一行存储一个输入向量,矩阵的行数就是 batch_size),那么上面的 C++ 代码就要做出变化(改变前后顺序、转置,把函数参数的 Vector 换成 Matrix,此时 Matrix out_diff 每一行就要存储对应一个 Vector 的 diff,在 update 的时候要做这个 batch 的加和,这个加和可以通过矩阵相乘 out_diff*input(适当的转置)得到。

如果熟悉 SVD 分解的过程,通过 SVD 逆过程就可以轻松理解这种通过乘积来做加和的技巧。

丢掉那些下标记法吧!

卷积层求导

卷积怎么求导呢?实际上卷积可以通过矩阵乘法来实现(是否旋转无所谓的,对称处理,caffe 里面是不是有 image2col),当然也可以使用 FFT 在频率域做加法。

那么既然通过矩阵乘法,维数相容原则仍然可以运用,CNN 求导比 DNN 复杂一些,要做些累加的操作。具体怎么做还要看编程时选择怎样的策略、数据结构。

快速矩阵、向量求导之维数相容大法已成。



本文作者:AI研习社
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
22天前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
84 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
2月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
294 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
3月前
|
网络协议 安全 网络安全
应用程序中的网络协议:原理、应用与挑战
网络协议是应用程序实现流畅运行和安全通信的基石。了解不同协议的特点和应用场景,以及它们面临的挑战和应对策略,对于开发者和用户都具有重要意义。在未来,随着技术的不断发展,网络协议也将不断优化和创新,为数字世界的发展提供更强大的支持。
105 1
|
4月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
971 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
5月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
5月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
334 3
图卷积网络入门:数学基础与架构设计
|
5月前
|
域名解析 网络协议 关系型数据库
【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)
IP协议详解,IP协议管理地址(NAT机制),IP地址分类、组成、特殊IP地址,MAC地址,数据帧格式,DNS域名解析系统
|
5月前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
5月前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
5月前
|
XML JSON 网络协议
【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况
拥塞控制,延时应答,捎带应答,面向字节流(粘包问题),异常情况(心跳包)