反向传播算法:定义,概念,可视化(二)

简介: 反向传播算法:定义,概念,可视化

测量u对以下每一项的微小变化的敏感度:

  • 权重,w
  • 之前的激活值,a '
  • 偏质,b

把这些放在一起,

640.png

简单模型的复杂性

如果在前面的例子中,我们有两个节点和它们之间的一个链接。在这个例子中,我们有3个节点和2个链接。

640.png

因为链式法则的链式长度是没有限制的。我们可以对任意数量的层继续这样做。对于这一层,注意计算图是这样的,

640.png

请注意,需要用附加的刻度对每个节点进行注释。这些刻度不是衍生物,它们只是表示u和u '是不同的、唯一的值或对象

复杂模型的复杂性

到目前为止的例子都是线性的,链表式的神经网络。把它扩展到现实的网络是这样的,

640.png

我们需要给网络添加一些额外的符号。

让我们通过 a¹₁计算一下计算图 a²₁。

640.png

640.png

实际上你会发现两个计算图有一个很大的共同点,特别是到a¹₁。这意味着,如果一个计算已经被计算过,那么它可以在下一次和下下次被重用,依此类推。虽然这增加了内存的占用,但它显著减少了计算时间,而且对于大型神经网络来说,这是必要的。

如果我们用链式法则,得到的公式几乎是一样的,只是增加了索引。

复杂模型的进一步复杂化

你会发现一个a²₂ 会有几个路径输出层节点,。

640.png

所以我们需要对前一层求和。我们从所有前面的节点和它们的梯度的总和中得到的这个值有更新它的指令,以便我们最小化损失。

最小化成本函数

如果你还记得定义6和7,特别是定义7,你会记得成本函数在概念上是预测产出和实际产出之差的平均值或加权平均值。

640.png

如果我们使用线性回归或逻辑回归的梯度下降算法来最小化代价函数。

对于神经网络,我们使用反向传播算法。我想现在已经很清楚为什么我们不能对神经网络使用单一方程了。神经网络并不是我们可以很好地求导数的连续函数。相反,它们近似一个函数的离散节点。因此需要一个递归算法来找到它的导数或梯度,这需要考虑到所有的节点。

完整的成本函数是这样的:

640.png

从概念上讲

640.png

符号对符号导数

到目前为止,您已经了解了如何得到神经网络中节点梯度的代数表达式。通过链式法则在张量上的应用和计算图的概念。

代数表达式或计算图不处理具体问题,而只是给我们的理论背景,以验证我们正在正确地计算它们。它们帮助指导我们的编码。

在下一个概念中,我们将讨论符号对数值导数的影响。

符号-数值导数

这里我们开始脱离理论,进入实践领域。

算法

基本设置+计算节点的梯度

首先我们要做一些设置,包括神经网络的顺序以及与网络相关的节点的计算图。我们把它们排列好。

每个节点u^{(n)} 都与一个操作f^{(i)}相关联,使得:

640.png

在𝔸^ {(i)}是所有节点的集合,u^ {(n)}的父节点。

首先我们需要计算所有的输入节点,为此我们需要将所有的训练数据以x向量的形式输入:

fori=1, ...., n_iu_i=get_u(x_i)

注意,n_i为输入节点数,其中输入节点为:

640.png

如果这些是输入节点,则节点:

640.png

是输入节点之后最后一个节点之前的节点u^{(n)}。

fori=n_i+1, ..., nA_i= { u_j=get_j(Pa(u_i)) }
u_i=fi(A_i)

你会注意到,这和我们链式法则计算图的概念上的方向是相反的。这是因为这部分详细说明了正向传播。

我们称这个图为:

640.png

利用这个图,我们可以构造另一个图:

640.png

G中的每个节点计算正向图节点u^i,而B中的每个节点使用链式法则计算梯度。

640.png

如果你考虑神经网络中的所有节点和连接它们的边,你就能想到反向传播所需的计算量随着边的数量线性增加。因为每条边都代表了一条链规则的计算,它将一些节点连接到它的一个父节点。

附加约束+简单的反向传播

如前所述,该算法的计算复杂度与网络的边数呈线性关系。但这是假设求每条边的偏导数需要一个常数时间。

在这里,我们的目标是建立一个具体反向传播算法。

Runforwardpropagation

这将获得处于随机的或非有用状态的网络的激活值。

Initializegrad_table

在这个数据结构中,我们将存储所有我们计算的梯度。

Togetanindividualentry, weusegrad_table(u_i)

这将存储计算值:

640.png

grad_table[u_n] =1

这将最后一个节点设置为1。

forj=n-1to1grad_table[u_j] =\\sumgrad_table[u_i] du_i/du_j

理论上是这样的:

640.png

returngrad_table

反向传播算法只访问每个节点一次来计算偏置,这避免了不必要的重新计算子表达式的步骤。请记住,这是以更多内存占用为代价的。

目录
相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
|
2月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
4月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
42 0
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习还不如浅层网络?RL教父Sutton持续反向传播算法登Nature
【9月更文挑战第24天】近年来,深度学习在人工智能领域取得巨大成功,但在连续学习任务中面临“损失可塑性”问题,尤其在深度强化学习中更为突出。加拿大阿尔伯塔大学的研究人员提出了一种名为“持续反向传播”的算法,通过选择性地重新初始化网络中的低效用单元,保持模型的可塑性。该算法通过评估每个连接和权重的贡献效用来决定是否重新初始化隐藏单元,并引入成熟度阈值保护新单元。实验表明,该算法能显著提升连续学习任务的表现,尤其在深度强化学习领域效果明显。然而,算法也存在计算复杂性和成熟度阈值设置等问题。
24 2
WK
|
20天前
|
机器学习/深度学习 监控 算法
反向传播算法是如何工作的
反向传播算法通过最小化损失函数优化神经网络。首先,输入数据经由前向传播得到预测结果,并计算损失;接着,反向传播计算各参数的梯度,并利用梯度下降法更新权重和偏置。这一过程反复进行,直至满足停止条件。算法具备高效性、灵活性及可扩展性,能处理复杂模式识别与预测任务,适用于不同类型与规模的神经网络,显著提升了模型的预测准确性和泛化能力。
WK
16 3
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
基于python 机器学习算法的二手房房价可视化和预测系统
|
2月前
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
54 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于Python flask的豆瓣电影数据分析可视化系统,功能多,LSTM算法+注意力机制实现情感分析,准确率高达85%
本文介绍了一个基于Python Flask框架的豆瓣电影数据分析可视化系统,该系统集成了LSTM算法和注意力机制进行情感分析,准确率高达85%,提供了多样化的数据分析和情感识别功能,旨在帮助用户深入理解电影市场和观众喜好。
|
2月前
|
监控 数据可视化 算法
基于朴素贝叶斯算法的微博舆情监控系统,flask后端,可视化丰富
本文介绍了一个基于朴素贝叶斯算法和Python技术栈的微博舆情监控系统,该系统使用Flask作为后端框架,通过数据爬取、清洗、情感分析和可视化等手段,为用户提供丰富的舆情分析和监测功能。
下一篇
无影云桌面