机器学习系统学习
- 机器学习是实现人工智能的手段
- 机器学习就是找到一个最好的函数,能够对输入的机器找到一个最好的解(例如语音识别,图像识别,下棋等等)
- 机器学习的三个步骤:
- 定义一个函数集合
- 通过训练数据判断每个函数的好坏
- 找到训练集中最好的函数,这个函数就是我们用来做机器学习的函数
- 根据所给的训练数据可以分为以下三种类型
- 监督学习:也就是给的数据会贴上标签,知道这个数据输入进去通过函数会输出什么东西
- 无监督学习:数据是没有标签的,对于输入的数据,机器是不知道他会输出什么的,这种方式就是机器完全自学
- 半监督学习
- 举例:对于图像识别,如果训练数据有标签,例如输入猫的图片,我们知道要输出的是猫,这种就是监督学习,如果没有贴上标签,只输入猫的图片,没有告诉机器我们要得到的结果是猫,而要让机器自己知道要输出猫,这种就是无监督学习
- 机器学习分类
- 回归问题(Regression):目标输出是一个数字
- 分类问题(Classification):
- 二元分类(Binary Classification):输出只有两种情况,例如yes/no
- 多类别分类(Multi-class Classification):输出有很多种分类
- 上课举例:估测pokemon进化后的CP值
-
定义一个一次线性函数集合: a set of f(无限个)
-
定义一个损失函数(Loss)输入是一个函数,输出是这个函数有多不好。L(f)定义为所有的训练数据的(实际数据-真实数据)的平方的和
-
找到最小的Loss值对应的函数,这个函数就是我们要找的用来机器学习的函数
-
由于函数是无限的,那么我们怎么找到最小的Loss值对应的函数呢。我们这里采用的一种方法就是梯度下降(Gradient Descent),这个方法所对应的理论基础是泰勒级数,具体之后再说
-
梯度下降的方法:
- (假设现在我们提供的函数集只有一个参数w)计算Loss的一次导数,如果一次导数小于0,我们就要增加w,大于0,就要减少w,当一次导数为0时对应的就是局部的最优解
- 每次我们要减少或者增加的w值越大,机器的学习效率就越高,越小就越慢(但是不是越大越好,后面会讲解)
- 经过很多次迭代之后,我们就找到了最合适的w,这个w对应的函数就是最合适的函数
- 如果函数集有很多个变量呢(我们只用对每个变量求偏导就行,然后对每个变量进行一个梯度下降)
- (假设现在我们提供的函数集只有一个参数w)计算Loss的一次导数,如果一次导数小于0,我们就要增加w,大于0,就要减少w,当一次导数为0时对应的就是局部的最优解
-
当我们的得到的误差在测试集和训练集的误差依然很大的时候,我们可以采用重新调整函数模型的方法,例如我们考虑参数的二次方,但是奇怪的是如果我们考虑了更多的参数之后,Error值在训练集上的表现会很好,但是在测试集上的表现会特别糟糕,这种情况叫做过拟合(对应的,如果在训练集上的表现就特别糟糕,这叫做欠拟合)。所以对于过拟合的方法,我们采取的措施就是规整化(Regularization),具体做法如下:
-
Regularization:
- 我们把loss函数重新定义一下,加上一个参数对loss的影响,如果如果参数越小,函数九越平滑,也就是说输入对于输出的影响越小(想想要是一个输入x增加了增加了啊a,那么输出就增加了所有参数wi*a的和,如果wi越小,对应增加的值也就越小,函数越不受影响,对于测试集不确定的输入影响也就越小。
- 但是如果我们过分的考虑平滑度,也就是说我们的λ非常大,我们如果要让loss小的话,我们肯定要关注后面的一部分,考虑前面那一部分的误差就会少一些。所以我们的λ应该适当的取值,例如下图当我们λ取值为100是最合适的,无论是测试集还是训练集的error都是相对来说最优的。
-