- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读this文档中,他们说权重调整公式是这样的:
new weight = old weight + learning rate * delta * df(e)/de * input
df(e)/de
部分是激活函数的导数,通常是 sigmoid 函数,如 tanh
。
learning rate * delta * input
够了吗?这个问题出现在这个问题之后,并且与之密切相关:Why must a nonlinear activation function be used in a backpropagation neural network? .
最佳答案
训练神经网络只是指寻找权重矩阵中每个单元的值(对于具有一个隐藏层的神经网络来说,权重矩阵有两个),使得观测数据和预测数据之间的平方差被最小化。实际上,包含两个权重矩阵的各个权重在每次迭代时都会进行调整(它们的初始值通常设置为随机值)。这也称为在线模型,而不是在多次迭代后调整权重的批量模型。
但是应该如何调整权重——即哪个方向+/-?增加多少?
这就是导数的用武之地。导数的值较大将导致相应权重的较大调整。这是有道理的,因为如果导数很大,则意味着距离最小值还很远。换句话说,权重在每次迭代时都会在由总误差(观测值与预测值)定义的成本函数表面上最速下降(导数的最高值)方向上进行调整。
计算出每个模式的误差后(从迭代期间神经网络预测的值中减去响应变量或输出向量的实际值),权重矩阵中的每个权重将根据计算出的误差梯度按比例进行调整.
由于误差计算从神经网络的末尾开始(即在输出层,从预测中减去观测值)并继续到前面,因此称为反向传播。
<小时/>更一般地,优化技术使用导数(或梯度对于多变量问题)(对于反向传播,共轭梯度可能是最常见的)找到目标函数的最小值(又名损失)。
它的工作原理是这样的:
一阶导数是曲线上与它相切的线的斜率为 0 的点。
因此,如果您在由目标函数定义的 3D 表面上行走,并且走到斜率 = 0 的点,那么您就位于底部 - 您已经找到了一个最小值(无论是全局或局部)的功能。
但一阶导数比这更重要。它还告诉您是否朝着正确的方向达到函数最小值。
如果您考虑一下当曲线/曲面上的点向下移向函数最小值时切线的斜率会发生什么情况,就很容易理解为什么会这样。
斜率(因此函数在该点的导数值)逐渐减小。换句话说,要最小化函数,请遵循导数 - 即,如果值减小,那么您就朝着正确的方向移动。
关于math - 激活函数的导数及其在反向传播中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9785754/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!