深度学习优化函数详解(0)——线性回归问题

在做一些深度学习的算法的时候,都会用到优化函数,在各种成熟的框架中,基本就是一行代码的事,甚至连默认参数都给你设置好了,基本不用动什么东西,最后也会有比较好的优化结果。但是对于优化函数这么核心,这么基本的东西总是模棱两可实在不应该。于是想自己把一些常用的优化函数从原理上搞清楚,所以才有了这个系列的文章。每一篇文章都有配套的python代码,文末会给出地址。

线性回归问题(Linear Regression)

假设我们有一组数据,是一些房子的面积和价格。如下

深度学习优化函数详解(0)——线性回归问题

用这些数据我们可以在坐标系中绘制出一系列散点
深度学习优化函数详解(0)——线性回归问题

我们所想要解决的问题,就是给出任意的一个面积,预测对应的房价。 所以这是一个预测问题。也就是回归问题。
这里我们用最简单的线形模型来做房价预测。那么这个问题也可以称之为线性回归问题。

线形模型简单来说就是直角坐标系中的一根线,用

y = a x + b

表示。这里 a 和 b 就是我们要优化的参数。换句话说,我们要通过接下来写的一套算法,找到最优的 a 和 b 。很明显,人眼来看上面的图,直接可以画出一条斜线,但对于机器来说,这个事就有点困难了。假设我们先给定一组参数a=1,b=0,画一条线看看
深度学习优化函数详解(0)——线性回归问题

可以看出,参数 a 并未提供太大的斜率,这是由于横坐标和纵坐标尺度差距太大所造成的,在后期的训练中,数据在各个维度上尺度差异太大很容易造成训练速度过慢。所以一般来说,在训练之前,我们首先会对数据做归一化处理,统一归到[0,1]之间,上公式:
深度学习优化函数详解(0)——线性回归问题

这样就得到归一化之后的数据
深度学习优化函数详解(0)——线性回归问题

再画一遍上面的图。
深度学习优化函数详解(0)——线性回归问题

再对数据做过预处理之后,我们现在就来评判 y = x ( a = 1, b = 0 ) 这条线多大程度上完成了预测。显然的,我们会用到我们的训练数据 代入到模型 y = x 中,看看和实际结果差多少。通过模型得到的结果我们称之为预测值yp
深度学习优化函数详解(0)——线性回归问题

通过差值可以很明显的看出预测和实际真值有一定的差距,那么如何定量描述这种差距呢?通常我们会用差值的平方和 来表示,如下
深度学习优化函数详解(0)——线性回归问题

接着把每一个平方和的值做一个累加,得到一个值0.2172。我们一共有8组数据,再把这个数除以8。然后再除以2,就得到了一个我们称之为loss的数值0.01357,写成公式就是下面这样:
深度学习优化函数详解(0)——线性回归问题

除以2是为了后面求梯度的时候方便,除以m是做一个平均的量化。
这种求loss的方法称之为Mean Squared Error (MSE), 即均方差。

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

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

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

后面的文章将一一解读各种常用的优化函数

本文代码地址:https://github.com/tsycnh/mlbasic/blob/master/p0.py

本文转自:CSDN - 史丹利复合田,转载此文目的在于传递更多信息,版权归原作者所有。