机器学习是一门跨了多门学科的科学,于是学习过程中大量的多学科的知识导致越学越茫然。好像学了许多,但是又好像什么都不会。虽然每个人的能力只是做好一个螺丝钉,但是就连做一个什么样的螺丝钉心里都没有底。这个问题一直困扰着我,于是想通过下文的整理使自己不要迷失在细节中。
从广义上说,机器学习的本质就是人们想建设一个聪明的工具,这个工具是利用计算机 ( 大脑 ) + 各种机械 ( 身体 + 四肢 ) 组成的,通过这个聪明的工具可以解决人类越来越复杂的问题。
从狭义上说,机器学习的本质就是使用计算机学会人的知识从而可以解决问题。
俗话说 : “发现问题是水平,解决问题是能力”,所以问题的发现是不能依靠计算机来完成的,只有人找到了问题 ( 即目标 ) ,才可以针对性地利用计算机去解决问题。发现问题的水平是无法通过学习获得的,只能通过反复的学习理论知识和实践操作后才能慢慢增长 ( 内功 ) ,因此对于我们这些机器学习的初学者来说可以先学习前人已经发现的问题,即 “确定问题” 的部分。如果那些问题还可以在具体项目中去印证,那你是非常幸运的,因为通过这样的印证就可以评估你对项目的理解 ( 即问题的确定 ) 是否正确,从而不断提升你发现问题的能力。如果你没有具体的项目,那么最好的办法就是把它们记下来,毕竟关键的问题其实是很有限的,现实情况更多是多个类型问题的混杂,需要分析者有很强的背景知识,这里就不再展开了。
那么对于我们这些初学者,知道了问题后应该怎么办呢?先通过下文建立一个学习框架,然后选择一个自己感兴趣的问题,或者自己能力相对足够的问题,深入进去。通过解决一个问题的步骤,从而把机器学习的整个流程搞清楚,然后再依据这个流程去试着深入解决其他的问题,从而不断拓展自己的理论基础。
确定问题
有监督学习,有教师学习,有样本学习
通过一组带有类别标签的数据样本对系统模型进行训练,训练的方式基于模型中定义的策略,利用一定的优化算法,得到模型的重要参数作为学习的结果,学习的目的是在输入数据和数据标签中建立起明确的关联知识,从而利用这个知识对于给定的输入数据预测输出数据。
具体到数学上的表述就是,基于问题确定一个学习模型,得到这个模型的数学函数 ( 例如神经网络模型 ) ,函数中变量的参数 ( 例如神经网络的权值 ) 是未知的,将输入数据 (X) 送入自变量中,输出数据 ( Y) 就是对应的因变量,利用训练样本中输入数据和输出数据的关系,基于某种学习策略 ( 例如最小平方和 ) 和某种优化算法 ( 例如最大似然估计 ) 求得参数的值。但是在实际情况中,参数是无法正确求得的,因为现实世界的模型是复杂的,都需要非线性模型来描述,而人类现阶段的数学手段是无法合理地求解非线性模型的,只能使用各种加入了非线性手段的线性模型来对现实系统的近似,而人类对所求系统了解有限,再加上系统中存在各种干扰因素 ( 统称为噪声 ) ,使得参数解得的结果无法确定是否正确。于是,人们就打算从两方面入手来解决参数求解的问题。一方面是增加对系统的了解 ( 即先验知识 ) ,并且利用数学公式将这些先验知识 ( Bayes 方法 ) 加入到函数中去 ( 正则化方法 ) ,从而使假设的模型与实际系统尽可能相似。当然先验知识有些时候可能是错误的,有些时候只是为了防止事情的判断过于绝对而加入的扰动,因此就需要无信息先验这种手段来平衡。另一方面就是通过大量的数据 ( 大数定理 ) 求解多个模型,然后使用模型评估 ( 测试集验证 ) 的方式选出最好的模型,而数据的获得相对于认识的加深要更加容易一些,这也就是为什么当今流行的是统计机器学习的原因。
类似于人们通过问题 + 答案的方式来学习,但是中间缺少严密的推导过程,因为现实世界中的复杂系统其数学本质都是非线性模型,当前数学的研究还无法完整的描述非线性模型。比如 : 中医就是输入一种药材,得到一个身体的感受,由于人类无法获得自己身体的完整知识 ( 非线性模型 ) ,只能通过构造一个近似的模型 ( 阴阳五行系统,线性模型 ) 来逼近真实的系统。于是人类随着发展不断扩展对于人体的认识,然后将之作为先验知识纳入到阴阳五行的描述体系中。当然人类对于身体的认识肯定会存在错误,因此中国的古人就依靠大量的数据样本 ( 5000 年的历史 ) 来纠正模型中的错误先验。同时,为了防止错误的先验给人带来严重的后果,所以才有治病当“三分治,七分养”的俗语。
- 回归问题 : 是个连续型数学问题,输入变量和输出变量都是连续有界的 ( 例如实数 ) 。
- 分类问题 : 是个离散型数学问题,输入变量可以是连续有界的,也可以是离散的,输出变量一定是离散的 ( 例如整数 ) 。也属于模式识别问题。
- 二分类问题
- 多分类问题
- 标注问题 : 是个结构型数学问题,输入变量和输出变量都是结构化的对象 ( 例如序列 ) 。
- 标注问题既可以看作分类问题的推广,也可以看作结构预测问题的简化。
无监督学习
- 聚类问题 : 将输入数据中相似 ( 距离计算 ) 的样本聚合为一个类别。 [^周志华,2018] ( Ch 09 )
半监督学习
- 有监督学习与无监督学习的扩展,建议入门期间可以跳过。
选择模型
问题名称 | 模型名称 | 模型公式 |
---|---|---|
回归问题 | 简单线性模型 | $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)})$ |
线性模型
- 线性回归模型 : 以下四个模型都是输入变量的线性函数。其中多元多重线性回归模型是最复杂的,可以通过将部分参数设置为 0 ( 稀疏化 ) ,从而简化为其他线性回归模型。
- 一个自变量与一个因变量,叫简单线性模型 (Simple Linear Model),或简单线性回归模型 (Simple Regression Model),或一元线性回归模型,或一元一阶线性回归模型,是其他线性模型的基础。输入变量 $x$ 是标量,输出变量 $y$ 也是标量。^Bishop,2007
- $y[n] = wx[n] + b$
- 一个自变量与多个因变量。输入变量 $x$ 是标量,输出变量 $\mathbf{y}$ 是向量。这是个欠定模型,没有固定解,欠定线性模型基本没有研究意义,欠定非线性模型则通过非线性函数空间来表达数据的先验知识,使低维数据分解成有意义的高维数据,感兴趣的可以参考欠定的盲源分离。
- $y_k[n]=w_{k} x[n] + b_k$
- 多个自变量与一个因变量,叫一般线性模型,或多元线性回归模型 (Multivariate Linear Regression),是一元线性模型的泛化,还可以看作主成分分析和数据降维。输入变量 $\mathbf{x}$ 是向量,输出变量 $y$ 是标量。^Bishop,2007
- $y[n]=\underset{i}{\sum}w_i x_i[n] + b=\mathbf{w}^T\mathbf{x} + b$
- 多个自变量与多个因变量,也叫多元多重线性回归模型 (Multivariate Multiple Linear Regression),也可以看作多元线性回归模型的泛化。输入变量 $\mathbf{x}$ 是向量,输出变量 $\mathbf{y}$ 也是向量。
- $\mathbf{y}{k}[n]=\underset{i}{\sum}w{ki}x_{i}[n]+b_{k}=\mathbf{w}{k}^T\mathbf{x}+b{k}$
- 一个自变量与一个因变量,叫简单线性模型 (Simple Linear Model),或简单线性回归模型 (Simple Regression Model),或一元线性回归模型,或一元一阶线性回归模型,是其他线性模型的基础。输入变量 $x$ 是标量,输出变量 $y$ 也是标量。^Bishop,2007
- 线性基函数模型 : 参数的线性函数。非线性变换输入变量到线性可分的特征空间、^Bishop, 2007
- $y[n]=\underset{i}{\sum}w_i \phi_i(\underset{j}{\sum}v_jx_j[n]+a)+b=\mathbf{w}_k\mathbf{\Phi}(\mathbf{v}^T\mathbf{x}+a)+b$
- 广义线性模型 : 是一种线性模型框架。可以通过不同的函数 f ( 链接函数 ) ,从而将多个类型的线性模型利用统一的框架表述出来。Bishop, 2007
- $y(\mathbf{x})=f(\underset{i}{\sum} w_i x_i + b)=f(\mathbf{w}^T\mathbf{x}+b)$
- 泊松回归 ( Poisson regression ) : 用于描述计数 ( count data ) 数据。
- 逻辑回归 ( Logistic regression ) 和概率回归 ( probit regression ) : 用于描述二元数据。
- 多项式逻辑回归 ( Multinomial logistic regression ) and 多项式概率回归 ( Multinomial probit regression ) : 用于描述分类数据。
- 序列逻辑 ( Ordered logit ) 和序列概率回归 ( ordered probit regression ) : 用于描述序列数据。
- 感知器模型 :
- $y(\mathbf{x})=f(\underset{i}{\sum} w_i x_i + b)$
- 神经网络模型 : Bishop, 2007
- $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)})$
非线性模型
准备数据
学习模型
学习策略
- 最小平方和
优化算法
- 最大似然估计
评估模型
评估方法
- 留出法
- 交叉验证法
- 自助法
性能度量
- 均方误差
- 错误率
- 精度
- 查准率
- 查全率
参考文献
- [^Bishop, 2007] Bishop, C. M. Pattern Recognition and Machine Learning. 2007.
- [^周志华,2018] 周志华. 机器学习. 清华大学出版社. 2018.