LESSON two
1.Frame of ML
数据分为training和testing两种,基本步骤如下:
-
function with \theta =》L (\theta) =》=argmin_\theta L=》\theta*=》f_\theta*(testing)
先选取模型和参数,接着将参数合并再定义出系统的损失函数,然后代入随机选择的training data,最后通过梯度下降法进行迭代更新,进而选出最优的参数,将该组参数作为function去label the testing data,得到使损失最小的输出,即接近真实值或者小偏差预测。
2.Loss
2.1 large
我们希望得到的输出结果肯定是training和testing的L都很小,但往往是先得到一个比较大的training Loss,这时候只可能有两种情况:
-
model bias 即model不够flexible
-
Optimization没做好(类似图例,可以理解为local和global的区别)
-
验证方法:
如果training data出现过L很低的情况,这时候就并不是Overfitting,首先要加深model,即用更多的layer,在model不变且算力足够的情况下,允许范围内的高层一定会比低层效果好,想象把低层的sigmoid或者ReLU输出直接原封不动传递下去,结果不会有变化,所以层数在允许的范围内增加,如果有好转,即为原因1,否则就为2
第二种验证方法是用基本不会出现Optimization不好情况的model,如LM、SVM去做training data,再去跑一些比这些简单model深一些的model,如果数据出现 L过大,那就是原因2,否则就是原因1
-
解决方案
原因1的本质是model过于简单(不够flexible),可以人为增加feature,或者加深layer
原因2。。。老师说下节课讲,但是看了一眼是CNN,并且还讲了CNN是增加了约束条件
2.2 Small
如果training data 的L比较小了,但是testing data的L却很大,这个时候也有两种原因:
-
Overfitting,终于来了
-
Mismatch
-
验证方法
model很强,但是没有training data训练的地方自由度会很大,所有导致原理老师下下周讲
mismatch就是一些很特殊的,机器学习不到得情况,例如春节、水军、内鬼爆料...
-
解决方法
Overfitting:
1. 首先可以通过增加training data的数量来解决,即把过于离散的training data逼近连续的,防止自由度过高导致model过于扭曲,增加的方法除了find也可以create,这种操作也叫做data augmentation,例如图像的左右镜像、放缩等等(不要做奇怪的操作,会导致学到错误的东西)
2. 第二种方法是给model足够的限制,例如设计出尽可能逼近真实function的曲线,这种方法与我们对任务或者需求足够了解的情况下,还有限制比如使用更少的feature,如CNN,之后还会再讲几个。(但是不能给太大的限制,如限制成LM,很明显这就把问题塌缩回了model bias)
3. Cross Validation
将training set分成N等分并进行全排列,然后选取M个不同的模型,分别跑在N!个training data上,最后将每个model所跑出的平均值进行比较,选最低L的即为最好的model