梯度下降
最后发布时间 : 2023-10-02 15:48:57
浏览量 :
- Gradient Descent主要用于Regression中减少loss值
- 只要Loss function可微分,就可以使用Gradient Descent解出Loss值最小时参数的取值
- Linear model:y = b + \sum w_ix_i,其中x_i叫作fature,w_i叫作weight,b叫作bias
Example Application
假设要根据目前pokemon的战斗力值,预测进化后的战斗力值(Combat power) f(x_{cp}) = y_{cp}
步骤:
- 找一个model。model就是function的集合,eg.y=b+w \cdot x_{cp} (x_{cp}是进化前的战斗力,y是进化后的战斗力),可以找出许多的
w
和b
- 从function set中找出一个function,评价该function的performance
- 找一个最好的function
现有10只pokemon training data:
用Loss function L,定义一个function的好坏
- input: a function eg.f(x)=b+w \cdot x_{cp}, output: how bad it is
L(f) = L(w,b)
\\=\sum_{n=1}^{10}(y_n-(b+w \cdot x_n))^2
pick the Best function
穷举所有的参数w,b,看哪一个w,b带入L(w,b)让loss最小。
f^* = \argmin_f L(f)
\\w^*,b^*=\argmin_{w,b} L(w,b)
\\=\argmin_{w,b}
\sum_{n=1}^{10}(y_n-(b+w \cdot x_n))^2
使用Gradient Descent解\argmin_f L(f)
首先只考虑一个参数的Loss function,w^*=\argmin_{w} L(w),找一个w^*让L(w)最小
- 随机选取一个初始值w_0
- 计算在w=w_0这个位置,参数w对loss function的微分\frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0}
- 微分值是负值,增加w_0的值,向右边移动;微分值是正值,减少w_0的值,向左边移动
- w_0增加或减少的数值的计算: \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0},\eta叫作learning rate是事先定义好的数值
- 将w_0更新为w_1,w_1 \leftarrow w_0 - \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0}
- 将w_1更新为w_2,w_2 \leftarrow w_1 - \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_1}
- 如果有
Local minima
,Gradient Descent不能找到global minima
两个参数的Loss function,w^*,b^*=\argmin_{w,b} L(w,b),找出w^*,b^*让L(w,b)最小
- 随机选取初始值w_0,b_0
- 计算在w=w_0,b=b_0w对loss 的偏微分和b对loss的偏微分\frac{\partial L }{\partial w}|_{w=w_0,b=b_0},\frac{\partial L}{\partial b}|_{w=w_0,b=b_0}
- 更新w_0,b_0这两个参数
w_1 \leftarrow w_0 - \eta \frac{\partial L}{\partial w}|_{w=w_0,b=b_0}
\quad
b_1 \leftarrow b_0 - \eta \frac{\partial L}{\partial b}|_{w=w_0,b=b_0}