神经网络:使用反向传播进行训练
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
反向传播是神经网络最常用的训练算法。它使梯度下降法适用于多层神经网络。
许多机器学习代码库(例如 Keras)会自动处理反向传播,因此您无需自行执行任何底层计算。观看以下视频,从概念上大致了解反向传播的运作方式:
神经网络训练的最佳实践
本部分将介绍反向传播的失败情况以及对神经网络进行正则化的最常见方法。
梯度消失
较低神经网络层(更靠近输入层的层)的梯度可能会变得非常小。在深层网络(具有多个隐藏层的网络)中,计算这些梯度可能需要将许多小项相乘。
当较低层的梯度值接近 0 时,梯度就会“消失”。具有梯度消失的层训练速度非常缓慢,甚至根本无法训练。
ReLU 激活函数有助于防止梯度消失。
梯度爆炸
如果网络中的权重非常大,那么较低层的梯度会涉及许多大项的乘积。在这种情况下,可能会出现梯度爆炸:梯度过大而无法收敛。
批次归一化有助于防止梯度爆炸,降低学习速率也有助于防止梯度爆炸。
失效的 ReLU 单元
一旦 ReLU 的加权和低于 0,ReLU 单元就会卡住。它会输出 0,对网络的输出没有任何贡献,并且在反向传播期间梯度无法再通过它流动。如果梯度来源被切断,ReLU 的输入可能永远不会发生足够的变化,从而使加权和重新回到 0 以上。
降低学习率有助于防止 ReLU 单元失效。
Dropout 正规化
另一种形式的正则化(称为 dropout 正则化)对神经网络很有用。其工作原理是,在一个梯度步长中随机“丢弃”网络中的单元激活。
丢弃的越多,正则化就越强:
- 0.0 = 不进行 dropout 正规化。
- 1.0 = 丢弃所有节点。模型学不到任何规律。
- 0.0 和 1.0 之间的值更有用。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-12-16。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-12-16。"],[],[]]