Source video: 《PyTorch深度学习实践》完结合集-02
刘洪普 Blog
监督学习过程:
- 准备数据集
- 模型设计
- 训练
- inferring
数据集:
| x(hours) | y(grades) |
|---|---|
| 1 | 2 |
| 2 | 4 |
| 3 | 6 |
| 4 | ? |
1-3 training, 4 testing 预测
监督学习:输出值已知
数据分成 Training set 和 Testing set 两部分(不能偷看测试集的label)
Training set 接近 数据的真实联合分布 D(x,y),根据大数定律需要大量数据
Training Set 中分出一部分做开发集,验证模型性能
模型设计:
模型:y = f(x)
先用线性模型是否有效,再换其他的模型。
线性模型:$\hat{y}=f(x) = x*w +b$
预测值 $\hat{y} = x * w$ (先不考虑b)
找到最优的权重,先随机数,计算与数据集的误差(平方和最小),
损失函数,针对一个样本:$loss = (\hat(y)-y)^2 = (x*w-y)^2$,必须是一个标量,才能让他变得更小,不断优化。
| x(Hours) | y(grades) | y_predict(w=3) | Loss(w=3) |
|---|---|---|---|
| 1 | 2 | 3 | 1 |
| 2 | 4 | 6 | 4 |
| 3 | 6 | 9 | 9 |
| mean = 14/3 |
选取w,让平均损失降到最低
Cost function, 对于整个training set, 平均平方误差(Mean Square Error): $cost = \frac{1}{N} \sum_{n=1}{N}(\hat{y}_n - y_n)^2$
| x(Hours) | Loss(w=0) | Loss(w=1) | Loss(w=2) | Loss(w=3) | Loss(w=4) |
|---|---|---|---|---|---|
| 1 | 4 | 3 | 0 | 1 | 4 |
| 2 | 16 | 6 | 0 | 4 | 16 |
| 3 | 36 | 9 | 0 | 9 | 36 |
| MSE | 18.7 | 4.7 | 0 | 4.7 | 18.7 |
不保证能找到0,在真实最小值附近穷举。经过测试最优w存在于0-4之间,对之间所有可能取值(对实数域采样)都计算一下损失,绘制曲线,找最低点。
|
|
用训练的轮数 epoch 做横坐标,检查超参数,判别是否收敛.
打印日志输出,实时画图,Visdom
要存盘,避免崩溃,计算白费
模型:$\hat{y} = x*w +b$ 有两个参数,损失函数是曲面,找最低点
3d图绘制使用 np.meshgrid()