优化深度神经网络

news/2025/2/8 22:38:25 标签: 深度学习

训练集、开发集(验证集)、测试集

偏差与方差

正则化

L2正则

Dropout

随机丢弃部分神经元输入,经常用于计算机视觉的神经网络内,因为通常没有足够的训练数据,很容易出现过拟合的问题

数据增强

训练集规一化

可以使其图像更均匀,梯度下降更容易收敛

梯度消失与梯度爆炸

梯度消失

  • 激活函数:如Sigmoid或Tanh,其导数在输入较大或较小时会趋近于零,梯度在多层传播中逐渐减小。

  • 网络深度:层数越多,梯度经过多次连乘后变得更小。

梯度爆炸

  • 权重初始化不当,导致梯度在传播中不断放大。

  • 网络深度增加,梯度连乘后变得过大。

参数初始化

He初始化与Xavier初始化

Mini-Batch梯度下降

在训练集数据量较大时,每轮迭代只使用小部分数据进行训练,大幅提高训练速度

如何选择batch大小

batch size太小会抖动严重,并且失去向量化带来的加速优势;太大则会每轮迭代成本很高

梯度下降算法的优化

Momentum 动量法传播

指数加权平均(exponentially weighted averages)

可以看到指数加权平均展开之后就是每老一点的数据就多乘以一次一个接近一的系数,使得老的数据影响越来越小,近似的计算近一段时间的平均值,这样相对直接取n填计算均值需要的内存更小。

如果单纯以上面的公式进行计算,会发现由于 v_0=0 导致在初始化的几天预测不准,大部分情况下只需要等待预热期过去就好,但是如果你关注预热期的准确度,可以每轮迭代增加一步v_t=\frac{v_t}{1-\beta ^t}进行计算,当t比较小时可以放大结果,当t比较大时则分母接近于0影响渐小

梯度下降结合指数加权平均

即针对偏导数结果进行指数加权平均,这样在偏导数震荡时可以减小震荡幅度,而连续同朝向时则可以加速收敛

RMSprop 均方根传播

区别于指数加权平均,这里使用梯度的平方进行指数加权,加速收敛

Adam 亚当优化算法

Adam算法结合了Momentum和RMSprop,增加了\varepsilon参数防止分母为0,并且对结果进行了误差校正

超参的选择

\varepsilon的对最终效果的影响很小,\beta _1\beta _2一般也使用固定值,分别为0.9和0.999,一般只需要对学习率\alpha进行调参

学习率衰减

可以减小在接近收敛时的震荡,加快收敛速度

局部最优问题

因为深度学习中都是高维空间,在高维空间中几乎不会出现真正的局部最优点(需要所有维度上都是局部最小值或局部最大值),因此这个不是问题。

实际经常会出现的是鞍点,鞍点是指部分维度为局部最大值而部分维度是局部最小值,还有更多的维度并不是局部最值(所有维度梯度均为0的概率也是极低的)。这种情况下Adam等算法都可以帮助加速逃离鞍点。

超参调参

随机取点,从粗到细

正态随机

指数随机

有时候不能直接正态分布的随机取点,比如对于学习率和指数加权平均系数等,可以结合指数随机增加特定区域随机出的概率

batch normalization 批归一化

前面讲过训练集归一化,还可以进一步对中间输出进行归一化,同时为了避免值只能在(0,1)之间,增加了\gamma\beta两个可学习参数用于调整平均值

神经网络训练中应用归一化

在计算z之后对z进行归一化处理即可,β和γ均作为学习参数。通过归一化可以减少网络不同层的耦合,前一层网络的变化始终将输出保持一定范围内,减少了对后面网络层的影响。

由于归一化过程中输入会减掉平均值,所以在下面使用方式中z = wa+bb并没有用

作用

推理时处理归一化

由于实际推理时可能只有一个输入,没有平均值、方差等统计值,此时需要使用训练时得到的统计值,比如使用每个batch计算得到的μ和\sigma的指数加权平均。

Softmax regression 多类分类问题

输出层神经元个数与分类数量一致,各神经元输出之和为1。softmax的命名是跟hardmax相对的,hardmax是指输出中只有一个1,其他均为0。

损失函数

后向传播

训练框架TensorFlow

两种实现方式


http://www.niftyadmin.cn/n/5845347.html

相关文章

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…

在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。

在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。以下是详细的配置步骤: 一、环境准备 假设你有两台 MySQL 服务器: 主服务器(Master):IP 地址为 192.168.1.100,端口为 3306从服务器(Slave):IP 地址为 192.168.1.101,…

深入Linux系列之进程地址空间

深入Linux系列之进程地址空间 1.引入 那么在之前的学习中,我们知道我们创建一个子进程的话,我们可以在代码层面调用fork函数来创建我们的子进程,那么fork函数的返回值根据我们当前所处进程的上下文是返回不同的值,它在父进程中返…

web3D交互展示是什么?应用场景有哪些?

Web3D交互展示是利用Web3D技术,在网页上实现3D产品的全方位交互展示。用户可自由旋转、缩放及移动产品视角,从而深入了解产品的每一处细节与尺寸信息。以下是关于Web3D交互展示的详细解释: 一、定义与原理 定义:Web3D交互展示是…

远程 IO 模块:汽车零部件产线的高效生产引擎

在汽车零部件生产的激烈竞争中,效率与质量是企业立足的根本。传统生产模式在面对日益增长的市场需求时,逐渐显露出短板。而明达技术MR20远程 IO 模块的出现,如同一束强光,照亮了汽车零部件生产高效发展的新道路。 MR20远程 IO 模块…

【算法专场】分治(下)

目录 前言 归并排序 思想 912. 排序数组 算法思路 算法代码 LCR 170. 交易逆序对的总数 算法思路 算法代码 315. 计算右侧小于当前元素的个数 - 力扣(LeetCode) 算法思路 算法代码 493. 翻转对 算法思路 算法代码 好久不见~时隔多日&…

深入解析:用C语言实现数据结构中的数组

文章目录 1. 数组的基本概念2. C语言中的数组实现2.1 静态数组2.2 动态数组3. 数组的核心操作3.1 插入操作3.2 删除操作4. 高级数组应用4.1 多维数组4.2 稀疏数组5. 性能分析与优化6. 最佳实践6.1 安全操作建议6.2 调试技巧7. 总结1. 数组的基本概念 数组作为最基础的数据结构…

Continue 与 CodeGPT 插件 的对比分析

以下是 Continue 与 CodeGPT 插件 的对比分析,涵盖功能定位、适用场景和核心差异: 1. 功能定位 工具核心功能技术基础Continue专注于代码自动补全和上下文感知建议,支持多语言,强调低延迟和轻量级集成。基于本地模型或轻量级AI&a…