【00】神经网络之初始化参数

问题描述

#随机初始化权重

w12 = np.random.randn(100, 784)/np.sqrt(784)

为什么除以28

回答

这里的代码是初始化一个深度学习模型中的权重矩阵w12。权重矩阵的形状是(100, 784),这是一个从784个输入节点到100个隐藏节点的全连接层。

除以np.sqrt(784)是权重初始化的一种策略,通常称为"Xavier初始化"或"Glorot初始化"。该初始化策略的目的是使权重的初始值具有合适的尺度,以保证网络中每一层的信号既不会过小也不会过大,从而有助于模型的收敛。
784这个数字是28 x 28的结果,这很可能是一个28x28像素的图像,对应的是MNIST数据集中的图像尺寸。

除以np.sqrt(784)的原因是:

  1. 根据Xavier初始化,当使用tanh激活函数时,权重应该从均值为0、方差为1/n的分布中初始化,其中n是输入节点的数量。在这里,n = 784
  2. 当从标准正态分布中随机抽取权重(使用np.random.randn())时,得到的权重具有均值0和方差1。为了将方差调整为1/n,可以将权重除以np.sqrt(n)

因此,除以np.sqrt(784)是为了将权重的方差调整为1/784,这有助于优化算法的收敛性。

备注:

random.randn 是NumPy库中的一个函数,用于从标准正态分布(均值为0,方差为1)中生成随机数。

具体来说,当你使用 random.randn 时:

  • 它会返回一个或一组从标准正态分布中随机抽取的数值。
  • 参数决定了返回数组的形状。例如,np.random.randn(3, 4) 会返回一个3x4的数组,其中的每个元素都是从标准正态分布中随机抽取的。

使用 random.randn 是初始化神经网络权重的常用方法,特别是当使用某些权重初始化策略(如Xavier初始化)时。从标准正态分布中抽取的随机权重可以确保在训练开始时权重是小的、不同的,并且它们的分布具有某种规律性。这有助于避免某些训练问题,如权重全部更新为相同的值或权重更新太大导致的梯度爆炸。

相关推荐
财经资讯数据_灵砚智能12 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月13日
大数据·人工智能·python·信息可视化·自然语言处理
零壹AI实验室12 小时前
用AI 10分钟搭建一个监控系统:Prometheus + Grafana 实战
人工智能·grafana·prometheus
志栋智能12 小时前
超自动化巡检:量化运维成效的标尺
运维·网络·人工智能·自动化
AI科技星12 小时前
紫金山天文台与6G 超导太赫兹实验对比【乖乖数学】
人工智能·线性代数·机器学习·量子计算·agi
摩尔线程12 小时前
摩尔线程携手紫光计算机发布《语音识别全栈国产化技术实践白皮书》
人工智能·语音识别·摩尔线程
字节跳动开源12 小时前
局中局!给 Agent 装上 OpenViking,它们竟然学会了“记仇”和“伪装”?
人工智能·开源·llm
Exploring12 小时前
通过 Vibe Coding,我开发的第一款鸿蒙 App 上架了,欢迎大家下载体验
人工智能
杀生丸学AI12 小时前
【VALSE 2026】AI领域年度重要进展
人工智能
沪漂阿龙12 小时前
面试题:文本表示方法详解——One-hot、Word2Vec、上下文表示、BERT词向量全解析(NLP基础高频考点)
人工智能·神经网络·自然语言处理·bert·word2vec
Luminbox紫创测控12 小时前
氙灯太阳光模拟器加速老化测试
人工智能·测试工具·测试标准