【机器学习】039_合理初始化

一、稳定训练

目标:使梯度值在更合理的范围内

常见方法如下:

· 将乘法变为加法

· ResNet:当层数较多时,会加入一些加法进去

· LSTM:如果时序序列较长时,把一些对时序的乘法做加法

· 归一化

· 梯度归一化:把梯度转化为一个均值0、方差1这样的数,从而避免梯度的数值过大或过小

· 梯度裁剪:如果梯度大于一个阈值,就强行拉回来减到一个范围里

· 合理的权重初始化、选取合理的激活函数

二、合理初始化操作

目标:让每层的方差都为一个常数

· 让每层的输出和梯度都看作"随机变量"

· 让输出和梯度的均值和方差都保持一致,那么就可以在每层的传递之间保持,不会出现问题

权重初始化

目标:将参数和权重初始化在一个合理的区间值里,防止参数变化过大或过小导致出现问题

· 当训练开始时,数值更易出现不稳定的问题

· 随机初始的参数可能离最优解很远,更新幅度较陡,损失函数会很大,从而导致梯度较大

· 最优解附近一般较缓,更新幅度会较小

· 假设不定义初始化方法,框架将使用默认初始化,即采用正态分布初始化权重值

· 这种初始化方法对小型神经网络较为有效,但当网络较深时,这种初始化方法往往表现较差

· Xavier初始化:

某些没有非线性 的全连接层输出(例如,隐藏变量) 的尺度分布:

· 对于某一层 输入 以及其相关权重 ,输出由下式给出:

权重 都是从同一分布中独立抽取的

· 假设该分布具有均值 0 和方差 (不一定是标准正态分布,只需均值方差存在)

· 假设层 的输入也具有均值 0 和方差 ,且独立于 并彼此独立

可以按下列方式计算 的均值与方差:

为了保障 的方差不变化,可设置

现在考虑反向传播过程,我们面临着类似的问题,尽管梯度是从更靠近输出的层传播的。

使用与前向传播相同的推断,我们可以看到:

· 除非 ,否则梯度的方差可能会增大。其中 是该层输出的数量。

· 然而,我们不可能同时满足 这两个条件。

但我们只需满足:

即可达到要求,这便是Xavier初始化的基础。

通常,Xavier初始化从均值为 0,方差 的高斯分布中采样权重。

Xavier初始化表明:

· 对于每一层,输出的方差不受输入数量的影响;

· 任何梯度的方差不受输出数量的影响。

相关推荐
私人珍藏库2 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
月疯2 小时前
CNN卷积和反卷积输出的计算方法
深度学习·神经网络·cnn
夜雪一千3 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
CS创新实验室3 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
能有时光3 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
直接冲冲冲3 小时前
鱼书-PH4-类的作用
深度学习
fthux3 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
_Jimmy_4 小时前
Python 协程库如何使用以及有哪些使用场景
python
aqi004 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
第一程序员4 小时前
Rust Agent 子进程执行:Command 之前,先定义输入和超时
python·rust·github