文章插图
令:
文章插图
这是一个自变量是α的函数,我们将其命名为方向导数,其表明随着α的不同,方向不同,函数的变化率不同 。
至此,我们推出了,方向导数的概念,还记得我们的梯度下降算法的第二步是什么吗?
”找到相对于该位置而言下降最快的方向“
而我们的方向导数,本身代表的就是函数变化率与方向的关系,也就是说我们需要利用方向导数,找到使得函数变化率最大的方向
那么,问题来了,在哪一个方向上变化率最大呢?
寻找函数变化率最大的方向-梯度
我们可以这样改写,令:
文章插图
则:
文章插图
θ是两个向量的夹角
显然,当θ=0时,取得最大方向导数,也就说随着α的改变,当两个向量A和I是平行的时候,取得最大方向导数,而此时I的方向就是下式的方向:
文章插图
我们把上式称之为梯度,所以梯度方向是函数变化率最大的方向,更本质的说是函数增长最快的方向
所以,当我们需要最小化损失函数时,只需要使损失函数沿着负梯度前行,就能使损失函数最快下降 。
更高元函数
二元函数的推导结论同样可作用于更高元的函数 。
所以,高元函数在某点的梯度就是对每一个自变量求偏导,组成的一个向量,在该点的取值,该向量的方向就是函数在该点处增长最快的方向,显然,其负方向就是函数减少最快的方向
以下面的函数举个例子,这是一个有n+1个自变量的函数,自变量是θ:
文章插图
首先呢,随机化一个我们梯度下降的初始位置,全部为0吧,当然在神经网络中可不能如此随意:
文章插图
计算梯度,对每一个自变量求偏导:
文章插图
将初始化的值0,代入上式梯度,就可以得到一个具体的向量,为什么是一个具体的向量呢?这个你要自己想想了
而该向量的方向就是函数在该点增长最快的方向
那么,显然,我们需要往其负方向走一段距离,可是,如何往负方向走呢?其实一样的道理,该负方向同样将其分解到各个自变量的维度上,即其更新过程可写成:
文章插图
式中的减号表示往梯度的负方向改变
а为学习率,是一个大于0的数,它能控制沿着该方向走多长一段距离,不是步长
什么才是真正的步长?
一个式子说明足以,将当前位置θ代入下式,就是在该点处梯度下降的步长:
文章插图
所以步长是一个有方向和模长的矢量,当然也是符合我们直观上的理解的,你总要确定往哪个方向走以及步子迈多大 。
应用:线性回归的梯度下降解法首先,我们给出线性回归的损失函数,为了方便,不带正则项:
文章插图
其中:
文章插图
文章插图
其更新过程可写成:
文章插图
具体的梯度下降流程:
第一步:先随便假设一组θ,你要是喜欢可以全部取0
第二步循环迭代:
第一次迭代:
文章插图
文章插图
.......
文章插图
推荐阅读
- 国密算法在数据存储中的安全应用
- 直通车点击转化率多少正常 直通车转化率突然下降了很多
- 图解机器学习:人人都能懂的算法原理
- 超级推荐点击率突然下降 超级推荐点击率要达多少及格
- KMP算法的原理和实现
- 人工智能编程:如何可视化神经网络算法模型的训练过程?
- 详细解释,从入门到实践,逐步讲解 经典中的经典算法,动态规划
- 分布式系统ID的生成方法之UUID、数据库、算法、Redis、Leaf方案
- 飓风算法3.0即将上线,控制跨领域采集及站群问题
- 养肝护肝10原则