线性回归的原理
房价预测
- 假设 1:影响房价的关键因素是卧室个数,卫生间个数和居住面积,记为
, , . - 假设 2:成交价是关键因素的加权和
线性模型
- 给定 n 维输入
- 线性模型有一个 n 维权重和一个标量偏差
- 输出是输入的加权和
- 向量版本:
- 可以看成单层神经网络
衡量预估质量
- 比较真实值和预估值,例如房屋售价和估价
- 假设
是真实值, 是预估值,我们可以比较平方损失:
训练数据
- 采集权重和偏差
- 假设有 n 个样本,记
- 训练损失:找到
使得这一项最小
- 最小化损失来学习参数
显示解
基础优化方法
梯度下降
- 挑选一个初始值
- 重复迭代参数
- 沿梯度方向将增加损失函数值
- 学习率:步长的超参数
小批量随机梯度下降
- 随机采样 b 个样本
来近似损失
- b 是批量大小,另一个重要的超参数
总结
- 梯度下降通过不断沿着反梯度方向更新参数求解
- 小批量随机梯度下降时深度学习默认的求解算法
- 两个重要的超参数是批量大小和学习率
线性回归的从零开始实现
构造人造数据集
python
def synthetic_data(w, b, num_examples):
X = torch.normal(0, 1, (num_examples, len(w)))
y = torch.matmul(X, w) + b
y += torch.normal(0, 0.01, y.shape)
return X, y.reshape((-1, 1))
true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = synthetic_data(true_w, true_b, 1000)定义 data_iter 函数
python