天天看点

梯度下降法(Gradient Descen)t优化函数的详解(0)线性回归问题前言线性回归问题(Linear Regression)

  • 前言
  • 梯度下降法(Gradient Descent)优化函数的详解(0)线性回归问题
  • 梯度下降法(Gradient Descent)优化函数的详解(1)梯度下降法(Batch Gradient Descent)
  • 梯度下降法(Gradient Descent)优化函数的详解(2)随机梯度下降法(SGD Stochastic Gradient Descent)
  • 梯度下降法(Gradient Descent)优化函数的详解(3)小批量随机梯度下降法(mini-batch SGD )
  • 几种算法的比较

前言

在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数。在求解机器学习参数的优化算法中,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD)。

比如说,接触过神经网络的人都知道,其核心是网络的训练,而训练方式多是基于梯度下降(Gradient Descent, GD)的优化算法。

梯度下降法有很多优点,其中,在梯度下降法的求解过程中,只需求解损失函数的一阶导数,计算的代价比较小,这使得梯度下降法能在很多大规模数据集上得到应用。梯度下降法的含义是通过当前点的梯度方向寻找到新的迭代点。

线性回归问题(Linear Regression)

基本原理

回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如局部线性回归(Locally weighted linear regression), 逻辑回归(Logistic regression)等等。

解决问题

(1) 确定被解释变量与解释变量之间的回归模型,并依据样本观测值对回归模型中的参数进行估计,给出回归方程。

(2) 对回归方程中的参数和方程本身进行显著性检验。

(3) 评价解释变量对被解释变量的贡献并对其重要性进行判别。

(4) 利用所求得的回归方程,并根据解释变量的给定值对被解释变量进行预测,对解释变量进行控制

算法详解

假设要做一个房屋价值的评估系统,房屋的价值来自很多地方,比如说面积、房间的数量(几室几厅)、地 段、朝向等等,这些影响房屋价值的变量被称为特征 (feature) 。 在此处为了简单,假设我们的房屋就只有一个影响量,就是房屋的面积。

step1:

数据如下:

面积(m^2) 销售价格(万元)
123 250
150 320
87 160
102 220
280 590
200 390

用这些数据我们可以在坐标系中绘制出一系列散点

梯度下降法(Gradient Descen)t优化函数的详解(0)线性回归问题前言线性回归问题(Linear Regression)

我们所想要解决的问题,就是给出任意的一个面积,预测对应的房价。 所以这是一个预测问题。也就是回归问题。

step2:这里我们用最简单的线形模型来做房价预测。那么这个问题也可以称之为线性回归问题。

线形模型简单来说就是直角坐标系中的一根线,用 y = a x + b y=ax+b y=ax+b表示,这里 a 和b 就是我们要优化的参数。换句话说,我们要通过接下来写的一套算法,找到最优的 a 和 b 。

step3:由于在后期的训练中,数据在各个维度上尺度差异太大很容易造成训练速度过慢。所以一般来说,在训练之前,我们首先会对数据做归一化处理,统一归到[0,1]之间,上公式:

x n e w = x − x m i n x m a x − x m i n y n e w = y − y m i n y m a x − y m i n x_{new} = \frac{x-x_{min}}{x_{max}-x_{min}} \qquad y_{new} = \frac{y-y_{min}}{y_{max}-y_{min}} xnew​=xmax​−xmin​x−xmin​​ynew​=ymax​−ymin​y−ymin​​

这样就得到归一化之后的数据

面积(m^2) 销售价格(万元)
0.1865 0.2093
0.3264 0.3721
0.0777 0.1395
1 1
0.5855 0.7047

step4:

我们可以做出一个图,x 轴是房屋的面积, y 轴是房屋的售价,如下:

梯度下降法(Gradient Descen)t优化函数的详解(0)线性回归问题前言线性回归问题(Linear Regression)

在对数据做过预处理之后,我们现在就来评判y=x(a=1,b=0) 这条线多大程度上完成了预测。显然的,我们会用到我们的训练数据代入到模型y=x中,看看和实际结果差多少。通过模型得到的结果我们称之为预测值y_p

面积(m^2) 销售价格(万元) 预测价格 差值 差值的平方
0.1865 0.2093 0.1865 0.0228 0.00051984
0.3264 0.3721 0.3264 0.0457 0.00208849
0.0777 0.1395 0.0777 0.0618 0.00381924
1 1 1
0.5855 0.5349 0.5855 0.0506 0.0025036

step5:

如果来了一个新的面积,假设在销售价钱的记录中没有的,我们怎么办呢?

我们可以用一条曲线去尽量准的拟合这些数据,然后如果有新的输入过来,我们可以在将曲线上这个点对应的值返回。如果用一条直线去拟合,可能是下面的样子:

梯度下降法(Gradient Descen)t优化函数的详解(0)线性回归问题前言线性回归问题(Linear Regression)

红色的点就是我们想要预测的点。

step6:总结

首先给出一些概念和常用的符号,在不同的机器学习书籍中可能有一定的差别。

  • 房屋销售记录表 - 训练集 (training set) 或者训练数据 (training data) ,是我们流程中的输入数据,一般称为x
  • 房屋销售价钱 - 输出数据,一般称为 y
  • 拟合的函数(或者称为假设或者模型),一般写做 y = h(x)
  • 训练数据的条目数 (#training set) , 一条训练数据是由一对输入数据和输出数据组成的
  • 输入数据的维度 (特征的个数,#features) : n

下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。就如同上面的线性回归函数。

梯度下降法(Gradient Descen)t优化函数的详解(0)线性回归问题前言线性回归问题(Linear Regression)

我们用 x1,x2…xn 去描述 feature 里面的分量,比如 x1=房间的面积 , x2=房间的朝向 等等,我们可以做出一个估计函数:

y ( x ) = y θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 . . . + θ n x n y(x) = y_θ(x) = θ_0 + θ_1x_1 + θ_2x_2...+θ_nx_n y(x)=yθ​(x)=θ0​+θ1​x1​+θ2​x2​...+θn​xn​

θ 在这儿称为参数,在这儿的意思是调整 feature 中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。如果我们令 X0 = 1 ,就可以用向量的方式来表示了:

y ( x ) = y θ ( x ) = θ T X y(x) = y_θ(x) = θ_TX y(x)=yθ​(x)=θT​X

我们程序也需要一个机制去评估我们 θ 是否合理,因此我们需要对得到的h函数进行评估,一般这个函数称为损失函数(loss function)或者错误函数 (error function) 。描述 h 函数偏差的程度,我们称这个函数为 J 函数

在这儿我们可以做出下面的一个错误函数:

l o s s = J ( θ ) = 1 2 m ∑ i = 1 m ( y θ ( x i ) − y i ) 2 loss = J(\theta ) = \frac{1}{2m}\sum_{i=1}^{m}(y_{ \theta }(x_{i})- y_{i})^{2} loss=J(θ)=2m1​i=1∑m​(yθ​(xi​)−yi​)2

这个错误估计函数是去对 x(i) 的估计值与真实值 y(i) 差的平方和作为错误估计函数,前面乘上的 1/2 是为了在求导的时候,这个系数就不见了,除以m是对平均量化。

这种求loss的方法称之为Mean Squared Error (MSE), 即均方差。

接下来的目标很明确,就是

如何不断的调整参数a,b来使loss越来越小,最终令预测尽可能接近真实值。

从这一点出发,很多人做了很多不同的工作,我们将这些方法统称为优化函数

代码地址:https://github.com/admin110/s0/blob/master/linearRegression.py

下一篇:梯度下降法(Gradient Descent)优化函数的详解(1)梯度下降法(Batch Gradient Descent)