机器学习基础

根据自己的理解,整理了一些机器学习基础知识,如有偏颇,请指正。

所谓机器学习,就是使用计算机模拟或实现人类的学习行为。机器学习是实现人工智能的根本途径。

下述主要内容为机器学习基本术语的理解和介绍,机器学习领域的主要学习方法介绍,机器学习系统建设阶段的介绍。

基本术语

实例

实例是要对其预测的事物。实例可以是一个图片,或者一段文本。

标签

标签是预测任务的答案。标签可以是小麦未来的价格、图片中显示的动物品种、音频剪辑的含义或任何事物。

特征

特征是预测任务中使用的实例的属性,是我们的目标事物或者是从目标事物中提取出来可以代表目标事物的事物。

样本

样本指数据集的一个实例及其关联信息(特征和标签)。样本分为有标签样本和无标签样本。

有标签样本同时包含特征和标签。

无标签样本包含特征,但不包含标签。

模型

模型定义了特征与标签之间的关系。

训练是指使用样本创建或学习模型。

推断是将模型应用于无标签数据,进而预测出标签。

超参数

超参数是训练模型之前设定的参数,而不是通过训练得到的参数数据。一般对超参数进行优化,可以提高模型训练性能和效果。

训练集

训练集是用于训练模型的样本数据集,作为模型的输入数据。

验证集

验证集是用于验证模型泛化能力的样本数据集,应用于模型训练过程。模型训练过程的每次迭代都可以通过验证集对模型参数进行优化,可以用来防止模型过拟合。

测试集

测试集是用于最终测试模型泛化能力的样本数据集,应用于模型训练结束。模型训练完成后,使用测试集评估模型的泛化能力。

拟合

拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。

在机器学习中,可以认为模型学习到的特征与标签之间的关系是一个拟合函数。

在训练结束后,经常会出现欠拟合和过拟合现象。

欠拟合就是拟合函数和训练集的误差较大。通常在训练集样本数据不足的情况下,会出现欠拟合现象。

过拟合就是拟合函数和训练集的误差非常小,但是和测试集的误差较大。通常在训练集样本数据不够泛化或训练过度的情况下,会出现过拟合现象。

管道

管道是指机器学习算法的基础架构。管道包括收集数据、将数据放入训练数据文件、训练一个或多个模型以及将模型运用到生产环境。

机器学习方法

机器学习方法主要分为:监督学习,无监督学习,半监督学习,自监督学习,强化学习。

在机器学习整个发展历程中,监督学习无监督学习历史悠久,是最朴实的学习方法,后续的其他学习方法,多基于这两种学习方法变化而来。

长期以来,监督学习方法在机器学习中占统治地位,但是监督学习需要大量的人为标注数据,所以人工成本是比较高的,而且标注数据集也不一定完全准确。

人们一直在积极得探索低成本高效率的机器学习方法。

监督学习

监督学习(Supervised Learning) 使用已使用标签标记的数据,学习到一种数据本身和标签之间的关联关系,然后用来推断无标签数据的标签。

监督学习任务主要分为回归分类

回归模型可预测连续值。例如,回归模型做出的预测可回答如下问题:

  • 房产的价值是多少?
  • 用户点击此广告的概率是多少?

分类模型可预测离散值。例如,分类模型做出的预测可回答如下问题:

  • 某个指定的电子邮件是垃圾邮件还是非垃圾邮件?
  • 这是一张狗、猫还是仓鼠图片?

无监督学习

无监督学习(Unsupervised Learning) 使用无标签数据,目的是发现数据之间的相关性。

无监督学习可以独立用作数据分析,例如聚类,也可以作为监督学习的前置环节,例如降维,去噪等。

半监督学习

半监督学习(Semi-Supervised Learning) 是监督学习和无监督学习相结合的一种学习方法,利用少量标签数据和大量无标签数据进行学习。和监督学习相比较,半监督学习的成本较低,但是又能达到较高的准确度。

自监督学习

自监督学习(Self-Supervised Learning) 本质上类似半监督学习,但是不需要任何标签数据,进一步降低了成本。

自监督学习能够自行从输入数据中学习到标签(通常是使用启发式算法生成的表征),为下游任务提供有价值的表征,所以对于下游任务来说,就变成监督学习。

自监督学习是当下最热门的机器学习方法,大量应用于深度学习领域,并取得了惊人的成果。

强化学习

强化学习(Reinforcement Learning) 又称再励学习、评价学习或增强学习,用于描述和解决智能体(Agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。

不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。

强化学习是智能体(Agent)以“试错”的方式进行学习,如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是在每个离散状态发现最优策略以使期望的折扣奖赏和最大。

著名的AlphaGo就是通过强化学习诞生的。

机器学习系统阶段

构建一个机器学习系统,主要可分为三个阶段:构建管道,特征工程,模型优化。

以文本分类为例。

第一阶段:构建管道

第一阶段,构建管道,重点关注系统基础架构。确保第一个模型简单易用,并正确实施基础架构。

一个完整的管道主要包括:收集数据,探索数据,选择模型,准备数据,训练评估,模型调优,模型应用。

其中收集数据,探索数据,模型优化和模型应用效果分析等环节,都需要数据存储和处理能力,这在本质上需要一个数据平台来支撑,所以大部分机器学习任务构建在数据平台之上,或者作为数据平台的下游。
在我已知的范围内,最佳的数据平台架构是Hadoop体系架构。在机器学习任务的数据处理或分析环节,经常会出现数据爆炸的情况,而Hadoop数据平台能够轻松应对这种情况。

收集数据

在解决任何机器学习的问题中,收集数据是最重要的步骤。

机器从数据中学习知识,形成规则,没有数据,则机器就无法学习到任何知识。

机器学习到的规则,完全取决于机器学习模型的输入数据。

收集数据这一步主要是完成与外部系统的数据对接,其方式有很多种,比如数据文件,数据库,数据接口等,在机器学习系统探索期间,可以使用数据文件这类比较简单的对接方式,以快速进入机器学习系统的下一阶段的探索,当探索结束,正式建设机器学习系统时,根据组织结构的不同,可以设计特定的高效、低成本、易维护、稳定的数据对接方案。

对于大部分机器学习问题,不要求实时或近实时的接入数据,只要定期更新数据即可,以保证机器学习模型的有效性。

探索数据

在构建和训练一个模型之前,我们需要对收集到的数据进行探索,检查数据准确性,收集一些关键指标。

首先对数据进行随机抽样,检查文本内容和标签的一致性。

然后收集一些关键指标,例如样本总量,类别(或标签)总量,每个类别的样本数量,样本的文本分词数量的中位数,样本数据集的词频分布,样本的文本长度分布等。

在一个平衡的数据集中,每个类别的样本数量接近。

选择算法

当我们探索完数据后,根据我们收集的关键指标,可以对模型算法进行选型,选择一个合适的机器学习模型算法,通常是一件非常困难的事,对于不同类型的数据和不同的问题,需要使用不同的模型算法。

不过经过人们在机器学习领域长期的探索,总结了模型算法选型的一般流程图,下面是sklearn官网提供的模型算法选择流程图 :

下面是tensorflow官网提供的模型算法选择流程图

准备数据

当完成模型的选型后,我们需要将数据转换成模型可以识别的格式。

首先,打乱数据顺序,我们获取到的数据集可能是有序排列的,当我们将一个有序的数据集拆分成训练集和验证集时,会造成不好的结果。

然后,机器学习算法使用数值型输入,我们需要将文本数据转换成数值向量,这个过程分为两步:

  1. Tokenization:将文本分成单词或更小的子文本,这样可以很好地概括文本和标签之间的关系。这决定了数据集的 词汇表(数据中存在的一组唯一标记)。
  2. Vectorization:定义一个好的数值度量来描述这些文本。

文本向量化有两种表示方式:词袋模型(BOW,bag of words)和 词嵌入模型(Word Embedding)。

词袋模型,用文本的分词以及词频表示文本,不考虑语义和词的顺序,广泛用于文本分类。

词嵌入模型,将单词映射到一个向量空间,是一种一对一的映射关系,相似词映射到相似方向,在使用时,会保留词的顺序,将文本转换成一个有序的数值向量,是NLP领域的重要模型。

这里主要讨论词袋模型

词袋模型有多种,在文本分类中,一般使用N-Gram模型

N-Gram模型是一种语言模型,是一个基于概率的判别模型,考虑了单词之间的顺序。但是N-Gram本身也指一个由单词组成的集合,集合的每个单词是按照单个分词为单位进行滑动窗口操作,形成长度为N的新词,此时,N-Gram就是一个词袋模型。

这里只讨论N-Gram模型的词袋性质。

举个例子:

假设现有文本:The mouse ran up the clock

当N=1,文本特征为:['the', 'mouse', 'ran', 'up', 'clock']

当N=2,文本特征为:['the mouse', 'mouse ran', 'ran up', 'up the', 'the clock']

这个例子就是文本Tokenization的过程。

对于小的n值的N-Gram模型有特定的名称,n=1称为一元语法(unigram),n=2称为二元语法(bigram),n=3称为三元语法(trigram),常用的有bigram和trigram。

所有样本的文本的token会汇总为一个词汇表,一般来说,词汇表是一个一维向量。

当我们将文本拆分成n-gram表征后,就需要进行Vectorization,将其转化成机器学习模型能处理的数值型向量。转化后的数值型向量和词汇表向量形状相同,其分量位置一一对应。

常用的转换方法有:One-hot encodingCount encodingTf-idf encoding ,根据人们的经验, Tf-idf encoding 在准确性方面略优于其他两种方式。

下面以一个例子,来理解这三种方法。

Texts: 'The mouse ran up the clock' and 'The mouse ran down'
Index assigned for every token: {'the': 7, 'mouse': 2, 'ran': 4, 'up': 10,
  'clock': 0, 'the mouse': 9, 'mouse ran': 3, 'ran up': 6, 'up the': 11, 'the
clock': 8, 'down': 1, 'ran down': 5}

One-hot encoding,常译为独热编码,当文本中存在一个token,在相应位置记为1,否则记为0,最终形成一个数值型向量,如下:

'The mouse ran up the clock' = [1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1]

Count encoding,当文本中存在一个token,在相应位置记录token在文本中出现的次数,否则记为0,最终形成一个数值型向量,如下:

'The mouse ran up the clock' = [1, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1]

Tf-idf encoding,一些token会出现在所有样本中,这些token对样本来说,作为特征不明显,无法有效表征文本,上面两种方法的共同问题是没有对这些token进行惩罚,而tf-idf解决了这个问题,编码结果如下:

'The mouse ran up the clock' = [0.33, 0, 0.23, 0.23, 0.23, 0, 0.33, 0.47, 0.33,
0.23, 0.33, 0.33]

tf-idf资料很多,其具体算法不在此赘述。

完成向量化后,就需要进行特征选择和标准化等操作,一般需要投入大量的时间,在机器学习系统建设初期,这些操作可以做到初期可用即可,优先完成管道的构建,当管道构建完成后,就可以重点进行特征工程了,也就是下面提到的机器学习系统第二阶段。

除了对文本进行向量化,标签也需要进行向量,比较简单的方式是将标签映射到 [0, num_classes -1]的向量空间。

训练评估

选择好模型算法,准备好数据后,就可以将数据fed进模型,训练出模型。

这个过程通过使用pipeline串联起来,以保证模型应用时,对输入的原始数据进行相同的转化。

当训练出模型后,需要评估模型的表现,观测是否可用于生产。

这一步主要建立模型的评估指标体系,这些指标用来观察模型表现,辅助我们对模型进行调优。

除了根据具体场景设计的评估指标,还有很多通用评估指标,在文本分类中,常用的是准确率,其评估的是模型预测的标签和真实标签的差异程度,准确率越高,模型的拟合情况越好。

模型调优

当模型的评估结果不理想时,就需要对模型pipeline进行调优,包括数据预处理,特征优化,超参优化等。

例如,数据预处理时,是否去除了错误数据或干扰数据;特征抽取是否不合理;pipeline各个环节的算法的超参设置是否不合理。

当模型调优到初步可用时,我们就完成了管道的构建,接下来就可以将中心转移到特征工程和模型优化,以不断提升模型的表现了。

模型应用

模型应用有两种方式:

  1. 在线应用模型。实时将数据输入模型,获取预测结果并返回。
  2. 离线预计算。将需要预测的数据输入到模型,获取预测结果并保存,以备后用。

第二阶段:特征工程

在机器学习系统的第一阶段,主要设计三个方面:将训练数据导入学系统、对任何感兴趣的指标进行测量,以及构建应用基础架构。当构建了一个端到端的可稳定运行的系统,并制定了系统测试和单元测试后,就可以进入第二阶段了。

第二阶段,特征工程,重点关注特征分析、挖掘、组合,导入尽可能多的特征,并以直观的方式将它们组合起来。

在这一阶段,所有的指标应该仍然呈上升趋势,并会多次发布系统。

这一阶段,需要大量的分析样本数据,更深入的理解样本集,发现新特征,并尝试加入新特征,重新组合旧有特征,调整特征权重,清理不再使用的特征,调整正则化规则等。

对系统进行人工分析,收集用户反馈,将模型向更符合用户需求的方向调整。

第三阶段:模型优化

第二阶段结束时,会出现一些信号,指标的上升趋势逐渐缓和,我们开始在指标之间进行取舍:在部分实验中,一些指标上升,而另一些指标下降了。

这时,想要继续优化模型,我们可以做以下尝试:

  1. 怀疑主观假设的数据关联程度,分析数据的关联程度是否符合人的主观认知
  2. 使用新的算法或者复杂模型,组合多个算法处理数据
  3. 修改算法目标或者产品目标

主要参考资料:

https://developers.google.cn/machine-learning/guides/rules-of-ml

https://developers.google.cn/machine-learning/guides/text-classification

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值