备案 控制台
开发者社区 雷锋网 文章 正文

反向传播算法最全解读,机器学习进阶必看!

简介:

目前网络上关于反向传播算法的教程已经很多,那我们还有必要再写一份教程吗?答案是‘需要’。

为什么这么说呢?我们教员Sanjeev最近要给本科生上一门人工智能的课,尽管网上有很多反向传播算法的教程,但他却找不到一份令他满意的教程,因此我们决定自己写一份关于反向传播算法的教程,介绍一下反向传播算法的历史背景、原理、以及一些最新研究成果。

PS:本文默认读者具备一定的基础知识(如了解梯度下降、神经网络等概念)。

一、什么是反向传播算法?

反向传播算法是训练神经网络的经典算法。在20世纪70年代到80年代被多次重新定义。它的一些算法思想来自于60年代的控制理论。

在输入数据固定的情况下、反向传播算法利用神经网络的输出敏感度来快速计算出神经网络中的各种超参数。尤其重要的是,它计算输出f对所有的参数w的偏微分,即如下所示:∂f/∂wi,f代表神经元的输出,wi是函数f的第i个参数。参数wi代表网络的中边的权重或者神经元的阈值,神经元的激活函数具体细节并不重要,它可以是非线性函数Sigmoid或RELU。这样就可以得到f相对于网络参数的梯度∇f ,有了这个梯度,我们就可以使用梯度下降法对网络进行训练,即每次沿着梯度的负方向(−∇f)移动一小步,不断重复,直到网络输出误差最小。

在神经网络训练过程中,我们需要注意的是,反向传播算法不仅需要准确计算梯度。还需要使用一些小技巧对我们的网络进行训练。理解反向传播算法可以帮助我们理解那些在神经网络训练过程中使用的小技巧。

反向传播算法之所以重要,是因为它的效率高。假设对一个节点求偏导需要的时间为单位时间,运算时间呈线性关系,那么网络的时间复杂度如下式所示:O(Network Size)=O(V+E),V为节点数、E为连接边数。这里我们唯一需要用的计算方法就是链式法则,但应用链式法则会增加我们二次计算的时间,由于有成千上万的参数需要二次计算,所以效率就不会很高。为了提高反向传播算法的效率,我们通过高度并行的向量,利用GPU进行计算。

注:业内人士可能已经注意到在标准的神经网络训练中,我们实际上关心的是训练损失函数的梯度,这是一个与网络输出有关的简单函数,但是上文所讲的更具有普遍意义,因为神经网络是可以增加新的输出节点的,此时我们要求的就是新的网络输出与网络超参数的偏微分。

二、问题设置

反向传播算法适用于有向非循环网络,为了不失一般性,非循环神经网络可以看做是一个多层神经网络,第t+1层神经元的输入来自于第t层及其下层。我们使用f表示网络输出,在本文中我们认为神经网络是一个上下结构,底部为输入,顶部为输出。

规则1:为了先计算出参数梯度,先求出 ∂f/∂u ,即表示输出f对节点u的偏微分。

我们使用规则1来简化节点偏微分计算。下面我将具体说一下∂f/∂u的含义。我们做如下假设,先删除节点u的所有输入节点。然后保持网络中的参数不变。现在我们改变u的值,此时与u相连的高层神经元也会受到影响,在这些高层节点中,输出f也会受到影响。那么此时∂f/∂u就表示当节点u变化时,节点f的变化率。

规则1就是链式法则的直接应用,如下图所示,u是节点 z1,…,zm的加权求和,即u=w1*z1+⋯+wn*zn,然后通过链式法则对w1求偏导数,具体如下:

反向传播算法最全解读,机器学习进阶必看!

由上式所示,只有先计算∂f/∂u,然后才能计算∂f/∂w1。

反向传播算法最全解读,机器学习进阶必看!

多元链式法则

为了计算节点的偏微分,我们先回忆一下多元链式法则,多元链式法则常用来描述偏微分之间的关系。 即假设f是关于变量u1,…,un的函数,而u1,…,un又都是关于变量z的函数,那么f关于z的偏导数如下:

反向传播算法最全解读,机器学习进阶必看!

这是链式法则2的一般式,是链式法则的1的子式。这个链式法则很适合我们的反向传播算法。下图就是一个符合多元链式法则的神经网络示意图。

反向传播算法最全解读,机器学习进阶必看!


如上图所示,先计算f相对于u1,…,un的偏导数,然后将这些偏导数按权重线性相加,得到f对z的偏导数。这个权重就是u1,…,un对z的偏导,即∂uj/∂z。此时问题来了,我么怎么衡量计算时间呢?为了与教课书中保持一致,我们做如下假设:u节点位于t+1层的,z节点位于t层或t层以下的子节点,此时我们记∂u/∂z的运算时间为单位时间。

朴素前馈算法(低效算法)

我们首先要指出链式法则是包含二次计算的时间。许多作者都不屑于讲这种算法,直接跳过的。这就好比我们在上算法排序课时,老师都是直接讲快速排序的,像那些低效排序算法都是直接跳过不讲的。

朴素算法就是计算节点对ui与uj之间偏导数,在这里节点ui的层级要比uj高。在V*V个节点对的偏导值中包含∂f/∂ui的值,因为f本身就是一个节点,只不过这个节点比较特殊,它是一个输出节点。

我们以前馈的形式进行计算。我们计算了位于t层及t层以下的所有节点对之间的偏导数,那么位于t+1层的ul对uj的偏导数就等于将所有ui与uj的偏导数进行线性加权相加。固定节点j,其时间复杂度与边的数量成正比,而j是有V个值,此时时间复杂度为O(VE)。

三、反向传播算法(线性时间)

反向传播算法如其名所示,就是反向计算偏微分,信息逆向传播,即从神经网络的高层向底层反向传播。

信息协议:节点u通过高层节点获取信息,节点u获取的信息之和记做S。u的低级节点z获取的信息为S⋅∂u/∂z

很明显,每个节点的计算量与其连接的神经元个数成正比,整个网络的计算量等于所有节点运算时间之和,所有节点被计算两次,故其时间复杂度为O(Network Size)。

我们做如下证明:S等于∂f/∂z。

证明如下:当z为输出层时,此时∂f/∂z=∂f/∂f=1

假如对于t+1层及其高层假设成立,节点u位于t层,它的输出边与t+1层的u1,u2,…,um节点相连,此时节点从某个节点j收到的信息为(∂f/∂uj)×(∂uj/∂z),根据链式法则,节点z收到的总信息为S=

四、自动微分

在上文中,关于神经网络、节点计算,我们并没有细讲。下面我们将具体讲一下,我们将节点与节点之间的计算看做是一个无环图模型,许多自动计算微分的工具包(如:autograd,tensorflow)均采用这一模型。这些工具就是通过这个无向图模型来计算输出与网络参数的偏导数的。

我们首先注意到法则1就是对这个的一般性描述,这个之所以不失一般性是因为我们可以将边的权值也看做节点(即叶节点)。这个很容易转换,如下图所示,左侧是原始网络,即一个单节点和其输入节点、输入节点的权重。右侧是将边的权重转换为叶节点。网络中的其它节点也做类似转换。

反向传播算法最全解读,机器学习进阶必看!

只要局部偏导数计算的效率足够高,那么我们就可以利用上文所说的信息协议来计算各个节点的偏微分。即对节点u来讲,我们应该先找出它的的输入节点有哪些,即z1,…,zn。然后计算在u的偏微分的基础上计算zj的偏微分,由于输出f对u的偏微分记做S,所以计算输出f对zj的偏微分就是S⋅∂u∂zj

这个算法可以按照如下规则分块计算,首先明确节点u与输入节点z1,…,zn 的关系,然后就是怎么计算偏导数的倍数(权重)S。即S⋅∂u/∂zj。

扩展到向量空间:为了提高偏微分权重的计算效率,我们可以将节点的输出也变为一个向量(矩阵或张量)。此时我们将∂u/∂zj⋅S改写为∂u/∂zj[S], 这个与我们的反向传播算法思想是一致的,在反向传播算法中,y是一个p维向量,x是一个q维向量,y是关于x的函数,我们用∂y/∂x来表示由 ∂yj/∂xi所组成的q*p矩阵。聪明的读者很快就会发现,这就是我们数学中的雅克比矩阵。此外我们还可以证明S与u的维度相同、∂u∂zj[S] 与zj的维度也相同。

如下图所示,W是一个d2*d3的矩阵,Z是一个d1*d2的矩阵,U=WZ故U是一个d1*d3维的矩阵,此时我们计算∂U/∂Z,最终得到一个d2d3×d1d3维的矩阵。但我们在反向传播算法中,这个会算的很快,因为∂U/∂Z[S]=W⊤S,在计算机中我们可以使用GPU来进行类似向量计算。

反向传播算法最全解读,机器学习进阶必看!

五、重要知识扩展

1、权重共享

在许多神经网络框架中,设计者想要是一些神经元的参数能够共享,这些参数包括边的权重或者节点的阈值参数。例如,在卷积神经网络中,同一个卷集核使用的参数都是一样的。简而言之,就是a、b是两个不同的参数,但我们强制要求a与b的值相同,即参数共享。这就好比我们给神经网络新增一个节点u,并且节点u与a和b相连,并且a=u,b=u.,此时根据链式法则,∂f/∂u=(∂f/∂a)⋅(∂a/∂u)+(∂f/∂b)⋅(∂b/∂u)=∂f/∂a+∂f/∂b. 因此,对一个共享参数而言,其梯度就是输出与参数节点之间的中间节点的偏导数之和。

2、反向传播算法在循环神经网络的应用

上面我们讲的是非循环神经网络,许多前沿应用(机器翻译、语言理解)往往使用有向循环神经网络。在这种结构的神经网络中会存在记忆单元或注意力机制,在这些单元或机制中往往存在复杂的求导计算。一开始我们使用梯度下降法训练网络,即在时间序列上对神经网络使用反向传播算法,即对这个有向环状结构进行无限循环,每一次循环的网络结构、网络参数都是一样的,但是网络的输入与输出是不一样的。在实际应用中我们会遇到梯度爆炸或梯度消失等问题,这些都会对结果收敛产生影响。为了解决这些问题,我们使用梯度剪切或者长短记忆模型(LSTM)等技术解决上述问题。

环状神经网络可以高效计算梯度的事实促进了有记忆网络甚至数据结构的发展。使用梯度下降法,我们可可以对环状结构神经网络进行优化,寻找最佳参数,使得这个网络可以解决特定计算问题。梯度下降法的极限目前仍在探索中。

3、海森向量乘积计算耗时

在近似线性时间中,我们不仅可以使用梯度下降法,或许我们也可以使用2阶导数对目标函数进行优化。在优化过程中,最关键的一步是计算海森矩阵与一个向量的积,下面我将向大家介绍如何在规模是O(Network size)的神经网络应用上述思想,这个例子与前面所讲稍有不同,我们的初始神经网络应该是一个用反向传播算法进行简单优化过的神经网络。

法则:假设在无环神经网络中,有V个节点,E条边,网络输出为f,叶节点为z1,…,zm,那么必存在一个大小为O(V+E)的网络,这个网络的的输入节点为z1,…,zm,输出节点为∂f/∂z1,…,∂f/∂zm。

上面的定理可以通过在无环神经网络中实现消息直接传递来证明,紧接着我们将解释一下如何计算∇2f(z)⋅v。设g(z)=⟨∇f(z),v⟩ ,有定理可知, g(z)可以由大小是O(V+E)神经网络计算得到,同理我们再次应用法则,在这个大小是O(V+E)的网络计算g(z)的梯度,此时∇g(z)=∇2f(z)⋅v,此时我们就算出了海森矩阵与向量积的积,此时耗费的时间复杂度就是网络规模的大小。

以上便是BP学习过程中需要了解的一些内容,雷锋网希望能让你在学习过程中得到一个比较清晰的思路。当然,也欢迎你关注雷锋网(公众号:雷锋网)旗下公众号“AI科技评论”与我们交流哦。

本文作者:小东

本文转自雷锋网禁止二次转载, 原文链接

云栖大讲堂
目录
相关文章
技术混子
|
2天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
技术混子
20 7
请看我回答~
|
2天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
请看我回答~
9 0
1941623231718325
|
5天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
1941623231718325
22 4
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
桃李春风一杯酒
22 0
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
桃李春风一杯酒
15 1
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
桃李春风一杯酒
20 2
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
桃李春风一杯酒
27 3
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现
【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。
桃李春风一杯酒
12 1
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
桃李春风一杯酒
13 3
桃李春风一杯酒
|
7天前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
桃李春风一杯酒
21 1

雷锋网

热门文章

最新文章

  • 1
    【MATLAB】GA_ELM神经网络时序预测算法
  • 2
    使用Python实现DBSCAN聚类算法
  • 3
    R语言聚类算法的应用实例
  • 4
    普林斯顿算法讲义(二)(4)
  • 5
    52个AIGC视频生成算法模型介绍(上)
  • 6
    【算法与数据结构】队列的实现详解
  • 7
    深度解析JVM世界:垃圾判断和垃圾回收算法
  • 8
    普林斯顿算法讲义(一)(4)
  • 9
    R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
  • 10
    深度学习中必备的算法:神经网络、卷积神经网络、循环神经网络
  • 1
    深度学习500问——Chapter02:机器学习基础(5)
    38
  • 2
    深度学习500问——Chapter02:机器学习基础(2)
    49
  • 3
    深度学习500问——Chapter02:机器学习基础(1)
    43
  • 4
    【机器学习】样本、特征、标签:构建智能模型的三大基石
    270
  • 5
    构建高效机器学习模型的策略与实践
    12
  • 6
    利用机器学习算法改善电商推荐系统的效率
    87
  • 7
    构建高效机器学习模型的策略与实践
    12
  • 8
    构建高效机器学习模型:从数据预处理到模型调优
    10
  • 9
    机器学习的魔法(三)解析无监督学习的黑科技,揭秘新闻话题背后的神奇算法
    22
  • 10
    机器学习的魔法(二)超越预测的界限-揭秘机器学习的黑科技-探索监督学习中的回归和分类问题
    136
  • 相关课程

    更多
  • 场景实践 - 机器学习PAI实现精细化营销
  • 场景实践 - 基于阿里云PAI机器学习平台使用时间序列分解模型预测商品销量
  • 场景实践 - 基于机器学习进行收入预测分析
  • 机器学习概览及常见算法
  • 机器学习入门-概念原理及常用算法
  • 神经网络概览及算法详解
  • 相关电子书

    更多
  • 数据+算法定义新世界
  • 袋鼠云基于实时计算的反黄牛算法
  • Alink:基于Apache Flink的算法平台
  • 相关实验场景

    更多
  • 如何快速训练大模型
  • 使用函数计算部署通义千问大模型实现AI对话
  • 基于Hologres+PAI+计算巢,5分钟搭建企业级AI问答知识库
  • TLS1.3的后量子算法集成
  • RSA非对称加密算法
  • 零基础入门Serverless:基于函数计算快速搭建基于人工智能的目标检测系统
  • 下一篇
    部署LAMP环境(Alibaba Cloud Linux 3)

    深圳SEO优化公司南阳网站设计公司龙岩网络广告推广报价沙井企业网站制作多少钱梅州网站推广方案公司长治百度标王报价张家界关键词按天收费报价阿里百度网站优化排名哪家好普洱企业网站制作哪家好防城港网站制作设计哪家好喀什建站推荐临夏设计网站公司黔西南网络营销开封设计公司网站多少钱伊犁关键词排名包年推广价格防城港网站设计承德企业网站建设公司龙岗外贸网站建设价格松岗SEO按天计费诸城如何制作网站多少钱玉林SEO按天扣费价格辽源英文网站建设公司乌海设计网站哪家好诸城SEO按天扣费价格晋中至尊标王多少钱荷坳网站设计哪家好唐山企业网站改版哪家好福田网站推广价格焦作至尊标王价格鹤壁网站推广方案推荐赤峰至尊标王报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化