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

深度学习优化函数详解系列目录
深度学习优化函数详解(0)– 线性回归问题
深度学习优化函数详解(1)– Gradient Descent 梯度下降法
深度学习优化函数详解(2)– SGD 随机梯度下降
深度学习优化函数详解(3)– mini-batch SGD 小批量随机梯度下降
深度学习优化函数详解(4)– momentum 动量法
深度学习优化函数详解(5)– Nesterov accelerated gradient (NAG)
深度学习优化函数详解(6)– adagrad

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

线性回归问题(Linear Regression)

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

无

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

深度学习优化函数详解(0)-- 线性回归问题_第1张图片

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

y=ax+b

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

深度学习优化函数详解(0)-- 线性回归问题_第2张图片

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

无

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

无

再画一遍上面的图。

深度学习优化函数详解(0)-- 线性回归问题_第3张图片

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

深度学习优化函数详解(0)-- 线性回归问题_第4张图片

通过差值可以很明显的看出预测和实际真值有一定的差距,那么如何定量描述这种差距呢?通常我们会用差值的平方和 来表示,如下

无

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

除以2是为了后面求梯度的时候方便,除以m是做一个平均的量化。

这种求loss的方法称之为Mean Squared Error (MSE), 即均方差
接下来的目标很明确,就是

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

从这一点出发,很多人做了很多不同的工作,我们将这些方法统称为优化函数
后面的文章将一一解读各种常用的优化函数
本文代码地址:https://github.com/tsycnh/mlbasic/blob/master/p0.py

你可能感兴趣的:(深度学习)