《机器学习》的思考

ZhuYuanxiang 2019-03-10 00:00:00
Categories: Tags:

机器学习是一门跨了多门学科的科学,于是学习过程中大量的多学科的知识导致越学越茫然。好像学了许多,但是又好像什么都不会。虽然每个人的能力只是做好一个螺丝钉,但是就连做一个什么样的螺丝钉心里都没有底。这个问题一直困扰着我,于是想通过下文的整理使自己不要迷失在细节中。

从广义上说,机器学习的本质就是人们想建设一个聪明的工具,这个工具是利用计算机 ( 大脑 ) + 各种机械 ( 身体 + 四肢 ) 组成的,通过这个聪明的工具可以解决人类越来越复杂的问题。

从狭义上说,机器学习的本质就是使用计算机学会人的知识从而可以解决问题。

俗话说 : “发现问题是水平,解决问题是能力”,所以问题的发现是不能依靠计算机来完成的,只有人找到了问题 ( 即目标 ) ,才可以针对性地利用计算机去解决问题。发现问题的水平是无法通过学习获得的,只能通过反复的学习理论知识和实践操作后才能慢慢增长 ( 内功 ) ,因此对于我们这些机器学习的初学者来说可以先学习前人已经发现的问题,即 “确定问题” 的部分。如果那些问题还可以在具体项目中去印证,那你是非常幸运的,因为通过这样的印证就可以评估你对项目的理解 ( 即问题的确定 ) 是否正确,从而不断提升你发现问题的能力。如果你没有具体的项目,那么最好的办法就是把它们记下来,毕竟关键的问题其实是很有限的,现实情况更多是多个类型问题的混杂,需要分析者有很强的背景知识,这里就不再展开了。

那么对于我们这些初学者,知道了问题后应该怎么办呢?先通过下文建立一个学习框架,然后选择一个自己感兴趣的问题,或者自己能力相对足够的问题,深入进去。通过解决一个问题的步骤,从而把机器学习的整个流程搞清楚,然后再依据这个流程去试着深入解决其他的问题,从而不断拓展自己的理论基础。

确定问题

有监督学习,有教师学习,有样本学习

通过一组带有类别标签的数据样本对系统模型进行训练,训练的方式基于模型中定义的策略,利用一定的优化算法,得到模型的重要参数作为学习的结果,学习的目的是在输入数据和数据标签中建立起明确的关联知识,从而利用这个知识对于给定的输入数据预测输出数据。

具体到数学上的表述就是,基于问题确定一个学习模型,得到这个模型的数学函数 ( 例如神经网络模型 ) ,函数中变量的参数 ( 例如神经网络的权值 ) 是未知的,将输入数据 (X) 送入自变量中,输出数据 ( Y) 就是对应的因变量,利用训练样本中输入数据和输出数据的关系,基于某种学习策略 ( 例如最小平方和 ) 和某种优化算法 ( 例如最大似然估计 ) 求得参数的值。但是在实际情况中,参数是无法正确求得的,因为现实世界的模型是复杂的,都需要非线性模型来描述,而人类现阶段的数学手段是无法合理地求解非线性模型的,只能使用各种加入了非线性手段的线性模型来对现实系统的近似,而人类对所求系统了解有限,再加上系统中存在各种干扰因素 ( 统称为噪声 ) ,使得参数解得的结果无法确定是否正确。于是,人们就打算从两方面入手来解决参数求解的问题。一方面是增加对系统的了解 ( 即先验知识 ) ,并且利用数学公式将这些先验知识 ( Bayes 方法 ) 加入到函数中去 ( 正则化方法 ) ,从而使假设的模型与实际系统尽可能相似。当然先验知识有些时候可能是错误的,有些时候只是为了防止事情的判断过于绝对而加入的扰动,因此就需要无信息先验这种手段来平衡。另一方面就是通过大量的数据 ( 大数定理 ) 求解多个模型,然后使用模型评估 ( 测试集验证 ) 的方式选出最好的模型,而数据的获得相对于认识的加深要更加容易一些,这也就是为什么当今流行的是统计机器学习的原因。

类似于人们通过问题 + 答案的方式来学习,但是中间缺少严密的推导过程,因为现实世界中的复杂系统其数学本质都是非线性模型,当前数学的研究还无法完整的描述非线性模型。比如 : 中医就是输入一种药材,得到一个身体的感受,由于人类无法获得自己身体的完整知识 ( 非线性模型 ) ,只能通过构造一个近似的模型 ( 阴阳五行系统,线性模型 ) 来逼近真实的系统。于是人类随着发展不断扩展对于人体的认识,然后将之作为先验知识纳入到阴阳五行的描述体系中。当然人类对于身体的认识肯定会存在错误,因此中国的古人就依靠大量的数据样本 ( 5000 年的历史 ) 来纠正模型中的错误先验。同时,为了防止错误的先验给人带来严重的后果,所以才有治病当“三分治,七分养”的俗语。

无监督学习

半监督学习

选择模型

问题名称 模型名称 模型公式
回归问题 简单线性模型 $y(x) = wx + b$
回归问题 一般线性模型 $f(\underset{i}{\sum} w \phi(x))$
回归问题 线性基函数模型 $\underset{i}{\sum} w_i \phi_i(x)$
分类与回归 广义线性模型 $y(\mathbf{x})=f(\underset{i}{\sum} w_i x_i + b)$
分类问题 泊松回归模型
分类问题 Logistic 回归模型
分类问题 感知器模型 $y(\mathbf{x})=f(\underset{i}{\sum} w_i x_i + b)$
分类与回归 神经网络模型 $y_k(\mathbf{x,w})=f(\underset{j}{\sum}w_{kj}^{(2)}h(\underset{i}{\sum} w_{ji}^{(1)} x_i + b_j^{(1)})+b_k^{(2)})$

线性模型

非线性模型

准备数据

学习模型

学习策略

优化算法

评估模型

评估方法

性能度量

参考文献