参考:
模型:从数据中学到的结果。
1、机器学习到底在研究什么?
类似一次函数中的 y=kx+b( k 不为 0 ) ,我们经常是已知一大堆的(x,y)来求 k ,这一大堆已知的坐标点可以理解成数据集,k就是我们要训练的模型,b也可以理解成是参数或者是什么别的东西,但是重点在于怎么找出 k。
我们都知道一次函数中已知两点计算k的公式,这个公式就可以理解为“是一个找出 k 的方法”。当然机器学习毕竟比一次函数复杂得多,因此找出 k 的方法远远不是只有这一条“公式”,而我们需要找出更多更好的“能计算出k的公式”,这就是机器学习研究的东西——我们要研究出更多更好的能找出这个“ k ”(模型)还有这个“带k的解析式”的算法。
2、我们训练模型的目标又是什么?
(至少是对于目标检测来说)我们需要让这个求出来的“ k ”,或者我们这个解析式,能做到一件事——我随便丢一个新样本中的 x 进去,出来的 y(预测值)都是我们想要的,这就是一个验证“ k ”以及“解析式”是否符合我们预期的过程。
基本术语
数据集:你拿来用于计算机学习的100个西瓜(因为是西瓜书嘛),一般包括训练集、样本集和验证集。
训练集:训练中用的数据集,就是你喂给计算机的瓜集合。也可以叫做示例数据,也就是一次函数中的x。
标记(标签):平时的标数据集就是这个过程,你想让那个不太聪明的计算机知道这块绿色的物体是一个西瓜,你就得让他知道西瓜有什么特征,也就是属性——颜色、纹路等等的东西。如果说图片相当于x的话,那标签就相当于一次函数中的y。整个集合叫标记空间或者叫输出空间。
(个人认为属性也可以看作是特征向量?)
“k”的类别,即模型的类别:
有监督学习:人类知道正确答案。无监督学习相反。
1、分类问题。有二分类问题和多分类问题。二分类:不是1就是0,不是好瓜就是坏瓜 / 这玩意要么是瓜要么不是瓜。多分类:你要那个不太聪明的计算机判断出那个瓜是黑美人还是无籽西瓜还是什么其他种类的瓜。
2、“回归”问题:你要计算机预测连续值——瓜的成熟度 / 瓜在一年啥时候买最便宜。
3、聚类:人类不知道要对这一堆瓜分几个类,让计算机自己做主。每组称为一个簇。
泛化能力:具有强泛化能力的模型能很好地适用于整个样本空间。就是他能预测他没见过的瓜的能力。
假设空间
科学推理的两大基本手段:
1、归纳:从特殊到一般的泛化过程,详见数学归纳法的具体过程,就是从 1 推理到 n 。可以把 1 理解成样例,所以我们的机器学习可以被称为是归纳学习。
归纳学习有广义和狭义之分。
狭义:从数据集中得到一个概念,例如这东西是瓜?不是瓜?这数字是 2 ?是 7 ?
广义:从样例中学习。
2、演绎:从一般到特殊。我们从数学公理推导出的定理都算一个演绎的过程。
假设空间其实可以看作是我们作出各种假设的整个集合。
当同一个数据集训练出了不同的模型,那么我们该如何选择呢?
其实就是看你偏爱什么样的结果了。例如在目标检测中,一个模型对 A 的检测效果好,另一个模型对 B 的检测效果好,这时候就要看在你的心目中更想要哪个了。这个就是归纳偏好。
有无一般性选择原则?
奥卡姆剃刀:若有多个假设与观察一致,则选最简单的那个。因为往往最简单的那个就是抓到了最根本的那个。
没有免费的午餐定理(NFL定理):在有限的搜索空间内,由于对所有可能函数的相互补偿,最优化算法的性能是等价的。
大白话就是在有限的搜索空间内,即当所有问题出现的机会相同(所有问题同等重要的时候)胡猜的算法性能是最优的。
既然胡猜的性能跟学习算法的差不多,那我们学来干嘛?
因为在实际情况中并不是所有问题出现的机会相等啊。我们训练的时候经常是只关注某一个问题的效果,如果我们要求训练出来的模型重点在 A ,那我们管 B 干嘛?要抓住主要矛盾嘛。
所以具体情况要具体分析,脱离实际问题空谈算法性能的优劣是没有意义的。
具体情况要具体分析,这是马克思主义活的灵魂。