ML三个基础的步骤:
- find a model
- goodness of function
- get the best function
Gradient Descent是 step3 常用的方法。
它要求loss function是可微分的。
怎么做Gradient Descent呢?通常有下面几个步骤:(这里以loss function有一个参数为例)
对 L(w):
我们的目的是得到最小的L(w)
首先,(Randomly) Pick an initial value
接下来计算w对L(w)的微分:Compute
换句话说,就是找切线的斜率
假设切线的斜率是负的,那么曲线就是左边高,右边低,w就应该往右边移动,才能让Loss变小;反之,如果斜率是正的,则应该往左边移动,减小w。
将这个过程用数学公式表达出来就是,其中η被称为learning rate。
这个参数可以手动设置,表示学习速度,即w变化时的跨度。
接下来,重复这个过程.....Many iteration......
直到的微分等于0,没法再继续移动。
但是,有一个问题
如图,当w走到 local minima 或者 saddle point 甚至是 plateau 时, 微分是等于0或者约等于0的,w也就停在这了。也就是说,Gradient Descent 不能保证找到的是global minima。你在不同的地方起始,可能得到不同的结果。
当然,在简单的Linear Model中,这个问题是不怎么需要担心的。
如果Loss function有两个参数呢?
多个参数时,原理和步骤和一个参数时类似。
PS:学习笔记,用于自己学习