梯度下降算法理论知识我们给出一组房子面积,卧室数目以及对应房价数据,如何从数据中找到房价y与面积x1和卧室数目x2的关系?本文旨在,通过数学推导的角度介绍梯度下降法
f
e
e
t
2
−
x
1
feet^2 - x_1
feet2−x1,
b
e
d
r
o
o
m
s
−
x
2
bedrooms - x_2
bedrooms−x2,
P
r
i
c
e
−
h
(
x
)
Price - h(x)
Price−h(x)
一、线性函数
为了实现监督学习,我们选择采用自变量x1、x2的线性函数来评估因变量y值,得到:
这里,
θ
1
\theta_1
θ1 、
θ
2
\theta_2
θ2 代表自变量
x
1
x_1
x1、
x
2
x_2
x2的权重(weights),
θ
0
\theta_0
θ0 代表偏移量。为了方便,我们将评估值写作h(x),令
x
0
x_0
x0=1,则h(x)可以写作:
把x写作(1,x1,x2),可以把参数
θ
0
\theta_0
θ0 也融入到参数里,进行矩阵乘法 。
二、误差函数
为了得到weights的值,我们需要令我们目前的样本数据评估出的h(x)尽可能的接近真实y值。我们定义 误差函数(cost function)来表示h(x)和y值相接近的程度:
-
n为自变量的数量,m为输入样本数的数量或理解为 x x x 的坐标最大值。对应的是,下标是自变量个数,上标是样本数据或为 x x x 的坐标。( 下面的公式不是按 i , j i, j i,j 区分的,而是上下标区分。)
-
这里的系数1/2是为了后面求解偏导数时可以与系数相互抵消。我们的目的是要误差函数尽可能的小,即求解weights使误差函数尽可能小。首先,我们随机初始化weigths,常用的直接初始化为1,然后不断反复的更新weights使得误差函数减小,直到满足要求时停止。
笔者拙见,可以直接跳过…
其实,以上部分类似于最小二乘法,因为无论梯度下降,还是最小二乘法,都是通过二次误差函数的求导来拟合,区别在于,最小二乘法,直接算出参数,而梯度下降法则是对参数不断地更新迭代。
三、公式推导
这里更新算法我们选择梯度下降算法,利用初始化的weights并且反复更新weights:
这里a代表学习率,表示每次向着J最陡峭的方向迈步的大小。为了更新weights,我们需要求出函数J的偏导数。首先计算只有一组数据样本(x,y)时,如何计算J的偏导数:
求导技巧:对于 ∑ i = 0 N θ x i − y \sum_{i=0}^N \theta x_i- y ∑i=0Nθxi−y 对 θ j \theta_j θj 的求导,因为 θ i \theta_i θi是变量且 i ∈ \in ∈(0,n) ,因此对 θ j \theta_j θj 求导将只会剩下 θ j \theta_j θj 的参数 x i x_i xi。
对于只含有一组数据的训练样本,我们可以得到更新weights的规则为:
扩展到多组数据样本,更新公式为:
称为批处理梯度下降算法,这种更新算法所需要的运算成本很高,尤其是数据量较大时。考虑下面的更新算法:
以上都是顺着x的方向依次取数据,那么再进一步优化,按照随机的取法取 x x x的数据, 考虑下面的更新算法:
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/13626f7c023b37c9bbe910e219ceb422.png)
如果从 [ 1 , m ] [ 1,m ] [1,m] 随机取 i i i,并且这种算法不停的更新weights,每次使用一个样本数据进行更新,并且因为 i i i的随机性,能有效跳出局部最优解。那么该算法又叫做随机梯度下降法,当数据量较大时,一般使用后者算法进行更新。
四、如何通俗的梯度下降法
在一元函数的函数图像,梯度就等于斜率,它的方向没有选择,并不能直观理解梯度下降最快。
而只有在二元及其以上的函数图像,面上的一点的梯度才会有方向的选择,梯度方向才会有,最直观的下降最抖现象。
进一步了解,涉及的数学知识:
梯度是函数值变化最大的方向 -> 方向导数-> 高数里的全微分概念
梯度下降法代码的书写 -> 熟悉矩阵的运算
五、梯度上升法
梯度上升法用来求最大值,而梯度下降法用来求最小值。
在《机器学习实战》一书的第5章中讲到了Logistic——本质上是一个基于条件概率的判别模型,它利用了Sigma函数值域在[0,1]这个特性。 Logistic回归用于二分类问题,面对具体的二分类问题,比如明天是否会下雨。因而转用概率来表示和推导。
这本书中采用了,梯度上升算法,而且神奇的和基于二次误差函数得到的梯度下降公式完全一致,但是采用的数学推导却是基于,最大似然估计的推导。
感兴趣的同学,可以看:
https://www.jianshu.com/p/7574ce1949b8
六、代码
^ ~ ^后续再补充
机器学习,希望自己扎扎实实的走好每一步。