当前位置: 首页 > news >正文

【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)

神经网络参数初始化详解

在构建神经网络时,参数的初始化虽然只是一个开端步骤,但它对网络最终的训练效果和收敛速度有着至关重要的影响。本文将结合一张手绘风格图,深入浅出地讲解神经网络初始化的背景、方法及其数学依据,帮助大家构建更加高效稳定的神经网络模型。


为什么要重视参数初始化?

在神经网络中,参数(权重)通常需要被初始化为非零值。初始化得当,可以帮助网络快速进入有效训练状态;反之,则可能导致:

  • 梯度消失或爆炸(尤其在深层网络中)

  • 收敛速度缓慢

  • 陷入局部最优或震荡


图示解读:参数初始化要点

我们先来看这张图(来源:Chris Albon):

从图中可以总结出三个关键点:

1. 参数来源

“参数通常从均匀分布正态分布中随机提取,初始化成最小值。”

  • 最常见的方法是从某个概率分布(如 \mathcal{N}(0, \sigma^2)U(-a, a))中生成初始权重。

  • 目的是让初始值“看起来像随机的”,但又不至于太极端。

2. 初始值的大小不能随意

“参数的初始化规模,太大或太小都不好。”

  • 初始化过大:会导致激活值变得过大,可能造成梯度爆炸。

  • 初始化过小:激活值趋近于0,导致梯度消失。

3. 合理控制初始化的 Scale

图中给出了一个标准初始化的 scale 解决方案,其核心公式为:

W \sim U\left(-\sqrt{\frac{6}{m + n}},\ \sqrt{\frac{6}{m + n}}\right)

其中:

  • m:上一层的神经元数量(输入维度)

  • n:当前层的神经元数量(输出维度)

这是 Xavier 初始化(Glorot Uniform) 的核心思想,适用于 sigmoid 或 tanh 激活函数。


Xavier 初始化的由来与数学原理

Xavier 初始化由 Glorot & Bengio 提出,目的是让每一层的输入和输出保持相近的方差,避免激活值和梯度在前向和反向传播中消失或爆炸。

核心思想:

保持:

  • 前向传播时的激活值方差不变;

  • 反向传播时的梯度方差不变。

因此选择:

Var(W) = \frac{2}{m + n}

  • 如果采用 均匀分布,则边界设为:

    \sqrt{ \frac{6}{m + n} }
  • 如果采用 正态分布,则使用:

    \mathcal{N}\left(0, \frac{2}{m + n}\right)

实践中的其他初始化方法

除了 Xavier 初始化,还有一些根据不同激活函数而优化的方法:

方法使用场景初始化方式
He 初始化ReLU 系列激活函数\mathcal{N}(0, \frac{2}{m})
LeCun 初始化SELU 等自归一化激活函数\mathcal{N}(0, \frac{1}{m})
Zero 初始化不可取所有权重设为0,导致每层输出相同
常量初始化特殊场景比如偏置初始化为0或常数

🛠 实际代码示例(PyTorch)

以 PyTorch 为例,我们如何实现 Xavier 初始化?

import torch.nn as nn
import torch.nn.init as initlayer = nn.Linear(256, 128)  # 输入256维,输出128维
init.xavier_uniform_(layer.weight)  # 使用均匀分布的Xavier初始化

对于 ReLU 可使用 He 初始化:

init.kaiming_uniform_(layer.weight, nonlinearity='relu')

总结

  • 参数初始化是神经网络训练的起点,需根据网络结构和激活函数选用合适策略。

  • Xavier 初始化是适用于 sigmoid/tanh 的经典方案。

  • 初始化的核心是保持激活值和梯度的方差稳定,从而避免训练不收敛的问题。

  • 实践中,务必根据具体模型选择对应初始化方式,尤其在构建深层网络或使用特殊激活函数时。


建议阅读

  • 《Understanding the difficulty of training deep feedforward neural networks》(Xavier 初始化提出论文)

  • PyTorch / TensorFlow 源码中的初始化实现逻辑


如果你喜欢这类“图示 + 理论 + 实践”的讲解方式,欢迎点赞、收藏、转发支持!

相关文章:

  • AI与机器学习深度集成:从设备端能力爆发到开发工具智能化
  • C++笔记-AVL树(包括单旋和双旋等)
  • 比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
  • 第29节:现代CNN架构-Inception系列模型
  • 深度学习中的查全率与查准率:如何实现有效权衡
  • 在RAG中 如何提高向量搜索的准确性?
  • 视频编解码学习十二之Android疑点
  • openfeign 拦截器实现微服务上下文打通
  • 【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
  • react中安装依赖时的问题 【集合】
  • FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写
  • b站视频如何下载到电脑——Best Video下载器
  • 昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
  • 算法第十八天|530. 二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • Agent Builder API - Agent Smith 扩展的后端服务(开源代码)
  • 学习机器学习的体会与姓名性别预测案例分析
  • 智能工具协同赋能STEM教育科研|探索LLM大语言模型和数学软件Maple的创新实践
  • 反向操作:如何用AI检测工具优化自己的论文“人味”?
  • 华为云Flexus+DeepSeek征文|基于华为云ModelArts Studio平台体验DeepSeek-V3大模型
  • idea中编写spark程序
  • 免签国+1,中乌(兹别克斯坦)互免签证协定6月生效
  • 紫光集团原董事长赵伟国一审被判死缓
  • 孙简任吉林省副省长
  • 世界期待中美对话合作带来更多确定性和稳定性
  • 韩德洙成为韩国执政党总统大选候选人
  • 司法部:民营经济促进法明确禁止违规异地执法、利用行政或者刑事手段违法干预经济纠纷