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

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

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

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

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


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

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

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

接下来介绍

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

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

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

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

快速矩阵、向量求导

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

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

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

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

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

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研习社
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
6天前
|
并行计算 安全 网络协议
探索未来网络:量子互联网的原理与应用
本文深入探讨了量子互联网的基本概念、技术原理及其潜在应用。通过对量子纠缠、量子叠加和量子隐形传态等核心概念的解释,文章展示了量子互联网如何利用量子力学特性来实现超高速、超高安全性的通信。此外,还讨论了量子互联网在金融、医疗、国防等领域的应用前景,以及当前面临的技术挑战和未来的发展方向。
|
15天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络的核心原理
本文将深入浅出地介绍深度学习的基本概念,包括神经网络的结构、工作原理以及训练过程。我们将从最初的感知机模型出发,逐步深入到现代复杂的深度网络架构,并探讨如何通过反向传播算法优化网络权重。文章旨在为初学者提供一个清晰的深度学习入门指南,同时为有经验的研究者回顾和巩固基础知识。
43 11
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络背后的原理与实践
【9月更文挑战第29天】本文将带你深入理解深度学习的核心概念,从基础理论到实际应用,逐步揭示其神秘面纱。我们将探讨神经网络的工作原理,并通过实际代码示例,展示如何构建和训练一个简单的深度学习模型。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。
15 2
WK
|
22天前
|
机器学习/深度学习 算法
神经网络的反向传播是什么
反向传播(Backpropagation)是用于训练神经网络的一种关键算法,其目标是通过计算损失函数关于网络参数的梯度来优化这些参数,从而提升网络性能。该算法包括前向传播和反向传播两个阶段:前者计算预测结果与损失值,后者利用链式法则逐层计算梯度以更新权重和偏置。作为深度学习中最常用的优化方法之一,反向传播广泛应用于多种神经网络模型中,通过不断迭代改进模型的预测准确性和泛化能力。
WK
18 5
|
23天前
|
机器学习/深度学习
小土堆-pytorch-神经网络-损失函数与反向传播_笔记
在使用损失函数时,关键在于匹配输入和输出形状。例如,在L1Loss中,输入形状中的N代表批量大小。以下是具体示例:对于相同形状的输入和目标张量,L1Loss默认计算差值并求平均;此外,均方误差(MSE)也是常用损失函数。实战中,损失函数用于计算模型输出与真实标签间的差距,并通过反向传播更新模型参数。
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
深度剖析深度神经网络(DNN):原理、实现与应用
本文详细介绍了深度神经网络(DNN)的基本原理、核心算法及其具体操作步骤。DNN作为一种重要的人工智能工具,通过多层次的特征学习和权重调节,实现了复杂任务的高效解决。文章通过理论讲解与代码演示相结合的方式,帮助读者理解DNN的工作机制及实际应用。
|
22天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
|
23天前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
113 2
WK
|
27天前
|
机器学习/深度学习
在神经网络的反向传播中,Tanh和Sigmoid哪个更快
在神经网络反向传播中,Tanh与Sigmoid函数的速度差异并无定论,受网络结构、数据特性及参数设置影响。Sigmoid在远离零时易导致梯度消失,而Tanh因输出范围为(-1, 1)且以0为中心,能更好地缓解此问题,理论上训练速度更快。两者计算复杂度相近,现代硬件优化使这一差距不明显。实际应用中,Sigmoid常用于二分类输出层,Tanh则适用于隐藏层以加速收敛并减少权重更新偏向。随着深度学习发展,ReLU等新激活函数因高效性和轻度梯度消失问题成为主流选择。综合来看,Tanh可能比Sigmoid稍快,但需根据具体任务和网络结构选择。
WK
29 0
下一篇
无影云桌面