ML中的梯度下降

1. 梯度下降

以最小二乘为例, 损失函数为:
L(\mathbf{w})=\frac{1}{2}\sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)^2
w_j 求导得到:
\begin{align} \frac{\partial{L(\mathbf{w})}}{\partial w_j}&=\sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)x_{ij} \\ &=\sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)x_{ij} \end{align}
表示称向量形式如下:

\frac{\partial{L(\mathbf{w})}}{\partial \mathbf{w}}=\begin{bmatrix} \sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)x_{i1} \\ \sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)x_{i2} \\ \vdots \\ \sum_{i=1}^N(\mathbf{w}^T\mathbf{x}_i-y_i)x_{iD} \end{bmatrix}_{D\times1}

\mathbf{w} 的更新如下:
\mathbf{w}\leftarrow \mathbf{w}-\alpha \frac{\partial{L(\mathbf{w})}}{\partial \mathbf{w}} \tag{2}

2. mini-batch梯度下降

每次随机选取 m 个观测值来更新权重:
\frac{\partial{L(\mathbf{w})}}{\partial \mathbf{w}}=\begin{bmatrix} \sum_{i=k}^{k+m}(\mathbf{w}^T\mathbf{x}_i-y_i)x_{i1} \\ \sum_{i=k}^{k+m}(\mathbf{w}^T\mathbf{x}_i-y_i)x_{i2} \\ \vdots \\ \sum_{i=k}^{k+m}(\mathbf{w}^T\mathbf{x}_i-y_i)x_{iD} \end{bmatrix}_{D\times1}
这样可以看做每次都用一个不同的损失函数:
L_k(\mathbf{w})=\frac{1}{2}\sum_{i=k}^{k+m}(\mathbf{w}^T\mathbf{x}_i-y_i)^2 \tag{4}

3. 随机梯度下降 (SGD)

每次通过一个观测值 (\mathbf{x}_i,y_i) 来更新权重:
\frac{\partial{L(\mathbf{w})}}{\partial \mathbf{w}}=\begin{bmatrix} (\mathbf{w}^T\mathbf{x}_i-y_i)x_{i1} \\ (\mathbf{w}^T\mathbf{x}_i-y_i)x_{i2} \\ \vdots \\ (\mathbf{w}^T\mathbf{x}_i-y_i)x_{iD} \end{bmatrix}_{D\times1} \tag{5}
这样可以看做每次都用一个不同的损失函数:
L_i(\mathbf{w})=\frac{1}{2}(\mathbf{w}^T\mathbf{x}_i-y_i)^2 \tag{6}

4. 总结

从上面可以看出不同的更新权重的方式其实可以看做选取了不同的损失函数

ref:

  1. cs229-notes1
  2. What's the difference between gradient descent and stochastic gradient descent
  3. 几种梯度下降方法对比
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容