-
输出是标量
-
应用
- 股市预测
- 自动驾驶
- 推荐系统
-
案例学习:预测宝可梦的CP值
-
Step1: Model
- Linear Model: \(y=b+\Sigma w_i x_i\)
- 暂时只考虑一个因素:进化前的CP值\(x_{cp}\):\(y=b+w\cdot x_{cp}\)
-
Step 2: Goodness of function
- 给定10个数据的训练集\((x^i, \widehat{y}^i)\)
- 定义Loss Function为偏差的平方和:\(L(f)=\Sigma_{n=1}^{10} (\widehat{y}^n-f(x_{cp}^n))^2\)
-
Step3: Best Function
- 寻找一个函数\(f\)(此处是两个参数\(w\)和\(b\)),使Loss Function最小
- 梯度下降 Gradient Descent
- 对于只有一个参数\(w\)的模型
- (随机)选取一个初始值\(w^0\)
- 计算\(w\)对\(L\)在\(w_i\)处的微分\(\frac{dL}{dw}|_{w=w^0}\)
- \(<0\):增加w
- \(>0\):减小w
- 使Loss Function减小
- \(w^1=w^0-\eta \frac{dL}{dw}|_{w=w^0}\)
- \(\eta\)被称为学习率 Learning Rate
- 多次迭代直到达到极小值
- 局部极小 Local minima
- 全局极小 Global minima
- 对于有多个参数的模型,将微分改为偏微分,分别更新每个参数,以两个参数\(w\)和\(b\)为例:
- (随机)选取初始值\(w^0\)和\(b^0\)
- 更新\(w\):\(w_1=w_0-\eta \frac{\partial L}{\partial w}|_{w=w^0,b=b^0}\)
- 更新\(b\):\(b_1=b_0-\eta \frac{\partial L}{\partial b}|_{w=w^0,b=b^0}\)
- 多次迭代直到最优解
- 存在的问题
- Plateau
- \(\frac{\partial L}{\partial w}\approx 0\)
- 收敛很慢
- Saddle point
- \(\frac{\partial L}{\partial w}= 0\)
- 停止在拐点,不是正确的结果
- Local minima
- \(\frac{\partial L}{\partial w}= 0\)
- 局部极小,不是全局最优解
- Plateau
- 对于只有一个参数\(w\)的模型
-
我们真正关心的是模型在测试集上的表现,而不是训练集
-
选择不同复杂程度的模型
-
\(y=b+w\cdot x_{cp}\)
-
\(y=b+w_1\cdot x_{cp}+w_2\cdot (x_{cp})^2\)
-
\(y=b+w_1\cdot x_{cp}+w_2\cdot (x_{cp})^2+w_3\cdot (x_{cp})^3\)
-
\(y=b+w_1\cdot x_{cp}+w_2\cdot (x_{cp})^2+w_3\cdot (x_{cp})^3+w_4\cdot (x_{cp})^4\)
-
\(y=b+w_1\cdot x_{cp}+w_2\cdot (x_{cp})^2+w_3\cdot (x_{cp})^3+w_4\cdot (x_{cp})^4+w_5\cdot (x_{cp})^5\)
-
模型编号 训练集误差 测试集误差 1 31.9 35.0 2 15.4 18.4 3 15.3 18.1 4 14.9 28.2 5 12.8 232.1 -
更复杂的模型往往在训练集上的误差更小
-
过于复杂的模型在训练集上的误差最小,但在测试集上的表现不如更简单的模型,这就是过拟合 Overfitting
-
我们应该选择合适复杂程度的模型
-
-
获取更多测试数据,会发现:
- 对于相同的\(x_{cp}\),会有不同的\(y\)
- 模型不完善,还有其他因素影响\(y\) (hidden factors)
- 根据数据分析可知,宝可梦的种类\(x_S\)也会影响进化后的CP值\(y\)
- 对于每个种类都定义一个模型\(y=b_i+w_i\cdot x_{cp}\)
- 整合成一个线性模型\(y=\Sigma b_i\cdot \delta _i(x_S)+\Sigma w_i\cdot \delta _i(x_S)\cdot x_{cp}\)
- 收集更多数据,分析是否还存在其他hidden factor
- 结合之前的经验,选择不同复杂程度的模型
-
Overfitting的另一种解决方法:正则化 Regularization
- 在Loss Function后面添加一项\(\lambda \Sigma(w_i)^2\)
- 使得到的曲线更平滑(\(w_i\)倾向于更小)
- 我们认为更平滑的模型更有可能是正确的(大部分情况是如此)
- 无需对常数项bias正则化,因为bias不影响模型的平滑程度
- \(\lambda\)越大,模型越平滑,训练集误差也越大。因为最后一项越大,前一项的比重就越小,更少考虑训练误差。
- 选择合适的\(\lambda\)能够得到最小的测试误差。与过拟合的情况类似,过于平滑的模型会带来更大的测试误差。
-
相关文章
- 12-12李宏毅机器学习笔记-15:Unsupervised Learning:Neighbor Embedding
- 12-12李宏毅深度学习笔记05---RNN 循环神经网络02
- 12-12李宏毅深度学习笔记04---RNN 循环神经网络01
- 12-12【视频+PPT】2021年李宏毅版40节机器学习课程已更新完毕(附资料下载)
- 12-12课程向:深度学习与人类语言处理 ——李宏毅,2020 (P25)
- 12-12课程向:深度学习与人类语言处理 ——李宏毅,2020 (P18)
- 12-12李宏毅机器学习17—Explainable ML(第四周)
- 12-12【强推】李宏毅2021机器学习深度学习(最新最全)
- 12-12李宏毅ML笔记5: 深度学习简介
- 12-12Google Drive档案存取教学《李宏毅2020机器学习深度学习》