李沐-动手学深度学习(六)线性回归

1、线性模型 

输出层不算一层,因为不带权重。


训练数据:收集数据点来决定参数值(权重和偏差)。

数据在每个样本上损失的均值:

线性模型有显示解。

因为线性模型,所以损失是一个凸函数,所以最优解是梯度为0的地方。

2、基础优化方法

(1)梯度下降

学习率,不能选太小,也不能太大

总结

3、线性回归的从零开始实现

chapter_linear-networks/linear-regression-scratch.ipynb

用batch就是,把数据集随机分成好多个数据集,每组有batch_size个数据。然后每次用一组数据,来计算这组数据的损失,然后用这个损失算参数(权值和偏差)的梯度,然后根据梯度和学习率更新参数(权值和偏差)。然后用更新后的参数来评估下整个数据集(用新的参数,算完整数据集的损失)。然后再在这个基础上,用下一组样本数据,来重复上面的过程。

4、线性回归的简洁实现

chapter_linear-networks/linear-regression-concise.ipynb

PyTorch中,一般函数加下划线代表直接在原来的 Tensor 上修改,即in-place操作

5、答疑

(1)Q:为什么用平方损失而不是绝对差值?

A:其实区别不大,但是绝对差值不可导。

(2)Q:损失为什么要求平均

A:求不求是都可以的,本质上没关系。求了平均,梯度跟样本在一个scale上;不求平均,梯度会比较大,给学习率除个n是一样的。

(3)Q:怎么找到合适的学习率

A:找到一个对学习率不那么敏感的算法;或者通过合理的参数的初始化,使学习率不那么敏感。

(4)Q:batchsize是否影响模型的结果,过小会不会导致梯度计算不准?

A:其实batchsize小了是好的,大了不行。batchsize越小,对梯度越好,对收敛越好。因为随机梯度下降会带来噪音,每次batchsize小(eg,百万样本,每次采样两张),噪音会比较大,但是噪音对神经网络是件好事。一定的噪音会使深度神经网络不走偏。对噪音容忍度越好,那么模型的泛化性越好。

(5)随机梯度下降的随机,是指随机采样。

(6)Q:如果样本大小不是批量数的整数倍,怎么处理多余的样本?

A:通常三种做法:一个是最后就再取一个小一点的样本集;一个是直接扔掉;再一个是,从下一个epoch中补一些过来。

(7)整个课程中,学习率都没有做衰减,虽然按道理说,学习率应该逐渐减小,然后收敛。但是可以调整学习率,不做衰减问题不大。

(8)Q:如何判断收敛,设置epoch?

A:可以看两次的loss差的不大了停,或者看验证数据集精度不再增加了停。第一次可能就是凭经验自己设的。

你可能感兴趣的:(李沐-动手学深度学习(六)线性回归)