【Day 6】机器学习基本功(四)

过度拟合(Overfitting)

昨天我们把模型变得更复杂,让训练的Loss变得更低,但当我们把模型变得越来越复杂的时候,就可能会发生模型虽然在训练上面得到比较好的结果,但在测试上面却不一定会得到比较好的结果,甚至是非常差的结果,这种我们就称之为过度拟合(Overfitting),因此我们需要选择一个最适合的模型。而除了复杂的模型以外,训练资料太少也有可能会造成Overfitting的发生。

正规化(Regularization)

透过重新定义Loss来避免Overfitting的发生,之前的例子我们只考虑了预测与实际的误差,而现在我们可以将原本的Loss function後面再加上一个额外的项目 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%5Csum%20(w_i)%5E2 来做正规化(Regularization)https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 为一个常数,是我们需要调整的。
加入了那个项目使我们最後找到的权重变更小,而当权重变小,其输入对结果的影响就越小,就能够使function变得更平滑(smooth),也就可以减少权重的影响,来避免Overfitting的情况发生。

从实际的例子来看,我们可以发现当 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 的值越大,在训练资料上得到的误差越大,这是因为当 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 越大,我们就越倾向於考虑权重的值而减少考虑误差。不过在测试资料上面得到的误差可能会是比较小的,从图中可以看到随着 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 的值越大,测试资料的误差越小,但在 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%3D%20100 之後,测试资料的误差又上升了,因此我们就会选择 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%3D%20100 来得到我们的模型。


参考资料

李宏毅老师 - ML Lecture 1


<<:  [Day19] MySQL 的 JOIN

>>:  [C 语言笔记--Day08] Thread

D25 / 为什麽 State 改变会触发 recomposition - State & Snapshot system

今天大概会聊到的范围 Snapshot system 上一篇有提到,State 改变时会触发 re...

下载 Twitter 影片【亲测有效】

Twitter 上最受欢迎的功能是趋势功能。 通过这一功能,人们可以轻松了解世界各地最重要的新闻信息...

HERE API Example - 在执行期间变更地图样式

本文说明如何在执行期间变更地图样式。 主要步骤为取得 BaseLayer,修订样式并且合并回 Bas...

[铁人赛 Day11] React 原始码的初见面 ——官方 codebase 指南

前言 为了更近一步理解平常使用的 useState, useEffect, memo...等机制的运...

Day 07 - Ticks

本篇重点 Ticks 介绍及属性说明 使用 Pandas 将 Ticks 资料转换为 DataFra...