展开

梯度下降

最后发布时间 : 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}

步骤:

  1. 找一个model。model就是function的集合,eg.y=b+w \cdot x_{cp} (x_{cp}是进化前的战斗力,y是进化后的战斗力),可以找出许多的wb
  2. 从function set中找出一个function,评价该function的performance
  3. 找一个最好的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)最小

  1. 随机选取一个初始值w_0
  2. 计算在w=w_0这个位置,参数w对loss function的微分\frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0}
  3. 微分值是负值,增加w_0的值,向右边移动;微分值是正值,减少w_0的值,向左边移动
  4. w_0增加或减少的数值的计算: \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0}\eta叫作learning rate是事先定义好的数值
  5. w_0更新为w_1w_1 \leftarrow w_0 - \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_0}
  6. w_1更新为w_2w_2 \leftarrow w_1 - \eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w_1}
  7. 如果有Local minima,Gradient Descent不能找到global minima

两个参数的Loss function,w^*,b^*=\argmin_{w,b} L(w,b),找出w^*,b^*L(w,b)最小

  1. 随机选取初始值w_0,b_0
  2. 计算在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}
  3. 更新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}

参考:
https://b23.tv/eDrSMt