当前位置:网站首页>深度学习系列(二)优化器 (Optimization)
深度学习系列(二)优化器 (Optimization)
2022-08-05 05:16:00 【yiyexy】
梯度下降
在上一节中,我们已经提到了,我们最终估计一个模型他的拟合程度是通过成本函数计算结果来判断的。
因此我们很容易知道,当成本函数达到最小值时,我们的模型就达到了最优。因此,我们更新参数的目标应该是朝着减少成本函数值的方向前进。
这里我们可以用到一个数学上的概念去求成本函数的最小值。通过梯度来求解。当我们根据成本函数L求得了对参数W的偏导时,便可以根据公式:W := W- α \alpha αdW 对参数W进行更新。
其中, α \alpha α称为学习率,实际上你可以理解为W朝着梯度下降方向行走的步长。这里面梯度下降的具体原理,不过多解释,我们主要关注的是梯度下降的数据量问题。
在我们正常的模型训练中,我们通常是将所有样本放在一个矩阵中进行训练,但是当我们的数据集特别大的时候,往往会遇到这样的问题,每进行一次的梯度下降,我们就需要对所有样本集中求一次梯度。因此正确的参数更新如下:
因此,当我们的样本数量很大时,每一次迭代都会花费大量时间,这对电脑内存和时间都是个不小的压力。
随机梯度下降
针对上面的问题,有人就提出了随机梯度下降法(SGD,Stochastic Gradient Descent)。所谓的随机梯度下降,就是指每一次梯度下降,都不再是求出所有样本的平均损失值来进行梯度下降,而是随机选择一个样本进行训练,根据这个样本的损失值进行梯度下降。
这个方法听上去似乎解决了大内存的问题,但是实际上,这个方法有很多的弊端,首先迭代次数过多,参数修改过于频繁;其次,每次梯度下降都是根据一个样本的值进行的,而一个样本的值计算出来的梯度可能会有误差,导致了参数向着相反的方向前进。
因此,随机梯度下降法并不能很好的解决梯度下降问题,人们结合这两种方法的各自有缺点提出了批量梯度下降法的概念。
批量梯度下降法
结合前两种方法各自的优缺点,我们每次梯度下降时候使用一批样本进行,这样的一批样本被称为(mini batch)。
这样,既解决了多样本消耗内存的问题,由降低了仅一个样本梯度的波动。使用批量梯度下降法时,尽管在下降的过程中,还是有向着相反方向前进的错误,但是这种错误会少很多,且对最终结果影响不大。
边栏推荐
- [After a 12] No record for a whole week
- 【nodejs】第一章:nodejs架构
- ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
- 初识机器学习
- MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
- Flink和Spark中文乱码问题
- SQL (2) - join window function view
- 6k+ star,面向小白的深度学习代码库!一行代码实现所有Attention机制!
- 【Pytorch学习笔记】10.如何快速创建一个自己的Dataset数据集对象(继承Dataset类并重写对应方法)
- 基于STM32F407的WIFI通信(使用的是ESP8266模块)
猜你喜欢
【数据库和SQL学习笔记】3.数据操纵语言(DML)、SELECT查询初阶用法
四、Web场景之静态资源配置原理
ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
Redis集群(docker版)——从原理到实战超详细
【论文阅读-表情捕捉】ExpNet: Landmark-Free, Deep, 3D Facial Expressions
MaskDistill - Semantic segmentation without labeled data
神经网络也能像人类利用外围视觉一样观察图像
[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed
BFC详解(Block Formmating Context)
5G中切片网络的核心技术FlexE
随机推荐
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
CVPR 2020 - 频谱正则化
Tensorflow踩坑笔记,记录各种报错和解决方法
如何编写一个优雅的Shell脚本(二)
[Database and SQL study notes] 8. Views in SQL
MaskDistill - Semantic segmentation without labeled data
CAN、CAN FD
CVPR2021 - Inception Convolution with Efficient Dilation Search
【Pytorch学习笔记】10.如何快速创建一个自己的Dataset数据集对象(继承Dataset类并重写对应方法)
[Database and SQL study notes] 10. (T-SQL language) functions, stored procedures, triggers
网络信息安全运营方法论 (上)
【Pytorch学习笔记】11.取Dataset的子集、给Dataset打乱顺序的方法(使用Subset、random_split)
【数据库和SQL学习笔记】6.SELECT查询4:嵌套查询、对查询结果进行操作
神经网络也能像人类利用外围视觉一样观察图像
OSPF网络类型
[Practice 1] Diabetes Genetic Risk Detection Challenge [IFLYTEK Open Platform]
【Pytorch学习笔记】9.分类器的分类结果如何评估——使用混淆矩阵、F1-score、ROC曲线、PR曲线等(以Softmax二分类为例)
PoE视频监控解决方案
基于STM32F4的FFT+测频率幅值相位差,波形显示,示波器,时域频域分析相关工程
MySQL