机器学习笔记 --机器学习任务攻略

135 阅读2分钟

视频链接

6.机器学习任务攻略

image-20210410150845463

训练资料就是要拿来训练我们的model

训练过程(三个步骤):

  1. 先写出一个有未知数的function,这个未知数以后我们都用 θ 来代表一个model里面所有的未知函数

  2. 定义一个loss,loss是一个function,这个loss的输入是一组参数,去判断这一组参数好还是不好

  3. 解一个optimization的problem,你要去找一个 θ -- 可以使loss的最小,最小的定义为θ*

把θ* 用在测试资料上,也就是把 θ*带入fθ(x) 中未知的参数

作业通关攻略

image-20210410151833263

如果训练结果不满意,首先检查训练资料的loss

  1. training loss大:有两种可能 a.model bias b. optimization

    ​ a. 可能是model 太简单,此时要重新设计model,给他更大的弹性

    ​ b. optimization gradient descent 不给力

    怎么区分a b:可以通过比较不同的模型,在测试资料上56层的表现并没有20层的表现好,通过检查训练资料发现20层的network loss比较低,这就==意味着56的network 的optimization没有做好==。【原因:20层都可以做的很好了,56层的弹性一定比20层更大,56层可以轻松做到20层的network可以做到的事情(前20层参数一样,剩下36层什么都不做就可以了),所以如果56层的networkoptimization成功的话,它应该比20层的network可以得到更低的loss】

    image-20210410153214669

    paper链接

如何判断自己的optimization没有做好?

看到一个你从来没有做过的问题,可以跑一些比较小的、比较浅的network;或者甚至是用一些不是deep learning的方法,比如说linear model、supprot vector machine。

  1. training loss 小

    检查测试资料的loss:

    ​ testing loss 小:结束

    ​ testing loss大 :可能是 over fitting 或是mismatch

over fitting的原因:

​ 举例:根据训练资料,某一个很费的machine learning的方法找出了一个一无是处的function:如果x有出现在训练资料里面就把他对应的 y 当做输出,如果x没有出现在训练资料里面那就随机输出一个值,但这个function在训练资料上的loss是零,但在testing上他的loss会变得很大

image-20210410155029962

解决overfitting的方向:

​ a. 增加训练资料 (比如 data augmentation)

​ b. 给模型一些限制

​ * 减少参数、神经元数

​ * 用较少的features

​ * Early stopping

​ * Regularization

​ * Dropout

注:当model越来越复杂的时候,超过某一程度时testing loss就会突然暴增,overfitting的状况就会出现。

image-20210410161505696

李宏毅2021春机器学习笔记 --7.类神经网络训练不起来怎么办(一)局部最小值与鞍点