深度学习优化函数详解系列目录

本系列课程代码,欢迎star:
https://github.com/tsycnh/mlbasic

深度学习优化函数详解(0)-- 线性回归问题
深度学习优化函数详解(1)-- Gradient Descent 梯度下降法
深度学习优化函数详解(2)-- SGD 随机梯度下降
深度学习优化函数详解(3)-- mini-batch SGD 小批量随机梯度下降
深度学习优化函数详解(4)-- momentum 动量法
深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
深度学习优化函数详解(6)-- adagrad

本文延续该系列的上一篇 深度学习优化函数详解(1)-- Gradient Descent 梯度下降法

上文讲到的梯度下降法每进行一次 迭代 都需要将所有的样本进行计算,当样本量十分大的时候,会非常消耗计算资源,收敛速度会很慢。尤其如果像ImageNet那样规模的数据,几乎是不可能完成的。同时由于每次计算都考虑了所有的训练数据,也容易造成过拟合。在某种程度上考虑的太多也会丧失 随机性 。于是有人提出,既然如此,那可不可以每一次迭代只计算一个样本的loss呢?然后再逐渐遍历所有的样本,完成一轮(epoch)的计算。答案是可以的,虽然每次依据单个样本会产生较大的波动,但是从整体上来看,最终还是可以成功收敛。由于计算量大大减少,计算速度也可以极大地提升。这种逐个样本进行loss计算进行迭代的方法,称之为 Stochasitc Gradient Descent 简称SGD。

注:目前人们提到的SGD一般指 mini-batch Gradient Descent,是经典SGD的一个升级。后面的文章会讲到。

我们再来回顾一下参数更新公式。每一次迭代按照一定的 学习率

等高线图和loss图都很明显的表现了SGD的特点。总体上收敛,局部有一些震荡。

由于加入了随机的成分,有的时候可能算法有一点点走偏,但好处就是对于一些局部极小点可以从坑中跳出,奔向理想中的全局最优。

实验代码下载: https://github.com/tsycnh/mlbasic/blob/master/p2 origin SGD.py

深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 深度学习优化函数详解(3)– mini-batch SGD 小批量随机梯度下降 深度学习优化函数详解(4)– momentum 动量法 深度学习优化函数详解(5)– Neste...
之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD、 SGD 、MBGD,它们的不同之处在于我们使用多少数据来计算目标 函数 的梯度。 大多数 深度学习 算法都涉及某种形式的 优化 优化 指的是改变x以最小化或最大化某个 函数 f(x)的任务。我们通常以最小化f(x)指代大多数最 优化 问题。我们把要最小化或最大化的 函数 称为目标 函数 (objective function)或准则(cr...
1)Batch gradient descent(批量梯度下降)   在整个数据集上   每更新一次权重,要遍历所有的样本,由于样本集过大,无法保存在内存中,无法线上更新模型。对于损失 函数 的凸曲面,可以收敛到全局最小值,对于非凸曲面,收敛到局部最小值。 随机梯度下降 SGD )和批量梯度下降(BGD)的区别。 SGD 从数据集中拿出一个样本,并计算相关的误差梯度,而批量梯度下降使用所有... https://crazyang.blog.csdn.net/article/details/84618536 1、关于 SGD 算法: 随机梯度下降 算法的出现是因为,BGD的 迭代 速度在大数据量下会变得很慢,因为它每次 迭代 都是用的是所有的数据样本。而 SGD 一次 迭代 只需要使用一个样本。可以根据这一个样本来计算梯度。 # 随机梯度下降 SGD # 拟合 函数 为:y = theta * x # 代价 函数 为:J = 1 / (2 * m) * ((theta * x) - y) * ((theta * x) - BP算法(Back Propagation) BP算法其实和梯度下降是一样的,只不过是应用于深层网络。 BP算法的核心思想:使用梯度下降来搜索可能的权向量W的假设空间,以找到最佳的拟合样例的权向量。即利用损失 函数 ,每次向损失 函数 负梯度方向移动,直到损失 函数 取得最小值。 对下图使用BP算法,根据loss_function,反向传播,不断 优化 神经网络中的权重W, V
sgd 随机梯度下降 是一种机器学习中常用的 优化 算法,适用于大规模数据集。与传统梯度下降算法不同的是, sgd 每次只随机选取一个样本进行梯度计算和参数更新,而不是计算所有样本的梯度。这样做在一定程度上缓解了内存和计算资源的压力,降低了训练时间,但也可能导致收敛速度慢和结果不稳定等问题。 在MATLAB中,可以使用自带的 sgd Solver 函数 实现 sgd 随机梯度下降 算法。该 函数 需要输入训练数据和标签、网络结构、代价 函数 、学习率和 迭代 次数等参数,同时也支持设置batch大小和损失的收敛阈值等选项。使用 sgd Solver进行训练时,需要注意选择合适的超参数和代价 函数 ,为防止过拟合还可以采用正则化等技巧,同时也需要对结果进行评估和调优。 总的来说, sgd 随机梯度下降 是一种较为实用的机器学习 优化 算法,在大规模数据集下表现良好。使用MATLAB中的 sgd Solver 函数 可以快速实现该算法,但需要注意超参数选择和结果评估等问题。
“Failed to get convolution algorithm. This is probably because cuDNN failed to initialize”错误的解决办法 55285 高性能服务器: 从名字上来看,熵给人一种很玄乎,不知道是啥的感觉。其实,熵的定义很简单,即用来表示随机变量的不确定性。之所以给人玄乎的感觉,大概是因为为何要取这样的名字,以及怎么用。 熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。在信息论里面,熵是对不确定性的测量。 Keras 入门课6 -- 使用Inception V3模型进行迁移学习 hsc_hlh: 为什么我debug了没有显示layer 表情包