思路
模型定义,如假设模型为$y=w \cdot x$
损失函数:$MSE = \frac{1}{N}\sum_{i=1}^{N}(w\cdot x_i - y_i)^2$
梯度计算:$\frac{\partial \text{MSE}}{\partial w} = \frac{2}{N} \sum_{i=1}^{N} x_i \cdot (w \cdot x_i - y_i)$
- 推导:$\frac{\partial (wx_i-y_i)^2}{\partial w} = 2x_i(wx_i-y_i)$
更新$w$: $w_{new} = w_{old}-\alpha \cdot \frac{\partial MSE}{\partial w}$
开始训练
数学推导
- 单变量,如$f(x)=\frac{1}{2}x^2\Longrightarrow \nabla x=\frac{\partial f(x)}{\partial x}=x$
- 多变量,如$f_1(\theta)=2\theta_1^2+3\theta_2^2+4\theta_3^2\Longrightarrow \nabla \theta = (4\theta_1,6\theta_2,8\theta_3)$
- 迭代公式:$x^{k+1}=x^k - \lambda\nabla f(x^k)$1
- 由一阶泰勒展开,假设当前参数为$x^k$,在附近寻找一个更小的函数值$f(x^{k+1})$,可近似为$f(x^{k+1})\approx f(x^k)+\nabla f(x^k)^T(x^{k+1}-x^k)$
- 为了最小化$f(x^{k+1})$,需要选择$x^{k+1}$使得:$x^{k+1}-x^k=-\lambda\nabla f(x^k)$
代码实现
|
|
在梯度下降法中,参数最终只能逼近理论最优值而不会完全等于它.因为导数为零的点是理论解,实际计算中梯度只能趋近于零,但不会严格为零
损失函数(Loss Function)和代价函数(Cost Function)经常交叉使用,但是损失函数是用于衡量模型对单个样本的预测值与真实值之间的差异,代价函数是用于衡量模型对整个训练集的预测值与真实值之间的总体误差。
这里的$x^k$表示第$k$次迭代,与幂运算无关 ↩︎