李宏毅
- 国立台湾大学电机工程学系助理教授
- 研究领域: 机器学习(尤其是深度学习)、语义理解、语音识别
- 个人主页 http://speech.ee.ntu.edu.tw/~tlkagk/
李宏毅老师的机器学习课程是我第一次以视频课程的方式学习,听下来颇受启发,个人感觉他的课程由浅入深,生动有趣,适当引入数学推导,听不懂数学推导也不会影响课程理解,最让我惊叹的是从最简单的线性回归到logistic回归再到深度学习,一气呵成,连贯性相当强,非常透彻。
本节包含内容:0.机器学习分类 1.线性回归模型的建立,梯度下降求解参数 2.分析模型误差。
0. Introduction
机器学习可以大致分为4类,分别是
1.监督学习(监督学习又可以分成回归问题和分类问题)
2.半监督学习
3.迁移学习
4.增强学习
1. Linear Regression
1.1 回归模型建立
以最简单的线性回归模型来开始整个ML的学习。通常是根据问题建立适当的数学模型,然后寻找合适的损失函数评价模型训练参数。最常用的一种求极值的方法是Gradient Descent方法。
- step1 model
建立线性回归模型
-
step2 goodness of model
使用Loss function 来评价模型,最常用的损失函数为平方损失函数。
-
step3 Gradient descent--->best function
最好的模型应该要使损失函数最小,相当于要求损失函数导数=0时的参数值。一般采用的是梯度下降的数值方法。
梯度下降的主要思想是先给参数初值,然后按照使得损失函数减少的方向(也就是梯度下降方向)迭代参数。(第4节还会进一步讲解梯度下降的方法。)
从下图可以发现参数更新的方向正是梯度的反方向。
梯度下降方法可能会出现求出的并不是全局最值点。
原因:
1. local minimum 找到的只是局部极小值点
2. saddle point 虽然此处微分为0,但其实并不是极小值点
3. plateau 因为数值解法是在微分非常小的时候停止计算,可能正好有些地方非常平缓导致微分很小。
注意: 复杂的模型会带来过拟合
1.2 Regularization
- 解决过拟合的一种方法是 Regularization。
- Regularization的思想是认为平滑的模型更好,什么是平滑的模型呢,就是说当输入x 发生变化时,带来的输出y的变化要尽量小。这就要求xi的系数要wi要比较小。
2. Error
2.1 模型误差来源
模型误差来源分为两种:1. bias偏差 2. Variance 方差
Bias
偏差可以理解为训练所得的模型本身是偏离真实的模型,可能是因为使用的模型不够好,考虑的feature不够多等因素引起的。因此无论用怎样的数据训练,在现有模型基础上训练得到的不同参数的模型预测平均来说是会偏离真实结果。
换个说法,模型用不同数据训练得到的结果进行平均后与真实模型还是有偏差的。这样的偏差是改变数据量训练得到新的模型参数所无法解决的,需要改变模型本身。Variance
模型用不同的数据训练得到的结果可能差距较大,但是综合平均来讲,其结果是接近于真实模型的。所以这时候的误差大是因为训练数据不同使得模型过拟合当前的数据从而偏离真实的模型。
对来源于方差的误差,我们可以使用更多的数据来训练获得更好的模型。
偏差大,方差小 -- Underfitting
如果模型在训练数据上拟合不好,那说明模型的偏差大,模型underfitting
- 偏差大,解决办法: 1.加入更多的特征 2.选择更复杂的模型
偏差小,方差大 -- Overfitting
如果模型在训练数据表现很好,但是在测试数据上误差大,那么很可能模型的方差大,模型overfitting
- 方差大,解决办法: 1. 使用更多的数据 2. 加入Regularization
(注:加入正则项之后,因为限制了模型的权重wi只能是比较小,所以训练出的模型限制在一个比较小的可能集合中,不同数据拟合的模型差距有限,从而控制了方差。)
注意:模型训练结束后,不能因为在未知的真实测试集上效果不好,而回来修改模型参数,这个是没有意义的,只是将模型修改得适用于要测试的数据。
2.2 N折交叉验证
如果你不相信在一个训练数据上得到的模型进行比较,那么我们可以采用N折交叉验证。
- 将数据集分成N份,每次使用其中的1份做测试集,N-1份做训练集,这样总共有N次训练。
- 我们有M个模型要进行比较。每次用一份数据对M个模型进行训练,得到M个误差。这样训练N次后,得到平均误差,选择平均误差最小的那个模型,然后再用整个数据集训练这个选出的模型。