技术指南

权重初始化

在训练开始之前如何设置神经网络的起始权重,这很大程度上决定了信号和梯度是否在深层中保持健康。

概述

在训练开始之前如何设置神经网络的起始权重,这很大程度上决定了信号和梯度是否在深层中保持健康。良好的初始化是快速收敛和永远不会学习的模型之间的区别。

权重初始化是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

在训练之前,每个重量都需要一个起始值。将它们全部设置为零是致命的:相同的权重产生相同的梯度,因此神经元永远不会区分——这就是对称性破缺问题。随机初始化打破了对称性,但规模非常重要。太大,激活和梯度爆炸;太小了,它们就会消失。原则方案根据层大小选择方差,以保持各层信号方差大致恒定。 Xavier (Glorot) 初始化通过输入加输出单元的数量来缩放方差,并且适合 tanh 和 sigmoid 网络。他(Kaiming)的初始化按输入数量进行缩放,并考虑到 ReLU 丢弃了一半的输入,使其成为基于 ReLU 的深度网络和 CNN 的标准。良好的初始化可以使早期训练保持稳定,直到标准化和自适应优化器接管。

技术洞察

目标是保持层与层之间激活和梯度的方差恒定。 Xavier 将权重方差设置为 2 / (fan_in + fan_out),平衡对称激活的前向和后向传递。他初始化使用 2 / fan_in ,因为 ReLU 将其大约一半的输入清零,因此将方差加倍可以补偿丢失的信号。偏差通常初始化为零,因为随机权重已经破坏了对称性。

掌握权重初始化

在训练开始之前如何设置神经网络的起始权重,这很大程度上决定了信号和梯度是否在深层中保持健康。良好的初始化是快速收敛和永远不会学习的模型之间的区别。权重初始化是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将权重初始化视为一种操作模型,而不是单个功能:定义期望的结果,澄清假设,并将系统可以可靠地完成的任务与仍需要专家判断的任务分开。

在实践中,强大的团队使用权重初始化根据可靠性和成本优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。

多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。

战略影响

多年来,架构决策决定着性能和运营成本。

多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

更好的工程选择可以减少生产中的可靠性事故。

更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

权重初始化的未来

归一化层和残差连接使得训练对精确初始化不太敏感,但对于非常深或无归一化的网络来说仍然很重要。积极的研究包括针对 Transformer 和注意力量身定制的方案、让网络在没有任何归一化层的情况下进行训练的方法,以及动态等距和仅通过初始化来预测可训练性的神经切线内核等理论。数据相关的初始化,即从样本批次中校准尺度,是另一个发展方向。

现实世界的实施

使用 ReLU 激活的 CNN 通过 He 初始化进行初始化,因此深度卷积堆栈的训练不会消失信号。

具有 tanh 激活的网络使用 Xavier 初始化来保持跨层激活方差稳定。

一位工程师不小心将所有权重初始化为零,会发现网络无法学习,因为每个神经元都保持相同。

框架默认设置(PyTorch 的 Kaiming、Keras 的 Glorot 统一)在创建层时自动应用原则性初始化。

实施模式

权重初始化实践

使用 ReLU 激活的 CNN 通过 He 初始化进行初始化,因此深度卷积堆栈的训练不会消失信号。

使用 ReLU 激活的 CNN 通过 He 初始化进行初始化,因此深度卷积堆栈的训练不会消失信号。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

权重初始化实践

具有 tanh 激活的网络使用 Xavier 初始化来保持跨层激活方差稳定。

具有 tanh 激活的网络使用 Xavier 初始化来保持跨层激活方差稳定。当团队预先定义质量阈值、为边缘情况保留人工升级路径并跟踪一段时间内的生产力增益和错误成本时,通常会获得更好的结果。

权重初始化实践

一位工程师不小心将所有权重初始化为零,会发现网络无法学习,因为每个神经元都保持相同。

工程师如果不小心将所有权重初始化为零,就会发现网络无法学习,因为每个神经元都保持相同。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。

权重初始化实践

框架默认设置(PyTorch 的 Kaiming、Keras 的 Glorot 统一)在创建层时自动应用原则性初始化。

框架默认值(PyTorch 的 Kaiming、Keras 的 Glorot 统一)在创建层时自动应用有原则的初始化。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

优化一项基准测试可以隐藏更广泛的系统弱点。

!

基础设施和维护成本常常被低估。

!

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

2

在实际负载和数据条件下进行基准测试。

在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

3

仪器监控错误、漂移和用户影响。

仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

4

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索