2018-11-28
阅读量:
719
梯度下降的思想
假设我们拥有某个函数 f,这个函数输入一个实数向量,输出一个实数。一个简单的例子
如下:
def sum_of_squares(v):
"""computes the sum of squared elements in v"""
return sum(v_i ** 2 for v_i in v)
我们常常需要最大化(或最小化)这个函数。这意味着我们需要找出能计算出最大(或最
小)可能值的输入 v。
对我们的函数来说, 梯度(在微积分里, 这表示偏导数向量)给出了输入值的方向,在这
个方向上,函数增长得最快。(如果记不起微积分,用我提到的关键词上网查查。)
相应地,最大化函数的算法首先从一个随机初始点开始,计算梯度,在梯度方向(这是使
函数增长最快的一个方向)上跨越一小步, 再从一个新的初始点开始重复这个过程。同
样,你也可以在相反方向上逐步最小化函数
如果一个函数有一个全局最小点,那么这个方法很可能会找到它。如果这个
函数有多个(局部)最小点,那么这种方法可能找不到这个点,但你可以通
过多尝试一些初始点来重复运行这个方法。 如果一个函数没有最小点,也许
计算会陷入死循环。
0.0000
0
5
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论