2.2 机器学习的学习方式
根据数据类型的不同,对一个问题的建模也有不同的方式。依据不同的学习方式和输入数据,机器学习主要分为监督学习、非监督学习、半监督学习和弱监督学习。
2.2.1 监督学习
监督学习是使用已知正确答案的示例训练网络的过程。它已知数据和其一一对应的标签,然后训练一个预测模型,将输入数据映射到标签。
常见应用场景:分类和回归。
算法举例:支持向量机(Support Vector Machine,SVM)、朴素贝叶斯(Naive Bayes)、逻辑回归(Logistic Regression)、K近邻(K-Nearest Neighborhood,KNN)、决策树(Decision Tree)、随机森林(Random Forest)、AdaBoost,以及线性判别分析(Linear Discriminant Analysis,LDA)等。深度学习(Deep Learning)也多以监督学习的方式呈现。
2.2.2 非监督学习
在非监督学习中,数据并不被特别标识,因此非监督学习适用于具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。
常见应用场景:关联规则的学习及聚类等。
算法举例:Apriori算法及k-Means算法。
2.2.3 半监督学习
半监督学习的特点是,输入数据部分被标记,部分没有被标记,通过对已标记数据建模,在此基础上对未标记数据进行预测。
常见应用场景:分类和回归。
算法举例:图论推理算法(Graph Inference)、拉普拉斯支持向量机(Laplacian SVM)等,也包括一些对常用监督学习算法的延伸算法。
2.2.4 弱监督学习
弱监督学习可以看作多个标记数据的集合,次集合可以是空集、单个元素或包含多种情况(没有标记、有一个标记和有多个标记)的多个元素。数据集的标签是不可靠的,这里的不可靠可能是标记不正确、多种标记、标记不充分、局部标记等。弱监督学习的学习过程是:已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。
算法举例:给出一张包含气球的图片,需要得出气球在图片中的位置及气球和背景的分割线,这就是已知弱标签学习强标签的问题。
在企业数据应用的场景下,人们最常用的可能就是监督学习和非监督学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前半监督学习是一个很热的话题。
2.2.5 监督学习模型的搭建步骤
监督学习是指使用已知正确答案的示例来训练网络,每组训练数据有一个明确的标识或结果。想象一下,我们可以训练一个网络,让其从照片库中(其中包含气球的照片)识别出气球的照片,下面是监督学习模型的搭建步骤。
(1)数据集的创建和分类
首先,浏览你的照片(数据集),确定所有包含气球的照片,并对其进行标注。然后,将所有照片分为训练集和验证集。目标是在深度网络中找一个函数,这个函数的输入是任意一张照片,当照片中包含气球时,输出1,否则输出0。
(2)数据增强
当原始数据搜集和标注完毕,一般搜集的数据并不一定包含目标在各种扰动下的信息。数据的好坏对于机器学习模型的预测能力至关重要,因此一般会进行数据增强。对于图像数据来说,数据增强一般包括图像旋转、平移、颜色变换、裁剪、仿射变换等。
(3)特征工程
一般来讲,特征工程包含特征提取和特征选择。常见的手工特征(Hand-Crafted Feature)有尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)、方向梯度直方图(Histogram of Oriented Gradient,HOG)等。由于手工特征是启发式的,其算法设计背后的出发点不同,将这些特征组合在一起的时候有可能会产生冲突,因此将组合特征的效能发挥出来,使原始数据在特征空间中的判别性最大化,就需要用到特征选择的方法。在深度学习方法大获成功之后,对特征工程本质概念的关注度就明显降低。因为最常用到的卷积神经网络(Convolutional Neural Network,CNN)本身就是一种特征提取和选择的引擎。研究者提出的不同的网络结构、正则化、归一化方法实际上就是深度学习背景下的特征工程。
(4)构建预测模型和损失函数
将原始数据映射到特征空间之后,也就意味着我们得到了比较合理的输入。下一步就是构建合适的预测模型,得到对应输入的输出。而保证模型的输出和输入标签的一致性,就需要构建模型预测和标签之间的损失函数,常见的损失函数(Loss Function)有交叉熵、均方差等。通过优化方法不断迭代,使模型从最初的初始化状态一步步变化为有预测能力的模型的过程,实际上就是学习的过程。
(5)训练
选择合适的模型和超参数进行初始化,其中超参数如支持向量机中的核函数、误差项惩罚权重等。当模型初始化参数设定好后,将处理好的特征数据输入到模型,通过合适的优化方法不断缩小输出与标签之间的差距,当迭代结果满足截止条件,就可以得到训练好的模型。优化方法最常见的就是梯度下降法及其变种,使用梯度下降法的前提是优化目标函数对于模型是可导的。
(6)验证和模型选择
训练完训练集图片后,需要进行模型测试,即利用验证集来验证模型是否可以准确地挑选出含有气球的照片。
在此过程中,通常会通过调整和模型相关的各种事物(超参数)来重复步骤(2)和(3),诸如里面有多少个节点,有多少层,使用怎样的激活函数和损失函数,如何在反向传播阶段积极有效地训练权值等。
(7)测试及应用
当有了一个准确的模型之后,就可以将该模型部署到应用程序中。我们可以将预测功能发布为API(Application Programming Interface,应用程序编程接口)调用,并且可以从软件中调用该API,从而进行推理并给出相应的结果。