首先说明一下这一系列的文章内容
我是从 Deep Learning(花书)入门深度学习的,在书中讲述了很多数学的原理和深度学习网络的工作原理,里面的推导内容有些难懂,对于线性代数半吊子我来说有些不能理解,需要通过实践才能才能有更透彻的推导和理解
而且在网上找了很多关于深度学习的东西,适合入门理解和学习的东西并不多,我希望我的这一些小记录能帮到想要了解深度学习的朋友
一维线性回归
入门机器学习最基础的东西既是线性回归,即有如下形式的方程:
其中 是输出, 是输入, 是系数矩阵(weights), 是置偏(bias)
这是多维的线性方程,我们接下来要研究的是以上公式的简化版本:
上面的都是一维的标量
我们要学习就是我们平时看到的一次函数。
我们要实现的是我们给计算机一系列的的值,让计算机自己找到(学习)这个 的值。
基本的算法
代码流程
这里我利用numpy
来处理数值问题,利用matplotlib
来简单展示数据
|
|
生成训练数据,标准的
|
|
初始化待训练的数据
|
|
训练代码:
|
|
代码解释
我们训练训练300次,每次训练按照之前给的流程图的步骤走
- 获取一对数据
- 根据我们的模型计算拟合出来的值
之后计算拟合出来的 和 之间的距离:
这是我们评估模型准确度的标准,我们一般把这种函数称为损失函数(loss)
我们模型跟数据情况符合的越好,我们的loss值应该就越低。
接下来就我们的目标就是调整我们的参数 ,让 尽量的小,那么我们就得研究当 变化时 是如何变化的( 都不是我们的研究对象,可看做定值)。
由上面的公式有如下关系:
我们让 对 求导:
导数的方向是 增大的方向,所以我们是每一步调整 使的 变小,我们用以下的式子来更新 :
即向 导数的负方向移动一小步, 就是上面代码中的学习率(leaning rate)
我们在代码中用loss_per_step
记录了每一步的 变化,用以下代码展示出来:
|
|
现在看看我们的拟合结果:
|
|
从最后的结果来看,我们的计算机成功的找(xue)到(xi)到了这个 下一次我们试试更高维的线性回归