Deep Learning with Pytorch-学习笔记(二)

4.1学习就是参数估计

(不总结,不思考,看了也是白看😭)

本节主要是讲 如何获取数据,选择模型并估计模型的参数,以便对新数据给出良好的预测。

如图所示,给定输入数据和相应的期望输出(ground truth)以及权重的初始值,模型输入数据(前向传播),然后通过把结果输出与ground truth进行比较来评估误差。为了优化模型的参数,其权重(即单位权重变化引起的误差变化,也即误差相对于参数的梯度)通过使用对复合函数求导的链式法则进行计算(反向传播)。然后,权重的值沿导致误差减小的方向更新。不断重复该过程直到在新数据上的评估误差降至可接受的水平以下。

作者,从一个简单的例子出发,初步实现这一过程。

假设,你有一组摄氏度温度计记录温度的数据,和一组未知量程单位温度计记录温度的数据,你要从中找出关系,使得你可以用现在的温度测量结果,得到未知量程的温度

t_c = [0.5,  14.0, 15.0, 28.0, 11.0,  8.0,  3.0, -4.0,  6.0, 13.0, 21.0] #摄氏度
t_u = [35.7, 55.9, 58.2, 81.9, 56.3, 48.9, 33.9, 21.8, 48.4, 60.4, 68.4] #未知

因为从最简单的角度出发,我们假设它们之间的关系是线性的,满足tp= w*tu + b, w 和 b 分别是权重和偏差。我们可以设置一组初值w和b。

接下来,我们怎么知道,预测结果是正确的呢? 常用损失函数来表示,损失函数通常是计算训练样本的期望输出与模型接收这些样本所产生的实际输出之间的差异,在本例中,即是模型输出的预测温度 与实际测量值之间的差异tp-tu

我们尽可能的使得损失函数变小,但是不能是负无穷的,这样是没有意义的,要保证它是正的,并且是在变小。通常我们选择误差平方损失。

到这里,我们知道了我们要干什么选择了线性模型,并且获得数据,以及我们的要求,即使得损失函数小,如果损失函数为0,那么说明我们的预测也太好了,一般不太可能。那么,我们如何朝着这一方向努力呢?

从最开始讲的话,我们可以从我们的一组初值w和b出发,不断的改变,以一个小的幅度不断地改变,指导突然发现损失函数小到符合我们的要求,就像玩游戏一样,你需要通过拧动w和b的按钮,直到符合我们的要求。如下图所示:

但是实际中,我们一般是利用梯度下降法来实现这一过程,求得参数w和b对于损失函数loss的偏导,当这个偏导在不断的变下/下降的时候,就说明损失函数在不断的变小,接近它的最小值。在此基础上,不断循环,直到损失函数下降到,符合我们对误差的要求。

注意:实际训练中,可以尝试通过改小学习率(梯度下降法相关知识)和数据归一化来,更好的训练数据。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页