李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是 ML 和 DL 非常好的入门资料, 在 YouTube, 网易云课堂, B 站都能观看到相应的课程视频, 接下来这一系列的博客我都将记录老师上课的笔记以及自己对这些知识内容的理解与补充.(本笔记配合李宏毅老师的视频一起使用效果更佳!)
今天这篇文章的主要内容是第 1-2 课的笔记.
ML Lecture 1: Regression - Demo
1.Machine Learning 最主要有三个步骤:(1)选择 a set of function, 也就是选择一个合适的 model.(2)评价你选择的 function.: 因为有许多的函数, 我们要通过一个确定的方式去挑选出最好的函数, 通常我们用 loss function 去评价一个函数的好坏.(3)通过评价和测试, 选择出 Best function.
2. 课程中提供的主要例子是预测宝可梦进化后的 CP 值, 一只宝可梦可由 5 个参数表示, x=(x_cp, x_s, x_hp, x_w, x_h). 我们在选择 model 的时候先选择 linear model. 接下来评价 goodness of function , 它类似于函数的函数, 我们输入一个函数, 输出的是 how bad it is, 这就需要定义一个 loss function. 在所选的 model 中, 随着参数的不同, 有着无数个 function(即, model 确定之后, function 是由参数所决定的), 每个 function 都有其 loss, 选择 best function 即是选择 loss 最小的 function(参数), 求解最优参数的方法可以是 gradient descent!
3.gradient descent 的步骤是:(1)随机初始化参数.(2)再向损失函数对参数的负梯度方向迭代更新.(3)learning rate 控制步子大小, 学习速度. 梯度方向是损失函数等高线的法线方向.
4.gradient descent 可能带来的问题:(1)得到的是局部最小值, 而不是全局最小值.(2)若存在鞍点, 也不容易得到最佳解. 不过在线性回归中利用梯度下降算法得到的解一定是全局最小值, 因为线性回归中的损失函数是凸的.(有关梯度下降的原理, 分类等具体看下一篇文章)
5. 很容易想到, 刚刚我们用了一次方程作为 model, 二次方程会不会更好一些呢, 三次方程, 四次方程呢? 于是我们做了以下实验, 用同样的方法, 放到多次方程中.
6. 通过上面四幅图可以看出, 虽然当我们增加函数次数时, 可以使 training data 的 Average Error 越来越小, 但是 Test data 的表现却不尽如人意, 甚至在五次方程时, 大大超出了我们的预估, 那么这种现象就叫做 overfitting. 在得到 best function 之后, 我们真正在意的是它在 testing data 上的表现. 选择不同的 model, 会得到不同 的 best function, 它们在 testing data 上有不同表现. 复杂模型的 model space 涵盖了简单模型的 model space, 因此在 training data 上的错误率更小, 但并不意味着在 testing data 上错误率更小. 模型太复杂会出现 overfitting.
7. 解决 Overfitting 的两种方法:(1)Redesign the Model Again.(2)Regularization, 对线性模型来讲, 希望选出的 best function 能 smooth 一些, 也就是权重系数小一些, 因为这样的话, 在测试数据受噪声影响时, 预测值所受的影响会更小. 所以在损失函数中加一个正则项 λΣ(w_i)^2. 越大的λ, 对 training error 影响不大, 主要是用于降低 testing error, 我们希望函数 smooth, 但也不能太 smooth. 调整λ, 选择使 testing error 最小的λ. 如下图所示
ML Lecture 2: Where does the error come from?
来源: https://www.cnblogs.com/XDU-Lakers/p/10521427.html