AI技术百科
AI技术学习方法及相关算法
业内通常将人工智能分类为机器学习、计算机视觉、语音交互和自然语言处理四大领域,机器学习可以理解为是其他三大领域的底层基础,大致可以分为监督学习、非监督学习、强化学习、迁移学习。
本文在此基本不涉及公式,尽量以平直易懂的语言讲述这几种机器学习方法及相关算法。个人认为在实战过程中根据工作需要再深入学习这些算法,会更有针对性而且效率会更高,事半功倍。
1.1 机器学习
概念:投喂给机器训练数据,机器从这些数据中找出一个能够良好拟合已有数据的函数,新数据来了后,就可以通过这个函数预测对应结果。
适合解决的问题:有规律可以学习、编程很难做到、有能够学习到规律的数据。
工作方式:
根据任务目标确定算法;
在预处理阶段把数据分成三组:训练数据(用来训练模型)、验证数据(开发过程中用于调参)、 测试数据(测试用);
用训练数据来构建使用相关特征的模型;
把验证数据接入模型调参;
用测试数据检查被验证的模型的表现;
用完全训练好的模型在新数据上做预测;
用更多数据或选取不同特征以及利用调整过的参数来提升优化算法的性能表现。
分类:按学习方式可以分为监督学习(包括半监督学习)、无监督学习、强化学习、迁移学习。
1.2 监督学习
概念:机器学习的一种,通过学习许多有标签的样本,得到特征值和标记值之间的对应规律,然后对新的数据做出预测。
分类:根据输入数据x预测出输出数据y,如果y是整数的类别编号,则称为分类问题,算法包括:决策树、随机森林、贝叶斯、KNN、SVM、逻辑回归。如果y是实数值,则为回归问题,算法包括决策树、随机森林、KNN、SVM、线性回归。
主流算法:
1)决策树算法
基本原理:决策树是一个树结构,每个非叶节点表示一个特征属性,每个分支代表这个特征属性在某值域上的输出,每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达某个叶节点,该叶节点存放的类别即为决策结果。
决策树是一种判别模型,既支持分类问题,也支持回归问题,是一种非线性模型(分段线性函数不是线性的),它天然的支持多分类问题。决策树的构建由机器训练得到,而不是人工制定。
决策树的关键步骤是分裂属性,即在某个节点处按照某一特征属性的不同划分构造不同的分支,尽量让一个分裂子集中待分类项属于同一类别。而根据判断方法的不同所以产生了ID3算法,C4.5算法以及CART算法。
下图以银行判断是否给客户贷款为例大致说明决策树的原理:
主要用途:基于规则的信用评估、赛马结果预测。
优劣势:擅长对人、地点、事物的一系列不同特征、品质、特性进行评估,非常容易解释,但容易趋于过拟合。
2)随机森林
基本原理:由决策树与集成学习算法相结合生成,由多棵决策树组成。用多棵决策树联合预测可以提高模型的精度,这些决策树用对训练样本集随机抽样构造出的样本集训练得到。由于训练样本集由随机抽样构造,因此称为随机森林。
随机森林不仅对训练样本进行抽样,还对特征向量的分量随机抽样,在训练决策树时,每次分裂时只使用一部分抽样的特征分量作为候选特征进行分裂。随机森林是一种判别模型,既支持分类问题,也支持回归问题,并且支持多分类问题,这是一种非线性模型。
主要用途:用户流失分析、风险评估。
优劣势:随机森林对大规模数据集和存在大量且有时不相关特征的项来说很有用,且有很好的解释性。它比使用单个模型预测出来的结果要精确的多,但同时也需要大量的维护工作。
3)朴素贝叶斯
基本原理:是在已知样本的特征向量为x的条件下反推样本所属的类别y,即对于给出的待分类项,求解在此待分类项出现的条件下各个类别出现的概率,哪个概率最大,就认为此待分类项属于哪个类别。
简单的举个例子:我们看到一个人高鼻深目金发碧眼,便可以推断他属于白种人,因为在这种外貌特征下他是白种人的概率最高。贝叶斯可以处理多分类问题,是一种非线性模型。
主要用途:文本处理里的垃圾邮件过滤、情感分析、消费者分类、拼写纠正、文字广告过滤、识别恶性评论等领域。
优劣势:对于在小数据集上有显著特征的相关对象,朴素贝叶斯方法可对其进行快速分类,且很统一被解释。所需估计的参数不大,对缺失数据不太敏感,而且无需复杂的迭代求解框架,适用于规模巨大的数据集。但是对输入数据的形式比较敏感、计算先验概率时分类决策可能存在错误。如果输入变量是相关的,则会出现问题。
4)k近邻(KNN)
基本原理:把标注好类别的训练样本映射到选取的特征数维度的坐标系里,然后再把测试样本映射到这个坐标系里,选取距离该测试样本最近的k个训练样本,其中哪个训练样本类别占比最大,就可以认为该类别就是这个测试样本的类别。
kNN算法是一种判别模型,即支持分类问题,也支持回归问题,是一种非线性模型。它天然的支持多分类问题。kNN算法没有训练过程,是一种基于实例的算法。
主要用途:适用 kNN可以处理数值型(从无限的数值集合中取值,如:0.100,42.001等)和标称型(只在有限目标集中取值,如:真与假)数据。一种特征对应一个维度,一种特征下的数据可以数值型的也可以是标称型的。
优劣势:这种算法思想简单,理论成熟,准确度高。但是会占用大量内存,因为需要存储所有的训练样本点,而且每个新测试样本需要通过kNN算法分类,都要计算这个测试样本与所有训练样本点的距离。
5)线性回归
基本原理:主要用于拟合数据趋势。简而言之,就是尽量用一条线或平面或超平面来拟合已有的一组数据。确定自变量和因变量间的相互依赖的定量关系。简单的线性回归一般使用“最小二乘法”来求解,最小二乘的思想就是使得求解的这条线或平面或超平面使所有误差的平方和最小。
主要用途:适用于数值型和标称型数据。
优劣势:结果易于理解,计算不复杂,但是只能用于拟合线性数据,非线性数据拟合效果很差。
6)逻辑回归
基本原理:逻辑回归只是对线性回归的计算结果加了Sigmoid函数进行处理,将数值结果转化为了0到1之间的概率,根据这个概率可以做预测。logistic回归是一种判别模型,它是一种线性模型,用于二分类问题。
主要用途:路面交通流量分析、邮件过滤,
优劣势:实现简单,分类时计算量非常小,速度很快,存储资源低,但是容易欠拟合。
7)支持向量机(SVM)
基本原理:支持向量机的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面最近的样本到超平面的距离尽可能远。SVM是一种判别模型,它既可以用于分类问题,也可以用于回归问题。标准的SVM只能支持二分类问题,使用多个分类器的组合,可以解决多分类问题。
主要用途:新闻分类、手写识别。
优劣势:擅长在变量x和其他变量之间进行二元分类操作,无论其关系是否为线性的。可以捕获数据之间更复杂的关系,而无需人为地进行困难的数据转换。但同时它的训练时间长得多,因为计算量更大,而且可解释性也比较差。
1.3 非监督学习
概念:机器学习的一种,训练样本中所有样本数据都不含标记值的学习方式,目的是将样本集划分成多个类,保证同一类的样本之间尽量相似,不同类的样本之间尽量不同。没有训练过程,直接对样本进行划分。
分类:聚类和降维。
主流算法:
1)k均值(k-means)
基本原理:将观测值分为 k 个聚类,随机初始化每个类的类中心,然后计算样本与每个类的中心的距离,将其分配到最近的那个类,然后根据这种分配方案重新计算每个类的中心。这也是一种分阶段优化的策略。
2)主成分分析(PCA)
基本原理:PCA是一种数据降维和去除相关性的方法,它通过线性变换将向量投影到低维空间,对向量进行投影就是让向量左乘一个矩阵得到结果向量。降维要确保的是在低维空间中的投影能很好的近似表达原始向量,即重构误差最小化。PCA是一种无监督的学习算法,它是线性模型,不能直接用于分类和回归问题。
1.4 半监督学习
训练样本中只有部分样本数据包含标记值的学习方式,当没有足够人力标记所有的样本数据,并且稍稍降低对模型预测精度的要求时,便可以使用半监督学习。相比无监督学习会有较高的精度,相比有监督学习可以大幅降低人工标记成本。
例如:在拥有上百万篇文章资讯类的网站中进行文章分类标记,便可以采用半监督学习,只需要对训练样本进行少量的人工标注处理,便可以得到较高精度的分类结果。
1.5 强化学习
强化学习是一种特殊的机器学习,根据输入环境参数确定要执行的动作,通过与环境交互来优化目标函数。在训练时,对于正确的动作做出奖励,对错误的动作做出惩罚,训练完成之后就用得到的模型进行预测。简要来说,强化学习算法是一种根据当前的状态确定要执行的动作的学习方式。
1.6 迁移学习
迁移学习简要来说,就是把已经学到训练好的模型参数迁移到新的模型来帮助并加快新模型训练数据集,这种学习方式可以大幅缩短新模型的学习时间。
1.7 深度学习
深度学习是机器学习的子集,这个概念来源于对人工神经网络的研究。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度机器学习方法也有监督学习与无监督学习之分,不同的学习框架下建立的学习模型很是不同。例如:卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
深度学习相较其他机器学习最厉害的一点:可以对数据特征进行预处理(省去数据人工标注的麻烦,同时可以对更多维和复杂的特征进行向量提取和空间向量的转换,方便后续处理),这也是它为什么很多层的原因,因为其中多出来的层数都是要用来进行数据特征提取预处理的。端到端的训练,是深度学习的核心技术。目前深度学习框架有tensorflow、keras、caffe、theano、torch等。
1)卷积神经网络(CNN)
基本原理:CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。
卷积神经网络由输入层、卷积层、激活函数、池化层、全连接层组成。卷积层的作用是指对图片的矩阵进行卷积运算,得到一些数值,作为图片的某些特征。因为采用了卷积来处理图像,所以需要使用激活函数来加入非线性因素,来增加表达力。
池化层的作用是对上层的数据进行采样和压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。全连接层连接所有的特征,将输出值分类。
前面卷积层和池化层进行处理后,得到了很多的特征,全连接层使用这些特征进行分类。比如:识别数字,那就是对0~9的十个类别进行分类。卷积神经网络是一个判别模型,它既可以用于分类问题,也可以用于回归问题,并且支持多分类问题。
主要用途:图像处理,计算机视觉和图像分类的主要算法。
2)递归神经网络(RNN)
基本原理:又叫循环神经网络,在任意神经网络中,每个神经元都通过 1 个或多个隐藏层来将很多输入转换成单个输出。递归神经网络会将值进一步逐层传递,让逐层学习成为可能。换句话说,RNN 存在某种形式的记忆,允许先前的输出去影响后面的输入。当输入数据具有依赖性且是序列模式时,RNN 对之前发生在数据序列中的事是有一定记忆的,这有助于系统获取上下文。
基于RNN还衍生出了LSTM(Long-Short-Term-Memerory)和GRU(Gated Recurrent Unit)等一系列算法,这些算法拥有记住过去的能力,所以可以用来处理一些有时间序列属性的数据,在处理语言、文字等方面有独到的优势。
LSTM和GRU的优点是具备与其它递归神经网络一样的优点,但因为它们有更好的记忆能力,所以更常被使用。
递归神经网络是一个判别模型,既支持分类问题,也支持回归问题,并且支持多分类问题。
主要用途:语言建模、文本生成、机器翻译、语音识别、生成图像描述。