您的当前位置:首页正文

【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

2024-11-05 来源:个人技术集锦

梯度下降法

  • 从一个随机点开始
  • 决定下降方向(重要)
  • 确定步长(重要)
    • 太小: 迭代太多次,消耗过多资源
    • 太大: 容易越界,不稳定
  • 不断更新,直到符合停止标准
    • e.g. 变化足够小
      ∣ f ( w 0 ) − f ( w 6 ) ∣ < e = 1 0 − 3 |f(w0) - f(w6)| < e = 10^{-3} f(w0)f(w6)<e=103

凸函数(convex)和非凸函数

凸函数:最小二乘,岭回归,逻辑回归…

梯度更新方向选择

更新规则:
w i + 1 = w i − α i d f d w ( w i ) w_{i+1} = w_i - α_i\frac{df}{dw}(w_i) wi+1=wiαidwdf(wi)
-dw : 斜率的负数,决定更新的方向
如果 -dw > 0 则往左走
如果 -dw < 0 则往右走
α : 步长

公式推导:
Loss :
f ( x ) = ∣ ∣ w x − y ∣ ∣ 2 2 f(x) = ||wx - y||^2_2 f(x)=∣∣wxy22
求导:
d f d w ( w ) = 2 ∣ ∣ w x − y ∣ ∣ 2 \frac{df}{dw}(w) = 2||wx-y||_2 dwdf(w)=2∣∣wxy2
梯度更新:
w i + 1 = w i − α ∣ ∣ w x − y ∣ ∣ w_{i+1} = w_i - α||wx -y|| wi+1=wiα∣∣wxy∣∣

步长的选择

α i = α n i α_i = \frac{α}{n\sqrt{i}} αi=ni α

α : 常量
n : 训练集数量
i : iteration 迭代次数
随着迭代次数增加,步长越来越小。

随机梯度下降SGD(Stochastic Gradient Descent)

梯度下降法:

w i + 1 = w i − α i ∑ j = 1 n ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i\sum^n_{j=1}(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαij=1n(wiTx(j)y(j))x(j)
空间复杂度: O(nk)

SGD:

随机样本计算梯度,如果全部样本都计算梯度,计算量过大
w i + 1 = w i − α i ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαi(wiTx(j)y(j))x(j)
空间复杂度: O(k) 【取消了sum】
w i + 1 = w i + α i ▼ f j ( w i ) w_{i+1} = w_i + α_i▼f_j(w_i) wi+1=wi+αifj(wi)

j 表示随机抽取的样本

  • 优点:
    • 每次更快,计算量更少
  • 缺点:
    • 需要迭代更多次

Mini-batch SGD

w i + 1 = w i − α i ∑ j ∈ B n ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i\sum^n_{j∈B}(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαijBn(wiTx(j)y(j))x(j)

只计算最小batch的梯度更新

  • 优点
    • 比SGD更大的计算量
    • 比GD更小的计算量
  • 缺点
    • 多了一个参数 batch size
显示全文