Gradient Descent算法
续上文。
gradient descent的用途:
可以用于求解一个函数 f(x1,x2,......xn) 的local 最小值。
关于local最小值:
一个函数可能有多个local最小值,所谓local最小值是当给定( x1,x2,......xn )的某一个实例,如果在该实例的无限小的附近的任何一个实例的 f 值都大于该实例的
f 值,那么该实例所对应的就是 f 的一个local最小值。
gradient descent算法求解local最小值的方法如下:
任意给定(
x1,x2,......xn )的一个实例,简写为 x∗ ,那么将 x∗ 朝着 ∇f(x∗) (注:是一个n维向量)的反向方向移动一个足够小的值,得到 x∗−r∇f(x∗) ,其中 r 是一个足够小的数值,会使得f(x∗−r∇f(x∗)) 的值比 f(x∗) 一定会更小。通过这种方法不断的迭代计算新的 x 的值,最终能得到local的最小值。
如果回想函数的gradient的定义,就能自然的理解gradient descent算法:
gradient反映的是因变量对自变量的变化的敏感性以及正负相关性,这里我们利用的是正负相关性,也就是说当
∇f(x∗) 为正时,说明当 x 从x∗ 向负向移动一个足够小的值时, f 的值会减小;并且,当∇f(x∗) 为负时,说明当 x 从x∗ 向正向移动一个足够小的值时, f 的值会减小。因此,只要将x 从 x∗ 朝着 ∇f(x∗) 的反向方向移动一个足够小的值,就会导致 f <script type="math/tex" id="MathJax-Element-78">f</script>值减小。
如果还不能理解这段话,说明应该回过头去再好好理解下gradient的基本概念了。