导航:首页 > 网络安全 > 神经网络如何更新权重的算法

神经网络如何更新权重的算法

发布时间:2022-08-21 07:08:24

Ⅰ 10的三次方怎么稀释梯度

这个复杂,需要了解方法。可以用到两三种方法。
十倍梯度稀释法(倍比稀释和梯度稀释):
梯度下降是寻找函数极小值的优化方法,在深度学习模型中常用于在反向传播过程中更新神经网络的权重。

梯度下降优化算法功能是什么

梯度下降,优化算法发挥了以下三个主要方面的作用:
1、学习率成分、或

2、修正坡度成分L/W
3或2者
让我们看看下面的公式1。
方程1 :随机梯度下降中的各种量
学习率调度器vs梯度下降优化的主要区别在于,梯度下降优化是将学习率乘以梯度的函数即因子来调整学习率成分,而学习率调度器是将学习率乘以一定的常数或关于时间步的函数的因子来更新学习率。
第一种方法主要是通过将学习率(learning rate )乘以0到1之间的因子来降低学习率)例如RMSprop。 第二种方法通常使用坡度(Gradient )的滑动平均(也称为动量)而不是纯坡度来确定下降方向。 第三种方法是将Adam和AMSGrad这样的两者结合起来。

Fig.2 )各类梯度下降优化算法、其发表年和使用的核心思路。
Fig.3自上而下,展示了这些优化算法是如何从最简单的简单梯度下降(SGD )进化到Adam的各种变种的。 SGD最初分别向两个方向发展,一个是AdaGrad,主要调整学习率(learning rate )。 另一个是Momentum,主要调整梯度的构成要素。 随着进化的发展,Momentum和RMSprop一体化,“QS dch”(Adam )诞生了。 你可能会对我这样的组织方式提出异议,但我一直以来都是这样理解的。

Fig.3 )各种最优化算法的进化图(gist ) ) ) ) ) )。

符号表示
t -迭代步数

w -需要更新的权重和参数
-学习率
L/w - L (损失函数)相对于w的梯度
因为我统一了论文中出现的希腊文字和符号表示,所以可以用统一的“进化”的观点来看这些优化算法

1. 随机梯度下降(Stochastic Gradient Descend)
最原始的随机梯度下降算法主要是将当前梯度l/w乘以一个系数学习率来更新模型的权重w。
2. 动量算法(Momentum)

动量算法使用具有动量的坡度(坡度的指数滑动平均、Polyak、1964 )而不是当前坡度来更新w。 在后续的文章中,我们会发现采用指数滑动平均作为动量更新方法几乎已经成为行业标准。
另外,v初始化值为0。 通常设定为0.9。

值得注意的是,许多文章在引用Momemtum算法时都使用年轻花瓣Qian,1999的文章。 但是,该算法的原始来源是Sutskever et al。 另一方面,经典动量算法是1964年由Polyak提出的,因此上述也引用了Polyak的文章。 (谢谢James指出这一点)
3.Nesterov加速梯度下降法(NAG)

是在Polyak提出动量法后(双关: Polyak势)
头正盛),一个使用Nesterov加速梯度下降法(Sutskever et al., 2013)的类似更新方法也被实现了。此更新方法使用V,即我称之为投影梯度的指数移动平均值。

其中

且V 初始化为0。
第二个等式中的最后一项就是一个投影梯度。这个值可以通过使用先前的速度“前进一步”获得(等式4)。这意味着对于这个时间步骤t,我们必须在最终执行反向传播之前执行另一个前向传播。这是步骤:
1.使用先前的速度将当前权重w更新为投影权重w*
(等式4)
2. 使用投影权重计算前向传播
3.获得投影梯度∂L/∂w*
4.计算相应的V和w
常见的默认值:
β = 0.9
请注意,原始的Nesterov 加速梯度下降法论文( Nesterov, 1983 )并不是关于随机梯度下降,也没有明确使用梯度下降方程。因此,更合适的参考是上面提到的Sutskever等人的出版物。在2013年,它描述了NAG在随机梯度下降中的应用。(再一次,我要感谢James对HackerNews的评论中指出这一点。)

Ⅱ 关于深度学习的问题都有哪些

很多人对于深度学习有很多的问题,其实这说明深度学习的关注度还是很高的。深度学习是为人工智能服务的,因此深度学习这种算法越来越受大家的关注。在这篇文章中我们就给大家解答一下关于深度学习的问题,希望这篇文章能够给大家带来帮助。
1.为什么构建深度学习模型需要使用GPU?
在深度学习中,深度学习模型有两个主要的操作,也就是前向传递和后向传递。前向传递将输入数据通过神经网络后生成输出;后向传递根据前向传递得到的误差来更新神经网络的权重。在矩阵中,我们知道计算矩阵就是第一个数组的行与第二个数组的列元素分别相乘。因此,在神经网络中,我们可以将第一个矩阵视为神经网络的输入,第二个矩阵可以视为网络的权重。这似乎是一个简单的任务。但是数据有很多,如果我们用传统的方法,训练这种系统需要几年的时间。如果使用神经网络的计算密集部分由多个矩阵乘法组成。那么如何才能更快?我们可以简单地通过同时执行所有操作,而不是一个接一个地执行。这就是为什么我们要使用GPU而不是CPU来训练神经网络的原因。
2.何时应用神经网络?
首先,深度学习模型需要清晰且丰富的数据来训练。对于图像处理等复杂问题使用深度学习需要很谨慎。深度学习算法属于表示学习算法。这些算法将复杂问题分解为更简单的形式以便理解。对于传统的算法来说,这将更困难。硬件要求对于运行深度神经网络模型也至关重要。神经网络很久以前就被发现了,但近年来得以成功实现,硬件资源更加强大也是其主要原因。
3.是否需要大量数据来训练深度学习模型?
其实我们确实需要大量的数据来训练深度学习模型,但也可以通过迁移学习来克服数据量不大这一障碍。即使数据量不大,针对特定任务进行训练的深度学习模型也可以重用于同一个域中的不同问题,这种技术被称为迁移学习。
相信大家看了这篇文章以后对深度学习有所理解了吧?大家在学习深度学习的时候一定要意识到一件事情,那就是深度学习是机器学习的分支,想学好人工智能一定不能忽视了对深度学习的掌握和熟知。

Ⅲ 神经网络算法是什么

Introction
--------------------------------------------------------------------------------

神经网络是新技术领域中的一个时尚词汇。很多人听过这个词,但很少人真正明白它是什么。本文的目的是介绍所有关于神经网络的基本包括它的功能、一般结构、相关术语、类型及其应用。

“神经网络”这个词实际是来自于生物学,而我们所指的神经网络正确的名称应该是“人工神经网络(ANNs)”。在本文,我会同时使用这两个互换的术语。

一个真正的神经网络是由数个至数十亿个被称为神经元的细胞(组成我们大脑的微小细胞)所组成,它们以不同方式连接而型成网络。人工神经网络就是尝试模拟这种生物学上的体系结构及其操作。在这里有一个难题:我们对生物学上的神经网络知道的不多!因此,不同类型之间的神经网络体系结构有很大的不同,我们所知道的只是神经元基本的结构。

The neuron
--------------------------------------------------------------------------------

虽然已经确认在我们的大脑中有大约50至500种不同的神经元,但它们大部份都是基于基本神经元的特别细胞。基本神经元包含有synapses、soma、axon及dendrites。Synapses负责神经元之间的连接,它们不是直接物理上连接的,而是它们之间有一个很小的空隙允许电子讯号从一个神经元跳到另一个神经元。然后这些电子讯号会交给soma处理及以其内部电子讯号将处理结果传递给axon。而axon会将这些讯号分发给dendrites。最后,dendrites带着这些讯号再交给其它的synapses,再继续下一个循环。

如同生物学上的基本神经元,人工的神经网络也有基本的神经元。每个神经元有特定数量的输入,也会为每个神经元设定权重(weight)。权重是对所输入的资料的重要性的一个指标。然后,神经元会计算出权重合计值(net value),而权重合计值就是将所有输入乘以它们的权重的合计。每个神经元都有它们各自的临界值(threshold),而当权重合计值大于临界值时,神经元会输出1。相反,则输出0。最后,输出会被传送给与该神经元连接的其它神经元继续剩余的计算。

Learning
--------------------------------------------------------------------------------

正如上述所写,问题的核心是权重及临界值是该如何设定的呢?世界上有很多不同的训练方式,就如网络类型一样多。但有些比较出名的包括back-propagation, delta rule及Kohonen训练模式。

由于结构体系的不同,训练的规则也不相同,但大部份的规则可以被分为二大类别 - 监管的及非监管的。监管方式的训练规则需要“教师”告诉他们特定的输入应该作出怎样的输出。然后训练规则会调整所有需要的权重值(这是网络中是非常复杂的),而整个过程会重头开始直至数据可以被网络正确的分析出来。监管方式的训练模式包括有back-propagation及delta rule。非监管方式的规则无需教师,因为他们所产生的输出会被进一步评估。

Architecture
--------------------------------------------------------------------------------

在神经网络中,遵守明确的规则一词是最“模糊不清”的。因为有太多不同种类的网络,由简单的布尔网络(Perceptrons),至复杂的自我调整网络(Kohonen),至热动态性网络模型(Boltzmann machines)!而这些,都遵守一个网络体系结构的标准。

一个网络包括有多个神经元“层”,输入层、隐蔽层及输出层。输入层负责接收输入及分发到隐蔽层(因为用户看不见这些层,所以见做隐蔽层)。这些隐蔽层负责所需的计算及输出结果给输出层,而用户则可以看到最终结果。现在,为免混淆,不会在这里更深入的探讨体系结构这一话题。对于不同神经网络的更多详细资料可以看Generation5 essays

尽管我们讨论过神经元、训练及体系结构,但我们还不清楚神经网络实际做些什么。

The Function of ANNs
--------------------------------------------------------------------------------

神经网络被设计为与图案一起工作 - 它们可以被分为分类式或联想式。分类式网络可以接受一组数,然后将其分类。例如ONR程序接受一个数字的影象而输出这个数字。或者PPDA32程序接受一个坐标而将它分类成A类或B类(类别是由所提供的训练决定的)。更多实际用途可以看Applications in the Military中的军事雷达,该雷达可以分别出车辆或树。

联想模式接受一组数而输出另一组。例如HIR程序接受一个‘脏’图像而输出一个它所学过而最接近的一个图像。联想模式更可应用于复杂的应用程序,如签名、面部、指纹识别等。

The Ups and Downs of Neural Networks
--------------------------------------------------------------------------------

神经网络在这个领域中有很多优点,使得它越来越流行。它在类型分类/识别方面非常出色。神经网络可以处理例外及不正常的输入数据,这对于很多系统都很重要(例如雷达及声波定位系统)。很多神经网络都是模仿生物神经网络的,即是他们仿照大脑的运作方式工作。神经网络也得助于神经系统科学的发展,使它可以像人类一样准确地辨别物件而有电脑的速度!前途是光明的,但现在...

是的,神经网络也有些不好的地方。这通常都是因为缺乏足够强大的硬件。神经网络的力量源自于以并行方式处理资讯,即是同时处理多项数据。因此,要一个串行的机器模拟并行处理是非常耗时的。

神经网络的另一个问题是对某一个问题构建网络所定义的条件不足 - 有太多因素需要考虑:训练的算法、体系结构、每层的神经元个数、有多少层、数据的表现等,还有其它更多因素。因此,随着时间越来越重要,大部份公司不可能负担重复的开发神经网络去有效地解决问题。

NN 神经网络,Neural Network
ANNs 人工神经网络,Artificial Neural Networks
neurons 神经元
synapses 神经键
self-organizing networks 自我调整网络
networks modelling thermodynamic properties 热动态性网络模型

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
网格算法我没听说过
好像只有网格计算这个词

网格计算是伴随着互联网技术而迅速发展起来的,专门针对复杂科学计算的新型计算模式。这种计算模式是利用互联网把分散在不同地理位置的电脑组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一张网格”, 所以这种计算方式叫网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一个是数据处理能力超强;另一个是能充分利用网上的闲置处理能力。简单地讲,网格是把整个网络整合成一台巨大的超级计算机,实现计算资源、存储资源、数据资源、信息资源、知识资源、专家资源的全面共享。

Ⅳ 神经网络中输入层到隐藏层的W是怎么来的

W是权重。开始的初始化权重是随机产生的,之后的权重是在训练中自动更新的。训练更新的权重一般而言是看不到的,但也可以通过可视化权重的方式实现中间变量的观察,不过这些权重有什么含义目前并不十分清楚。

神经网络是模拟动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。从x到h到y可以近似看作动物神经,权重则可以看作是神经的粗细程度,或者说是两细胞之间联结的紧密程度。神经网络通过调整内部大量的权重来实现调整内部节点之间相互连接的关系,从而达到模拟动物神经网络来处理信息的目的。

Ⅳ 如何用人工神经网络确定指标体系的权重

说的确定应该就是训练方法吧,神经网络的权值不是人工给定的。而是用训练集(包括输入和输出)训练,用训练集训练一遍称为一个epoch,一般要许多epoch才行,目的是使得目标与训练结果的误差(一般采用均方误差)小到一个给定的阈值。以上所说是有监督的学习方法,还有无监督的学习方法。

Ⅵ 入门 | 一文简述循环神经网络

入门 | 一文简述循环神经网络

本文简要介绍了什么是循环神经网络及其运行原理,并给出了一个 RNN 实现示例。

什么是循环神经网络(RNN)?它们如何运行?可以用在哪里呢?本文试图回答上述这些问题,还展示了一个 RNN 实现 demo,你可以根据自己的需要进行扩展。

循环神经网络架构

基础知识。Python、CNN 知识是必备的。了解 CNN 的相关知识,是为了与 RNN 进行对比:RNN 为什么以及在哪些地方比 CNN 更好。

我们首先从“循环”(Recurrent)这个词说起。为什么将其称为循环?循环的意思是:

经常或重复出现

将这类神经网络称为循环神经网络是因为它对一组序列输入重复进行同样的操作。本文后续部分将讨论这种操作的意义。

我们为什么需要 RNN?

也许你现在想的是,已经有像卷积网络这样表现非常出色的网络了,为什么还需要其他类型的网络呢?有一个需要用到 RNN 的特殊例子。为了解释 RNN,你首先需要了解序列的相关知识,我们先来讲一下序列。

序列是相互依赖的(有限或无限)数据流,比如时间序列数据、信息性的字符串、对话等。在对话中,一个句子可能有一个意思,但是整体的对话可能又是完全不同的意思。股市数据这样的时间序列数据也是,单个数据表示当前价格,但是全天的数据会有不一样的变化,促使我们作出买进或卖出的决定。

当输入数据具有依赖性且是序列模式时,CNN 的结果一般都不太好。CNN 的前一个输入和下一个输入之间没有任何关联。所以所有的输出都是独立的。CNN 接受输入,然后基于训练好的模型输出。如果你运行了 100 个不同的输入,它们中的任何一个输出都不会受之前输出的影响。但想一下如果是文本生成或文本翻译呢?所有生成的单词与之前生成的单词都是独立的(有些情况下与之后的单词也是独立的,这里暂不讨论)。所以你需要有一些基于之前输出的偏向。这就是需要 RNN 的地方。RNN 对之前发生在数据序列中的事是有一定记忆的。这有助于系统获取上下文。理论上讲,RNN 有无限的记忆,这意味着它们有无限回顾的能力。通过回顾可以了解所有之前的输入。但从实际操作中看,它只能回顾最后几步。

本文仅为了与人类大体相关联,而不会做任何决定。本文只是基于之前关于该项目的知识做出了自己的判断(我甚至尚未理解人类大脑的 0.1%)。

何时使用 RNN?

RNN 可用于许多不同的地方。下面是 RNN 应用最多的领域。

1. 语言建模和文本生成

给出一个词语序列,试着预测下一个词语的可能性。这在翻译任务中是很有用的,因为最有可能的句子将是可能性最高的单词组成的句子。

2. 机器翻译

将文本内容从一种语言翻译成其他语言使用了一种或几种形式的 RNN。所有日常使用的实用系统都用了某种高级版本的 RNN。

3. 语音识别

基于输入的声波预测语音片段,从而确定词语。

4. 生成图像描述

RNN 一个非常广泛的应用是理解图像中发生了什么,从而做出合理的描述。这是 CNN 和 RNN 相结合的作用。CNN 做图像分割,RNN 用分割后的数据重建描述。这种应用虽然基本,但可能性是无穷的。

5. 视频标记

可以通过一帧一帧地标记视频进行视频搜索。

深入挖掘

本文按照以下主题进行。每一部分都是基于之前的部分进行的,所以不要跳着读。

前馈网络循环网络循环神经元基于时间的反向传播(BPTT)RNN 实现

前馈网络入门

前馈网络通过在网络的每个节点上做出的一系列操作传递信息。前馈网络每次通过每个层直接向后传递信息。这与其他循环神经网络不同。一般而言,前馈网络接受一个输入并据此产生输出,这也是大多数监督学习的步骤,输出结果可能是一个分类结果。它的行为与 CNN 类似。输出可以是以猫狗等作为标签的类别。

前馈网络是基于一系列预先标注过的数据训练的。训练阶段的目的是减少前馈网络猜类别时的误差。一旦训练完成,我们就可以用训练后的权重对新批次的数据进行分类。

一个典型的前馈网络架构

还有一件事要注意。在前馈网络中,无论在测试阶段展示给分类器的图像是什么,都不会改变权重,所以也不会影响第二个决策。这是前馈网络和循环网络之间一个非常大的不同。

与循环网络不同,前馈网络在测试时不会记得之前的输入数据。它们始终是取决于时间点的。它们只会在训练阶段记得历史输入数据。

循环网络

也就是说,循环网络不仅将当前的输入样例作为网络输入,还将它们之前感知到的一并作为输入。

我们试着建立了一个多层感知器。从简单的角度讲,它有一个输入层、一个具备特定激活函数的隐藏层,最终可以得到输出。

多层感知器架构示例

如果在上述示例中的层数增加了,输入层也接收输入。那么第一个隐藏层将激活传递到下一个隐藏层上,依此类推。最后到达输出层。每一个隐藏层都有自己的权重和偏置项。现在问题变成了我们可以输入到隐藏层吗?

每一层都有自己的权重(W)、偏置项(B)和激活函数(F)。这些层的行为不同,合并它们从技术层面上讲也极具挑战性。为了合并它们,我们将所有层的权重和偏置项替换成相同的值。如下图所示:

现在我们就可以将所有层合并在一起了。所有的隐藏层都可以结合在一个循环层中。所以看起来就像下图:

我们在每一步都会向隐藏层提供输入。现在一个循环神经元存储了所有之前步的输入,并将这些信息和当前步的输入合并。因此,它还捕获到一些当前数据步和之前步的相关性信息。t-1 步的决策影响到第 t 步做的决策。这很像人类在生活中做决策的方式。我们将当前数据和近期数据结合起来,帮助解决手头的特定问题。这个例子很简单,但从原则上讲这与人类的决策能力是一致的。这让我非常想知道我们作为人类是否真的很智能,或者说我们是否有非常高级的神经网络模型。我们做出的决策只是对生活中收集到的数据进行训练。那么一旦有了能够在合理时间段内存储和计算数据的先进模型和系统时,是否可以数字化大脑呢?所以当我们有了比大脑更好更快的模型(基于数百万人的数据训练出的)时,会发生什么?

另一篇文章(https://deeplearning4j.org/lstm.html)的有趣观点:人总是被自己的行为所困扰。

我们用一个例子来阐述上面的解释,这个例子是预测一系列字母后的下一个字母。想象一个有 8 个字母的单词 namaskar。

namaskar(合十礼):印度表示尊重的传统问候或姿势,将手掌合起置于面前或胸前鞠躬。

如果我们在向网络输入 7 个字母后试着找出第 8 个字母,会发生什么呢?隐藏层会经历 8 次迭代。如果展开网络的话就是一个 8 层的网络,每一层对应一个字母。所以你可以想象一个普通的神经网络被重复了多次。展开的次数与它记得多久之前的数据是直接相关的。

循环神经网络的运作原理

循环神经元

这里我们将更深入地了解负责决策的实际神经元。以之前提到的 namaskar 为例,在给出前 7 个字母后,试着找出第 8 个字母。输入数据的完整词汇表是 {n,a,m,s,k,r}。在真实世界中单词或句子都会更复杂。为了简化问题,我们用的是下面这个简单的词汇表。

在上图中,隐藏层或 RNN 块在当前输入和之前的状态中应用了公式。在本例中,namaste 的字母 n 前面什么都没有。所以我们直接使用当前信息推断,并移动到下一个字母 a。在推断字母 a 的过程中,隐藏层应用了上述公式结合当前推断 a 的信息与前面推断 n 的信息。输入在网络中传递的每一个状态都是一个时间步或一步,所以时间步 t 的输入是 a,时间步 t-1 的输入就是 n。将公式同时应用于 n 和 a 后,就得到了一个新状态。

用于当前状态的公式如下所示:

h_t 是新状态,h_t-1 是前一个状态。x_t 是时间 t 时的输入。在对之前的时间步应用了相同的公式后,我们已经能感知到之前的输入了。我们将检查 7 个这样的输入,它们在每一步的权重和函数都是相同的。

现在试着以简单的方式定义 f()。我们使用 tanh 激活函数。通过矩阵 W_hh 定义权重,通过矩阵 W_xh 定义输入。公式如下所示:

上例只将最后一步作为记忆,因此只与最后一步的数据合并。为了提升网络的记忆能力,并在记忆中保留较长的序列,我们必须在方程中添加更多的状态,如 h_t-2、h_t-3 等。最后输出可以按测试阶段的计算方式进行计算:

其中,y_t 是输出。对输出与实际输出进行对比,然后计算出误差值。网络通过反向传播误差来更新权重,进行学习。本文后续部分会对反向传播进行讨论。

基于时间的反向传播算法(BPTT)

本节默认你已经了解了反向传播概念。如果需要对反向传播进行深入了解,请参阅链接:?http://cs231n.github.io/optimization-2/?。

现在我们了解了 RNN 是如何实际运作的,但是在实际工作中如何训练 RNN 呢?该如何决定每个连接的权重呢?如何初始化这些隐藏单元的权重呢?循环网络的目的是要准确地对序列输入进行分类。这要靠误差值的反向传播和梯度下降来实现。但是前馈网络中使用的标准反向传播无法在此应用。

与有向无环的前馈网络不同,RNN 是循环图,这也是问题所在。在前馈网络中可以计算出之前层的误差导数。但 RNN 的层级排列与前馈网络并不相同。

答案就在之前讨论过的内容中。我们需要展开网络。展开网络使其看起来像前馈网络就可以了。

展开 RNN

在每个时间步取出 RNN 的隐藏单元并复制。时间步中的每一次复制就像前馈网络中的一层。在时间步 t+1 中每个时间步 t 层与所有可能的层连接。因此我们对权重进行随机初始化,展开网络,然后在隐藏层中通过反向传播优化权重。通过向最低层传递参数完成初始化。这些参数作为反向传播的一部分也得到了优化。

展开网络的结果是,现在每一层的权重都不同,因此最终会得到不同程度的优化。无法保证基于权重计算出的误差是相等的。所以每一次运行结束时每一层的权重都不同。这是我们绝对不希望看到的。最简单的解决办法是以某种方式将所有层的误差合并到一起。可以对误差值取平均或者求和。通过这种方式,我们可以在所有时间步中使用一层来保持相同的权重。

RNN 实现

本文试着用 Keras 模型实现 RNN。我们试着根据给定的文本预测下一个序列。

代码地址:?https://gist.github.com/.git?

该模型是 Yash Katariya 建的。我对该模型做了一些细微的改动以适合本文的要求。

Ⅶ 如何用python和scikit learn实现神经网络

1:神经网络算法简介

2:Backpropagation算法详细介绍

3:非线性转化方程举例

4:自己实现神经网络算法NeuralNetwork

5:基于NeuralNetwork的XOR实例

6:基于NeuralNetwork的手写数字识别实例

7:scikit-learn中BernoulliRBM使用实例

8:scikit-learn中的手写数字识别实例

一:神经网络算法简介

1:背景

以人脑神经网络为启发,历史上出现过很多版本,但最着名的是backpropagation

2:多层向前神经网络(Multilayer Feed-Forward Neural Network)

Ⅷ BP神经网络如何自定义权重值

0到1之间随即定,然后根据最速下降法或者遗传算法对其进行优化即可。

Ⅸ 神经网络中的前向和后向算法

神经网络中的前向和后向算法
看了一段时间的深度网络模型,也在tf和theano上都跑了一些模型,但是感觉没有潜下去,对很多东西的理解都只停留在“这个是干什么的”层次上面。昨天在和小老师一起看一篇文章的时候,就被问到RNN里面的后向传播算法具体是怎么推。当时心里觉得BP算法其实很熟悉啊,然后在推导的过程中就一脸懵逼了。于是又去网上翻了翻相关内容,自己走了一遍,准备做个笔记,算是个交代。
准备一个神经网络模型,比如:

其中,[i1,i2]
代表输入层的两个结点,[h1,h2]代表隐藏层的两个结点,[o1,o2]为输出。[b1,b2]
为偏置项。连接每个结点之间的边已经在图中标出。
来了解一下前向算法:
前向算法的作用是计算输入层结点对隐藏层结点的影响,也就是说,把网络正向的走一遍:输入层—->隐藏层—->输出层
计算每个结点对其下一层结点的影响。
?? 例如,我们要算结点h1
的值,那么就是:
是一个简单的加权求和。这里稍微说一下,偏置项和权重项的作用是类似的,不同之处在于权重项一般以乘法的形式体现,而偏置项以加法的形式体现。
??而在计算结点o1时,结点h1的输出不能简单的使用neth1的结果,必须要计算激活函数,激活函数,不是说要去激活什么,而是要指“激活的神经元的特征”通过函数保留并映射出来。以sigmoid函数为例,h1的输出:

于是

最后o1的输出结果,也就是整个网络的一个输出值是:
按照上面的步骤计算出out02,则[outo1,outo2]就是整个网络第一次前向运算之后得到的结果。
后向算法:

??在实际情况中,因为是随机给定的权值,很大的可能(几乎是100%)得到的输出与实际结果之间的偏差非常的大,这个时候我们就需要比较我们的输出和实际结果之间的差异,将这个残差返回给整个网络,调整网络中的权重关系。这也是为什么我们在神经网络中需要后向传播的原因。其主要计算步骤如下:
1. 计算总误差
2. 隐藏层的权值更新
在要更新每个边的权重之前,必须要知道这条边对最后输出结果的影响,可以用整体误差对w5求偏导求出:
具体计算的时候,可以采用链式法则展开:
在计算的时候一定要注意每个式子里面哪些自变量是什么,求导千万不要求错了。
??需要讲出来的一个地方是,在计算w1的权重时,Etotal中的两部分都需要对它进行求导,因为这条边在前向传播中对两个残差都有影响
3. 更新权重 这一步里面就没什么东西了,直接根据学习率来更新权重:

至此,一次正向+反向传播过程就到此为止,接下来只需要进行迭代,不断调整边的权重,修正网络的输出和实际结果之间的偏差(也就是training整个网络)。

阅读全文

与神经网络如何更新权重的算法相关的资料

热点内容
中国移动电视网络信号怎么样 浏览:987
移动网络为e网 浏览:570
电脑有网络但是上不了网怎么解决 浏览:364
如何在苹果笔记本电脑上安装无线网络 浏览:491
网络贷和信用卡逾期哪个可怕 浏览:179
网络地址池多于255个怎么设置 浏览:665
新手写小说在哪个网络平台比较好 浏览:306
网络知名作家有哪些人 浏览:645
无线网络标签怎么删除 浏览:402
路由器网络供电器 浏览:514
苹果13打电话无网络 浏览:276
计算机网络思科测试答案 浏览:460
能连接网络不能上网 浏览:569
如何进行电脑上的网络连接 浏览:137
布马网络怎么样 浏览:76
网络信号显示红灯怎么解决 浏览:1000
设置默认网络 浏览:93
无线网络示意图 浏览:769
双卡信号不同网络可以用吗 浏览:679
计算机网络通信传输方式 浏览:459

友情链接