梯度下降
Posted slamforwindows
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梯度下降相关的知识,希望对你有一定的参考价值。
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。
简介
梯度:对于可微的数量场
,以 为分量的向量场称为f的梯度或斜量。 [1] 梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型。
求解过程
![技术分享图片](https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D118/sign=65c70ae8778da9774a2f822a8850f872/63d0f703918fa0ec27adadd6229759ee3c6ddb87.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D22/sign=d2fd6faed288d43ff4a996f07f1e7b9a/63d0f703918fa0ec2604acd6229759ee3c6ddb2e.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D15/sign=617e99e2cd3d70cf48faae08f9dc6b5d/a8014c086e061d95143bfce37ff40ad163d9cae8.jpg)
例如
举一个非常简单的例子,如求函数
![技术分享图片](https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D64/sign=d982d3abd71b0ef468e89b5adcc476a4/f603918fa0ec08fa2c7d88225cee3d6d55fbda32.jpg)
的最小值。利用梯度下降的方法解题步骤如下:
![技术分享图片](https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D47/sign=a80e2821a1c27d1ea1263ac31ad57898/f603918fa0ec08fa2d0c89225cee3d6d55fbda23.jpg)
![技术分享图片](https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D9/sign=73cdb460a86eddc422e7b8ca392a1a/908fa0ec08fa513d5baef65b386d55fbb2fbd92b.jpg)
,如下
![技术分享图片](https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D90/sign=ed483fe79d22720e7fceeefa7acbeb20/f11f3a292df5e0fe7d9a1384596034a85fdf72b1.jpg)
![技术分享图片](https://gss0.bdstatic.com/94o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D13/sign=ea96623dd13f8794d7ff4c2dd31b7a3a/908fa0ec08fa513d5e44ed5b386d55fbb3fbd94d.jpg)
![技术分享图片](https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D9/sign=d8aabae0b619ebc4c4787aa882f5b9/2934349b033b5bb56871a57b33d3d539b700bc95.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D32/sign=d9105891bd99a9013f355d341c958d85/7dd98d1001e93901e71f09bb7eec54e736d19612.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D32/sign=d9105891bd99a9013f355d341c958d85/7dd98d1001e93901e71f09bb7eec54e736d19612.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D32/sign=d9105891bd99a9013f355d341c958d85/7dd98d1001e93901e71f09bb7eec54e736d19612.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D9/sign=72fb84642a2eb938e86d76c3d57e39/38dbb6fd5266d0162f3819ad922bd40735fa3515.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D9/sign=72fb84642a2eb938e86d76c3d57e39/38dbb6fd5266d0162f3819ad922bd40735fa3515.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D32/sign=d9105891bd99a9013f355d341c958d85/7dd98d1001e93901e71f09bb7eec54e736d19612.jpg)
![技术分享图片](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D9/sign=72fb84642a2eb938e86d76c3d57e39/38dbb6fd5266d0162f3819ad922bd40735fa3515.jpg)
%% 最速下降法图示
% 设置步长为0.1,f_change为改变前后的y值变化,仅设置了一个退出条件。
syms x;f=x^2;
step=0.1;x=2;k=0; %设置步长,初始值,迭代记录数
f_change=x^2; %初始化差值
f_current=x^2; %计算当前函数值
ezplot(@(x,f)f-x.^2) %画出函数图像
axis([-2,2,-0.2,3]) %固定坐标轴
hold on
while f_change>0.000000001 %设置条件,两次计算的值之差小于某个数,跳出循环
x=x-step*2*x; %-2*x为梯度反方向,step为步长,!最速下降法!
f_change = f_current - x^2 %计算两次函数值之差
f_current = x^2; %重新计算当前的函数值
plot(x,f_current,‘ro‘,‘markersize‘,7) %标记当前的位置
drawnow;pause(0.2);
k=k+1;
end
hold off
fprintf(‘在迭代%d次后找到函数最小值为%e,对应的x值为%e\\n‘,k,x^2,x)
缺陷
-
靠近极小值时收敛速度减慢。
-
直线搜索时可能会产生一些问题。
-
可能会“之字形”地下降。
以上是关于梯度下降的主要内容,如果未能解决你的问题,请参考以下文章