线性回归
1. 线性模型
给定一个样本数值表:
样本对 | 数值 |
---|---|
(x1, y1) | (1.4, 14.4) |
(x2, y2) | (5, 29.6) |
(x3, y3) | (11, 62) |
(x4, y4) | (16, 85.5) |
(x5, y5) | (21, 113.4) |
先绘制一下上述数据,查看一下这些数据的特征: |
1 | pip3 install matplotlib |
这里利用 scatter()
方法绘制散点图。在使用 matplotlib 库绘制图形时,传入的 Tensor 必须先转换成 NumPy 数据:
1 | import torch |
绘制结果如下:
可以十分清晰的看到,这五个样本符合线性规律,可以使用一条直线去拟合。
2. 目标函数(损失函数)
根据我们以前的经验,很自然的我们会假设拟合的直线公式为:
在机器学习或深度学习领域呢,我们一般会统一参数,方便表示,这里的 和 ,我们统一称其为参数,用 和 表示,这样我们便可以使用一个统一的向量 表示,不过这里就是后话了。这里新的拟合曲线公式为:
当我们对其进行拟合时,就难以避免误差的存在,很自然的想法,我们肯定希望我们拟合的函数和真实值之间的误差越小越好,这个时候,我们会用一个函数去表示这个误差,这个函数就是损失函数或目标函数等,用 表示。
这里,我们采用均方根误差(Mean-Square Error, MSE):
3. 优化
使用梯度下降方法可以较为快速且准确的找到损失函数的最小值,梯度下降的公式为:
在 PyTorch 中, 可以由自动微分技术得到。
4. 批量输入
如果我们把公式写成向量形式,即 ,,可以得到以下公式:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Excelius's World!