所谓的机器学习,机器为什么可以学习?

我理解的机器学习就是通过对大量过往样本进行黑箱建模,并用优化算法来拟合模型的参数,从而对新的输入进行分类、回归或者标注。那一个最基础的问题是,机器为什么可以学习,对样本集有什么要求,怎样的样本集从理论上就无法进行机器学习实践?
关注者
53
被浏览
3654
首先机器学习并不都是黑箱,有很多模型从统计学的角度来说都是有良好的解释性的,比方说朴素贝叶斯(通过统计现有数据的概率性质来对新的样本进行推断),比方说决策树(不断选择能最大程度减少熵的方案最后得到最有可能的解)。

接下来讲讲怎样才算机器学习

人可以通过经验学习,比方说“朝霞不出门,晚霞行千里”,就是通过经验得来的知识。获得知识后,即使在不同的地点,不同的时间,看到不同的霞,我们也能作出正确的判断。那么,机器是否也能学习并利用经验,从而对一些未出现过的情况,在不通过显式编程(人作出判断并告诉机器)的情况下也能作出正确的预测呢?答案是可以的,这就是机器学习

对于机器来说,经验是通过数据传达的。机器学习的主要研究内容就是从数据中产生模型的算法,也即学习算法。Mitchell给出一个更为形式化的定义,假设我们用P来表示程序处理任务T时的性能,如果程序通过利用经验E提高了在任务T上的性能,则称该程序对E进行了学习

机器为什么能学习呢?这个问题有点懵,说成机器是怎样学习到知识的可能好理解一些。

举一个用线性回归的例子来辅助说明吧。:

给定一个包含 d 个属性的实例 \mathbf{x} = (x_1;x_2;...;x_d)线性模型(linear model)的原理是学得一个可以通过属性的线性组合来进行预测的函数,也即:

f(\mathbf{x}) = w_1x_1 + w_2x_2 + ... + w_dx_d + b

一般写作向量形式:

f(\mathbf{x}) = \mathbf{w}^T\mathbf{x} + b

其中权重向量 \mathbf{w} 和偏置项 b 就是我们需要学习的参数。

假设我们有一个具有 n 个实例及对应真实值的数据集 D,也即有X, Y \in D。并且有 \mathbf{x}_1, \mathbf{x}_2, ... , , \mathbf{x}_n \in X(注意区分 \mathbf{x}_1x_1,前者表示第一个实例,后者表示某个实例第一维的取值)和 \mathbf{y}_1, \mathbf{y}_2, ... , , \mathbf{y}_n \in Y。那么开始时机器并不知道正确的参数,权重向量 \mathbf{w} 和偏置项 b 取什么值好,我们可以先让它随意地为权重向量 \mathbf{w} 和偏置项 b 取值。

假设我们使用均方误差作为损失函数

E(f;D) = \frac{1}{m} \sum_{i=1}^m \mathbf{y}_i-f(\mathbf{x}_i))^2\\
\qquad\qquad = \frac{1}{m} \sum_{i=1}^m(\mathbf{y}_i-\mathbf{w}\mathbf{x}_i-b)^2

那么我们希望学到的参数,也即权重向量 \mathbf{w} 和偏置项 b ,能使损失函数E(f;D) 的值最小

怎样实现这个愿望呢?我们可以使用梯度下降算法来求出(参数的)最优解。梯度下降是什么这里就不展开啦,往下降最快的方向靠拢什么的,属于数学范畴了。总结一下就是使用一种优化方法来找出能把损失降到最小的参数

回应一下前面机器学习的定义,这时候机器通过利用数据集D实现了性能上的提高(最终得到的参数所计算出的损失比刚开始时随意猜的一个参数计算出的损失小),这就是机器进行了学习了。

机器学习对数据集,准确地来说,对训练集有什么要求呢

这就涉及到过拟合和欠拟合的问题了,这里简单说一说。什么是过拟合,举个例子,要预测输入的样本是哺乳动物还是鱼类,假设每个样本包含的特征有脚的数目,眼睛的数目,等等..,如果你的训练集中所有没有脚的都是鱼类,那么机器可能就会错误地把这个训练集本身的偏见当作是一条真实的规律,学到错误的模型,往后输入的样本只要没有脚都预测为鱼类(显然输入鲸鱼和海豚时就不对了),这是数据不足,无法正确体现现实世界的真实分布引起的。至于欠拟合,同样举个例子,比方说你要拟合一条曲线,但你使用直线 y = ax+ b 去拟合,那么即使你找到使训练集误差最低的参数,误差也依然很高,这是模型本身复杂度不足, 即使数据充足也无法正确学习到真实分布引起的。以前机器学习之所以没有这么火爆,一是因为数据量太少了,没有办法体现出真实情况,机器学习到的可能在训练集上表现得很好,但实际预测时表现很差(也即过拟合);二是计算能力不足,使用更复杂的模型和海量数据时不能在可以接受的时间内完成,而使用较简单的模型时又会欠拟合。但现在就不同了,深度学习动则百万级的参数个数,海量数据可以达到上T的级别,数据量上去了,计算能力也能支撑,机器学习的效果就出来了。

所以说到底其实为什么机器能学习跟玄学是没有半点关系的。其实都是数学知识的推导和利用而已(这句话可能不够严谨,现在最火的深度神经网络确实是一种黑箱模型,很难用数学知识给出完美的解释,但笔者认为这只是我们的思维受到限制而已,目前也有很多针对提高深度神经网络模型解释性的工作)。而对数据集的要求,可以简单总结为,能体现出客观世界中的真实分布

最后推一下自己对周志华教授的西瓜书写的笔记吧:familyld/Machine_Learning,有兴趣的同学可以fork这个项目,一起把习题都做出来~