梯度下降算法
- 深度学习中梯度下降算法简介
- 找极小值问题
- 数学上求最小值
- 梯度
- 梯度下降算法
- 找极小值问题在深度学习流程中
- 深度学习整体流程图
- 求解损失函数的目标
- 权重的更新
深度学习中梯度下降算法简介
找极小值问题
引子: 我们训练一个人工智能模型,简单点说,就是根据数据,调整模型的参数,使模型预测的值和我们数据的值一样。但一开始肯定不一样,所以我们引入损失函数,用它来计算,还差多少;差多少我们求出来,我们怎么调整原有模型里面的参数呢?
哎! 调整原有模型的参数目的就是为了使得预测的值和要求值一样嘛,是不是求一个模型参数可以使得计算出的预测值和要求值之间的差距最小呢?===》这就是找极小值问题
所以本质上就是求损失函数的极小值。
数学上求最小值
拆解示意:
目标: 找到合适的x值,使得f(x)最小。
逻辑
1.任取一点x0,计算在这一点的导数值f(x0)
2.根据导数的正负,决定x0应当调大还是调小;导数为正,那么就调小x;因为增大,y也会增大;导数为负,增大x
3.迭代进行1,2步直到导数为0;或者导数变号了。
什么情况下导数为变号?
那就函数的值,之前在减小,现在在增大了,所以导数就会编号,那么最小值就在其中(救赎之道,就在其中)
梯度
梯度: 可以直接理解就是导数,只是在深度学习中,通常不是一个导数,即对多元函数进去求导。
举个例子:
一元函数:
原函数:y=5x^2
导函数:y= 10x
即在x=1时,导数值为10
多元函数
三元函数:y=2x^2 + 6z^2 + 7m^3
导函数(即对三个未知数进行偏导求解):y={4x,12z,21m^2}
在[1,1,1]处的梯度为[4,12,21];并且梯度是个向量
都是对函数进行求导,可以用导数去理解梯度
梯度下降算法
释义: 梯度下降算法就是计算出模型在输入数据的梯度,然后通过学习率对模型原有的权重参数进行更新的一个逻辑,其中使用的算法有多类,我们会介绍到
找极小值问题在深度学习流程中
深度学习整体流程图
如下示意图即为深度学习的流程图,其中找极小值问题价值就对应着损失函数–>优化器–>模型
求解损失函数的目标
1.损失函数越小,模型越好
2.学习的目标就是损失函数最小化
3.模型的权重影响损失函数
4.通过梯度下降来找最优权重
权重的更新
更新的逻辑
1.根据输入的x与模型当前的权重,计算预测值y1
2.根据y1和y使用loss函数算计loss
3.根据loss计算模型的权重的梯度
4.使用梯度和学习率,根据优化器来调整模型的权重
更新的方式:
1.所有的样本一起计算梯度(累加)Gradient descent
2.每次使用一个样本计算梯度 Stochastic gradient descent
3.每次使用n个样本计算梯度(累加)Mini-batch gradient descent