machine-learning - 用于神经网络的激活函数
问题描述
如果这个问题不是传统方法,其中涉及代码片段或有关代码的问题,请提前道歉。我只是想了解有关神经网络主题的某些特定点。我正在观看有关为神经网络选择最佳激活函数的 YouTube 视频(Siraj Raval - School of AI): https: //www.youtube.com/watch?v=-7scQpJT7uo
1-我试图理解他对为什么 Sigmoid 不再是神经网络使用的理想激活函数的解释,原因如下:
- Sigmoids 饱和并杀死梯度。
- Sigmoids 收敛缓慢。
- Sigmoid 不是以零为中心的。
- 可以在最后一层使用。
首先,我猜的第一个和第二个原因是相似的,或者说第一个原因导致了第二个原因。那是对的吗?
2- 第三个我不明白的原因(不是以零为中心的)。在视频中的 5:52,Siraj 解释了“......输出从 0 开始到 1 结束,这意味着函数之后的值将是正的,这使得权重的梯度要么全部为正,要么全部为负。这使得梯度更新在不同方向上走得太远......”。这一点我没看懂。至少在理想情况下,从数学上了解这是如何解释的会很有帮助。
3- 他接着说 Tanh 函数解决了这个问题。我再次不明白为什么(数学上)。
4- a) 然后在 7:20,他提到 ReLU 最适合用于隐藏层,而 SoftMax 函数用于输出层。但没有具体引用哪个功能。那么 Sigmoid 函数在这里是一个很好的假设吗?b)他还补充说,线性函数应该用于回归“......因为信号通过不变......”。他这句话是什么意思?
5- 最后,他提到了 ReLU 的问题,其中“......某些单元在训练期间可能很脆弱并死亡,这意味着流经神经元的大梯度可能会导致权重更新,使其永远不会在任何数据点上再次激活。那么从那时起,流经它的梯度将始终为零……”。再一次,我不明白那个解释,尤其是没有看到它的数学方面,所以这个解释是有道理的。
我对神经网络和 Sigmoid 函数有相当基本的直觉,但为了深入解释,比如这个关于不同激活函数的视频,我觉得某些解释只是随便提到的,也没有用一些数学来解释推理。
任何帮助将非常感激。非常感谢。
解决方案
乙状结肠。使用神经网络时,您需要此功能,因为它保持非线性,当然,这在输出层中。
reLU,训练的时候,在隐藏层用这个,需要x>0的值,所以reLU取这个值。我建议看一下 reLU,softmax 也很好用,但是在实践中使用 reLU 会得到更好的结果。
推荐阅读
- python-3.x - 我想按我想要的名字保存它
- post - 使用 access.log 重播 POST 日志
- apache-spark - 按 ID 停止 spark 运行流
- eloquent - 我正在学习 laravel 8,但不理解这种语法是如何工作的
- java - 将 if else 重构为 Java 中的单行条件语句?
- flutter - Flutter Firestore ArrayNotContains?
- jenkins - 需要在电子邮件正文中发送测试结果,但未在 Target 文件夹中创建 emailable-report.html
- php - HTML 表单操作 url 为在子域之外复制的 php 文件抛出 404
- python - 返回具有与 dict 相同键的 dict 列表
- regex - 正则表达式集包含一个或多个单词