本次笔记主要包含两节课:Regression(回归)和Basic Concept(基本概念)
先放上视频链接:
Regression(回归)
https://www.bilibili.com/video/BV1JE411g7XF?p=3
Basic Concept(基本概念)
https://www.bilibili.com/video/BV1JE411g7XF?p=4
Regression
提出问题
本节课李宏毅老师是以宝可梦升级后的CP值预测作为学习目标的。(这个思路非常好,用一个有趣的又容易实现的任务作为学习目标,完成目标的同时学习新的技能!)
其实,一个网络模型本质就是一个function。无论要做什么任务,其本质都是求取一个函数,可以根据输入参数得到预期的输出数据。
这个问题里,已知参数就是升级前的宝可梦的所有数据,包括现有CP,weight,Height,种族之类的信息。将这些信息输入到建立的model,以升级后的CP作为输出,即得到预期结果。
然后,收集大量的宝可梦升级前后的数据,即可对model进行训练,使其参数能够使输出的CP值与真实的CP值接近,那么model训练成功。
建立模型
这里需要建立模型,用最简单的线性模型,即为:
x为输入数据,每个数据有多个特征(features),网络以每个特征的一次信息作为输入,给其配备权重值,即为
ω
\omega
ω。则有:
y
=
ω
×
x
+
b
y=\omega \times x+b
y=ω×x+b
其中,x为多个features,w维度与其一致,b为偏置(一维),bias。
这样就建立好了模型。
这里,李老师通俗易懂的讲了模型选择的问题,如图,模型参数越多,函数越复杂,参数能表示的函数空间所包含的函数个数也越多,就越可能包含目标函数,但是,解空间复杂了,真正找到真实目标函数的难度也越大了,所以,并不是模型越复杂越好,合适的才是最好的,最好能包含目标函数,又容易找到。
梯度下降
这个部分到处都有讲,就不细说了,就是通常说的梯度下降,李宏毅老师讲的很通俗易懂。他默认同学们数学基础一般,所以每次涉及数学问题,都进行了尽可能通俗的解释。
总之就是朝着是Loss函数越来越低的方向调整参数w和b的值就对了。
Regularization(正则化)
李老师后文还讲了正则化问题,通过加入正则项,实现了参数个数的限制,从而降低函数空间复杂度,使函数曲线更平滑,不通过过于弯曲的曲线去覆盖所有训练集,避免过拟合。
Basic Concept(基本概念)
训练模型在测试集的误差构成:
bias(偏差)+Variance(方差)
Bias | Variance |
---|---|
模型参数小 | 模型参数大 |
函数空间过小 | 函数空间过大 |
Underfitting(欠拟合) | Overfitting(过拟合) |
模型过小 | 数据过少 |
train/public/private结果接近 | train/public结果好private结果差 |
存在问题 | 存在问题 |
---|---|
模型不包含真实函数 | 模型过于复杂,完全表示了训练数据 |
解决方案 | 解决方案 |
---|---|
修改模型,使其覆盖真实函数 | 增加数据,使模型不能完全覆盖 |
Redesign Model | Regularization |
重点备忘
这节课有一个很重要的总结建议!
模型是有train data训练出来的,不是由test data修正出来的。
不要依据test data的结果来修改model,这样会使model包含public test data的信息,从而导致其在private test data的结果反而不好。
可以将train data分为多份,取一部分作为Validation data(校准数据),这样可以优化模型,又避免引入test data的信息。
一般可以将train data分为多份,每次取一份作为校准数据,循环多次,选择error最小的一组训练模型。