梯度下降学习总结

1.梯度的理解

在机器学习过程中,经常使用梯度下降方法求解损失函数的最小值。梯度的值为函数在某一点,沿着各向量方向的偏导数。沿着梯度相反的方向,函数减小最快,更容易找到函数的最小值。

2.梯度下降法的矩阵表示

函数的表达式为$h_\theta(X)=X\theta$,损失函数的表达式为$J(\theta)=\sum_{i=1}^m(h_\theta(x_i)-y_i)^2$,其矩阵表达式为$J(\theta)=\frac{1}{2}(X\theta-Y)^T(X\theta-Y)$,损失函数对于$\theta$向量的偏导数为$\frac{\partial}{\partial\theta}J(\theta)=X^T(X\theta-Y)$。

3.权重计算:使用全部样本、使用部分样本

全部样本算权重

1 h = sigmoid(dataMatrix * weights)
2 error = labelMat - h
3 weight = weight + alpah * error * dataMatrix.transpose()

一个样本算权重

1 h = sigmoid(sum(dataMatrix[i] * weights))
2 error = classLabel[i] - h
3 weight = weight + alpha * error * dataMatrix[i]

 h是sigmoid函数的值,error是算出来的值与label之间的误差,然后使用alpha系数、误差、输入更新权重的值。

此方法没有使用梯度的计算值,而是使用alpha、error、输入值,更新权重。

4.数值梯度与解析梯度

理论推导使用解析梯度,在工程计算中,常使用数值梯度进行计算。

5.梯度下降的代数方式描述

5.1损失函数

假设函数表示为$h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1 x_1+...+\theta_n x_n$,其中$\theta_i(i=0,1,2,...,n)$为模型参数,$x_i(i=0,1,2,...,n)$为每个样本的n个特征值。这里增加一个特征$x_0 = 1$,即可表示为$h_\theta(x_0,x_1,...,x_n)=\sum_{i=0}^m\theta_ix_i$,对于上面的函数,损失函数如下。

$$J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{j=0}^m(h_\theta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y_i)^2$$

5.2相关参数

主要参数为$\theta_0,\theta_1,...,\theta_n$,算法终止距离$\epsilon$以及步长$\alpha$。

5.3算法过程

1)确定梯度

确定当前位置的损失函数的梯度,对于$\theta_i$,其梯度表达式为$\frac{\partial}{\partial\theta_i}J(\theta_0,\theta_1,...,\theta_n)$

2)步长乘以梯度

用步长乘以损失函数的梯度,得到当前位置下降的距离,即

$\alpha\frac{\partial}{\partial\theta_i}J(\theta_0,\theta_1,...,\theta_n)$,为梯度下降中的关键一步

3)检查终止条件

确定是否所有$\theta_i$梯度下降的距离都小于$\epsilon$,如果小于$\epsilon$则算法终止,当前所有$\theta_i(i=0,1,...,n)$即为最张结果,否则进行第4步。

4)更新参数

更新所有$\theta$,对于$\theta_i$,其更新方式为$\theta_i=\theta_i-\alpha\frac{\partial}{\partial\theta_i}J(\theta_0,\theta_1,...,\theta_n)$

 

posted @ 2019-07-31 16:26  hi_heisen  阅读(383)  评论(0编辑  收藏  举报