- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在深入研究神经网络主题以及如何有效地训练它们时,我发现了使用非常简单的激活函数的方法,例如修正线性单元(ReLU),而不是使用经典的平滑Sigmoid。 ReLU 函数本质上是不可微分的,因此根据我的理解,反向传播算法(BPA)不适合用 ReLU 训练神经网络,因为多变量微积分的链式法则仅指平滑函数。然而,我读过的关于使用 ReLU 的论文都没有解决这个问题。 ReLU 似乎非常有效,并且几乎在任何地方都可以使用,同时不会导致任何意外行为。有人可以向我解释为什么 ReLU 可以通过反向传播算法进行训练吗?
最佳答案
要了解如何使用 ReLU 等函数进行反向传播,您需要了解导数最重要的属性是什么,正是它使反向传播算法如此有效。这个属性是:
f(x) ~ f(x0) + f'(x0)(x - x0)
如果您将 x0 视为当前参数的实际值 - 您可以知道(知道成本函数的值及其导数)当您更改参数时成本函数将如何表现一点。这是反向传播中最关键的事情。
由于计算成本函数对于成本计算至关重要 - 您将需要成本函数来满足上述属性。很容易检查 ReLU 在除了 0
的一个小邻域之外的所有地方都满足这个属性。这是 ReLU 的唯一问题 - 当我们接近 0
时我们无法使用此属性。
为了克服这个问题,您可以将 0
中的 ReLU 导数值选择为 1
或 0
。另一方面,大多数研究人员并不认为这个问题很严重,因为在 ReLU 计算过程中接近 0 的情况相对较少。
从上面来看 - 当然 - 从纯数学的角度来看,将 ReLU 与反向传播算法结合使用是不合理的。另一方面 - 在实践中,它在 0 附近出现这种奇怪的行为通常没有任何区别。
关于machine-learning - 反向传播算法如何处理不可微的激活函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30236856/
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
我是一名优秀的程序员,十分优秀!