人工智能常见算法简介
人工智能的三大基石—算法、数据和计算能力,算法作为其中之一,是非常重要的,那么人工智能都会涉及哪些算法呢?不同算法适用于哪些场景呢?
一、按照模型训练方式不同可以分为监督学习(SupervisedLearning),无监督学习(UnsupervisedLearning)、半监督学习(Semi-supervisedLearning)和强化学习(ReinforcementLearning)四大类。
常见的监督学习算法包含以下几类:(1)人工神经网络(ArtificialNeuralNetwork)类:反向传播(Backpropagation)、波尔兹曼机(BoltzmannMachine)、卷积神经网络(ConvolutionalNeuralNetwork)、Hopfield网络(hopfieldNetwork)、多层感知器(MultilyerPerceptron)、径向基函数网络(RadialBasisFunctionNetwork,RBFN)、受限波尔兹曼机(RestrictedBoltzmannMachine)、回归神经网络(RecurrentNeuralNetwork,RNN)、自组织映射(Self-organizingMap,SOM)、尖峰神经网络(SpikingNeuralNetwork)等。(2)贝叶斯类(Bayesin):朴素贝叶斯(NaiveBayes)、高斯贝叶斯(GaussianNaiveBayes)、多项朴素贝叶斯(MultinomialNaiveBayes)、平均-依赖性评估(AveragedOne-DependenceEstimators,AODE)贝叶斯信念网络(BayesianBeliefNetwork,BBN)、贝叶斯网络(BayesianNetwork,BN)等。(3)决策树(DecisionTree)类:分类和回归树(ClassificationandRegressionTree,CART)、迭代Dichotomiser3(IterativeDichotomiser3,ID3),C4.5算法(C4.5Algorithm)、C5.0算法(C5.0Algorithm)、卡方自动交互检测(Chi-squaredAutomaticInteractionDetection,CHAID)、决策残端(DecisionStump)、ID3算法(ID3Algorithm)、随机森林(RandomForest)、SLIQ(SupervisedLearninginQuest)等。(4)线性分类器(LinearClassifier)类:Fisher的线性判别(Fisher’sLinearDiscriminant)线性回归(LinearRegression)、逻辑回归(LogisticRegression)、多项逻辑回归(MultionmialLogisticRegression)、朴素贝叶斯分类器(NaiveBayesClassifier)、感知(Perception)、支持向量机(SupportVectorMachine)等。
常见的无监督学习类算法包括:(1)人工神经网络(ArtificialNeuralNetwork)类:生成对抗网络(GenerativeAdversarialNetworks,GAN),前馈神经网络(FeedforwardNeuralNetwork)、逻辑学习机(LogicLearningMachine)、自组织映射(Self-organizingMap)等。(2)关联规则学习(AssociationRuleLearning)类:先验算法(AprioriAlgorithm)、Eclat算法(EclatAlgorithm)、FP-Growth算法等。(3)分层聚类算法(HierarchicalClustering):单连锁聚类(Single-linkageClustering),概念聚类(ConceptualClustering)等。(4)聚类分析(Clusteranalysis):BIRCH算法、DBSCAN算法,期望最大化(Expectation-maximization,EM)、模糊聚类(FuzzyClustering)、K-means算法、K均值聚类(K-meansClustering)、K-medians聚类、均值漂移算法(Mean-shift)、OPTICS算法等。(5)异常检测(Anomalydetection)类:K最邻近(K-nearestNeighbor,KNN)算法,局部异常因子算法(LocalOutlierFactor,LOF)等。
常见的半监督学习类算法包含:生成模型(GenerativeModels)、低密度分离(Low-densitySeparation)、基于图形的方法(Graph-basedMethods)、联合训练(Co-training)等。
常见的强化学习类算法包含:Q学习(Q-learning)、状态-行动-奖励-状态-行动(State-Action-Reward-State-Action,SARSA)、DQN(DeepQNetwork)、策略梯度算法(PolicyGradients)、基于模型强化学习(ModelBasedRL)、时序差分学习(TemporalDifferentLearning)等。
常见的深度学习类算法包含:深度信念网络(DeepBeliefMachines)、深度卷积神经网络(DeepConvolutionalNeuralNetworks)、深度递归神经网络(DeepRecurrentNeuralNetwork)、分层时间记忆(HierarchicalTemporalMemory,HTM)、深度波尔兹曼机(DeepBoltzmannMachine,DBM)、栈式自动编码器(StackedAutoencoder)、生成对抗网络(GenerativeAdversarialNetworks)等。
二、按照解决任务的不同来分类,粗略可以分为二分类算法(Two-classClassification)、多分类算法(Multi-classClassification)、回归算法(Regression)、聚类算法(Clustering)和异常检测(AnomalyDetection)五种。1.二分类(Two-classClassification)(1)二分类支持向量机(Two-classSVM):适用于数据特征较多、线性模型的场景。(2)二分类平均感知器(Two-classAveragePerceptron):适用于训练时间短、线性模型的场景。(3)二分类逻辑回归(Two-classLogisticRegression):适用于训练时间短、线性模型的场景。(4)二分类贝叶斯点机(Two-classBayesPointMachine):适用于训练时间短、线性模型的场景。(5)二分类决策森林(Two-classDecisionForest):适用于训练时间短、精准的场景。(6)二分类提升决策树(Two-classBoostedDecisionTree):适用于训练时间短、精准度高、内存占用量大的场景(7)二分类决策丛林(Two-classDecisionJungle):适用于训练时间短、精确度高、内存占用量小的场景。(8)二分类局部深度支持向量机(Two-classLocallyDeepSVM):适用于数据特征较多的场景。(9)二分类神经网络(Two-classNeuralNetwork):适用于精准度高、训练时间较长的场景。
解决多分类问题通常适用三种解决方案:第一种,从数据集和适用方法入手,利用二分类器解决多分类问题;第二种,直接使用具备多分类能力的多分类器;第三种,将二分类器改进成为多分类器今儿解决多分类问题。常用的算法:(1)多分类逻辑回归(MulticlassLogisticRegression):适用训练时间短、线性模型的场景。(2)多分类神经网络(MulticlassNeuralNetwork):适用于精准度高、训练时间较长的场景。(3)多分类决策森林(MulticlassDecisionForest):适用于精准度高,训练时间短的场景。(4)多分类决策丛林(MulticlassDecisionJungle):适用于精准度高,内存占用较小的场景。(5)“一对多”多分类(One-vs-allMulticlass):取决于二分类器效果。
回归回归问题通常被用来预测具体的数值而非分类。除了返回的结果不同,其他方法与分类问题类似。我们将定量输出,或者连续变量预测称为回归;将定性输出,或者离散变量预测称为分类。长巾的算法有:(1)排序回归(OrdinalRegression):适用于对数据进行分类排序的场景。(2)泊松回归(PoissionRegression):适用于预测事件次数的场景。(3)快速森林分位数回归(FastForestQuantileRegression):适用于预测分布的场景。(4)线性回归(LinearRegression):适用于训练时间短、线性模型的场景。(5)贝叶斯线性回归(BayesianLinearRegression):适用于线性模型,训练数据量较少的场景。(6)神经网络回归(NeuralNetworkRegression):适用于精准度高、训练时间较长的场景。(7)决策森林回归(DecisionForestRegression):适用于精准度高、训练时间短的场景。(8)提升决策树回归(BoostedDecisionTreeRegression):适用于精确度高、训练时间短、内存占用较大的场景。
聚类聚类的目标是发现数据的潜在规律和结构。聚类通常被用做描述和衡量不同数据源间的相似性,并把数据源分类到不同的簇中。(1)层次聚类(HierarchicalClustering):适用于训练时间短、大数据量的场景。(2)K-means算法:适用于精准度高、训练时间短的场景。(3)模糊聚类FCM算法(FuzzyC-means,FCM):适用于精确度高、训练时间短的场景。(4)SOM神经网络(Self-organizingFeatureMap,SOM):适用于运行时间较长的场景。异常检测异常检测是指对数据中存在的不正常或非典型的分体进行检测和标志,有时也称为偏差检测。异常检测看起来和监督学习问题非常相似,都是分类问题。都是对样本的标签进行预测和判断,但是实际上两者的区别非常大,因为异常检测中的正样本(异常点)非常小。常用的算法有:(1)一分类支持向量机(One-classSVM):适用于数据特征较多的场景。(2)基于PCA的异常检测(PCA-basedAnomalyDetection):适用于训练时间短的场景。
常见的迁移学习类算法包含:归纳式迁移学习(InductiveTransferLearning)、直推式迁移学习(TransductiveTransferLearning)、无监督式迁移学习(UnsupervisedTransferLearning)、传递式迁移学习(TransitiveTransferLearning)等。
算法的适用场景:需要考虑的因素有:(1)数据量的大小、数据质量和数据本身的特点(2)机器学习要解决的具体业务场景中问题的本质是什么?(3)可以接受的计算时间是什么?(4)算法精度要求有多高?
有了算法,有了被训练的数据(经过预处理过的数据),那么多次训练(考验计算能力的时候到了)后,经过模型评估和算法人员调参后,会获得训练模型。当新的数据输入后,那么我们的训练模型就会给出结果。业务要求的最基础的功能就算实现了。
互联网产品自动化运维是趋势,因为互联网需要快速响应的特性,决定了我们对问题要快速响应、快速修复。人工智能产品也不例外。AI+自动化运维是如何工作的呢?
参考:《人工智能产品经理–AI时代PM修炼手册》作者:张竞宇