本文主要是对自己初学梯度下降法(Gradient descent,GD)过程的一个小结,如有理解偏颇,万分感激高手点拨。
1 梯度下降法基础知识
鉴于这些基础知识前人已经介绍过很多,可以参考梯度下降算法原理讲解——机器学习和利用梯度下降法实现线性回归的算法及matlab实现,在此仅强调如下:
用大学高数的知识记住,梯度:
1)单变量的函数(如 f ( x ) = x 2 f(x)=x^2 f(x)=x2),梯度就是函数的导数: d f ( x ) d x = 2 x \frac{
{df(x)}}{
{dx}} = 2x dxdf(x)=2x,如果这个导数在某一区间内为正,则函数在这个区间内递增,反之递减(也即所谓的梯度下降);
2)多变量的函数(如 f ( x 1 , x 2 , x 3 ) = 5 x 1 2 + 12 x 2 3 − 2 x 3 4 f(x_1,x_2,x_3)=5{x_1}^2+12{x_2}^3-2{x_3}^4 f(x1,x2,x3)=5x12+12x23−2x34): 梯度就是函数的各个偏导数 ⟨ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ∂ f ∂ x 3 ⟩ = ⟨ 10 x 1 , 36 x 2 2 , 8 x 3 3 ⟩ \left\langle {\frac{
{\partial f}}{
{\partial {x_1}}},\frac{
{\partial f}}{
{\partial {x_2}}},\frac{
{\partial f}}{
{\partial {x_3}}}} \right\rangle = \left\langle {10{x_1},36x_2^2,8x_3^3} \right\rangle ⟨∂x1∂f,∂x2∂f,∂x3∂f⟩=⟨10x1,36x22,8x33⟩;
2 具体案例
废话不多说了,直接上个小案例。
-
问题
给你一组统计得到的数据集:
x = [ 25 , 27 , 31 , 33 , 35 ] ; x=[25,27,31,33,35]; x=[25,27,31,33,35];
y = [ 110 , 115 , 155 , 160 , 180 ] ; y=[110,115,155,160,180]; y=[110,115,155,160,180];
其图像如下:

采用最基本的线性回归方法对其进行拟合:
回归模型: y ^ = a x + b \hat y = ax + b y^=ax+b,其中 y ^ \hat y y^是利用这个回归模型估计到的 y y y值,( y ^ − y \hat y-y y^−y代表估计误差), a a a和 b b b是我们选择的这个模型的未知参数;
现在需要根据上面得到的数据集求出这两个未知参数: a a a和 b b b。 -
定义代价函数
一般选用估计误差的均方差作为代价函数:
J = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 = 1 n ∑ i = 1 n ( a x i + b − y i ) 2 J{\rm{ = }}\frac{1}{n}\sum\limits_{i = 1}^n { { {(\hat y_i - y_i)}^2}} = \frac{1}{n}\sum\limits_{i = 1}^n { { {(ax_i + b - y_i)}^2}} J=n1i=1∑n(y^i−yi)2=n1i=1∑n(axi+b−yi)2
其中 n n n代表样本点数,例如上述数据集的 n = 5 n=5 n=5。
注意:根据代价函数中所使用的的样本点数多少,梯度下降法大家族,还分为批量(batch)梯度下降法、随机梯度下降法和小批量梯度下降法,本文所用为批量(batch)梯度下降法,其余两种很简单不再赘述。
-
目标
通过让估计误差最小(也即让上述代价函数

本文介绍了梯度下降法的基础知识,通过一个线性回归的MATLAB案例来演示其在求解模型参数中的应用。文章详细阐述了代价函数、参数更新规则,并讨论了数据归一化的重要性以及反归一化的过程。
最低0.47元/天 解锁文章
1869

被折叠的 条评论
为什么被折叠?



