【.com速译】众所周知,深度学习虽然属于人工智能的范畴,但深度学习是机器学习的一种特殊形式。从过程上看,机器学习和深度学习都是从使用测试数据训练某个模型开始,然后通过一系列的优化过程找到最适合模型的数据权重。显然,这两种方法都可以处理数值(回归)和非数值(分类)问题,但在对象识别和语言翻译等应用领域,深度学习模型往往比机器学习模型更适用。详细来说,Machinelearning机器学习算法通常分为两种类型:有监督的(用各种答案标记训练数据)和无监督的(任何可能的标签都不会在训练算法中显示)。监督机器学习可以进一步分为:分类(预测非数字答案,例如抵押贷款逾期的概率)和回归(预测数字答案,例如某个影响者产品的销量)。无监督学习又可以分为:聚类(找到相似对象的分组,比如跑鞋、步行鞋、正装鞋)、关联(找到对象的共同逻辑,比如咖啡和奶油)、降维(做投影),特征选择和提取)。分类算法分类问题属于监督学习的范畴。它需要在两个或多个类别之间进行选择,最后为每个类别分配一个概率。最常见的算法包括:朴素贝叶斯、决策树、逻辑回归、k最近邻和支持向量机(SVM)。您还可以使用其他集成方法(模型组合),例如:随机森林,以及AdaBoost和XGBoost等提升方法。回归算法回归问题也属于监督学习的范畴。它要求模型能够预测一个数字。其中最简单和最快的算法是线性(最小二乘)回归。但是,它通常只会给出不准确的结果。其他常见的机器学习回归算法(除了神经网络)包括:朴素贝叶斯、决策树、k-最近邻、LVQ(学习向量量化)、LARS(最小角度回归)、套索、弹性网络、随机森林、AdaBoost和XGBoost等。显然,回归和分类机器学习算法之间存在一些重叠。聚类算法聚类问题属于无监督学习的范畴。它要求模型找到相似的数据点组。最流行的算法之一是K-Means聚类。其他常见算法包括:均值漂移聚类、DBSCAN(基于密度的空间聚类与噪声应用)、GMM(高斯混合模型)和HAC(凝聚层次聚类)。降维算法降维问题也属于无监督学习的范畴。它要求模型删除或合并对结果影响很小或没有影响的变量。它通常与分类或回归结合使用。常见的降维算法包括:删除缺失值较多的变量、删除方差较小的变量、决策树、随机森林、删除或合并高度相关的变量、后向特征剔除、前向特征选择、因子分析、PCA(主成分分析)、etc.各种优化方法我们需要通过训练和评估来优化参数的权重,找到一组最接近真实情况的值,然后将监督学习算法转化为合适的模型。在实践中,这些算法的优化通常依赖于那些最速下降法的变体,例如随机梯度下降法,它本质上是从随机起点执行多个最速下降法。随机梯度下降的常见改进包括基于动量校正梯度的方向因子,或调整学习率从一个数据(或称为时期或批次)到下一个数据的进展。数据清洗为了让杂乱无章的数据可供机器学习使用,我们必须对数据进行全面的过滤,包括:1.第一时间查看数据,排除掉那些有大量缺失数据的列。2、再看数据,选择需要预测的列(即特征选择)。这也是您在迭代时可能想要更改的内容。3.排除剩余列中缺失数据的那些行。4.更正明显的拼写错误并合并相应的答案。例如:U.S.、US、USA、America应该都归为一类。5.排除数据超出范围的行。示例:如果您正在分析纽约市内的出租车行程,您将希望过滤掉驶出该城市区域边界的地理坐标行。当然,您可以添加您认为合适的其他步骤,具体取决于您收集的数据类型。您甚至可以在机器学习管道中设置一些数据清理步骤(请参阅-https://www.infoworld.com/article/3198252/data-in-intelligence-out-machine-learning-pipelines-demystified.html),所以它可以根据需要进行修改和重用。数据编码和标准化为了对数据进行分类,您需要将文本标签编码成另一种形式。常见的有两种:一种是标签编码,将每个文本标签值替换为一个数字。另一种是单热编码,它将每个文本标签值替换为具有二进制值(1或0)的列。一般来说,因为标签编码有时会让机器学习算法误认为编码的列已经是一个序列,所以我们更倾向于使用one-hotencoding。为了使数值数据适合机器回归,我们经常需要对数据进行归一化。否则,更大范围的数可能会主导特征向量之间的欧氏距离(这是m维空间中两点之间的真实距离),并且可能会以牺牲其他字段为代价来消除这种影响。放大,然后导致急剧下降的优化很难收敛。目前机器学习的数据归一化和标准化的方法有很多,包括:最小值标准化、均值标准化、单位长度扩展等。有时该过程也称为特征缩放(https://en.wikipedia.org/wiki/Feature_scaling)。特征工程特征是观察到的现象的可测量属性。“特征”的概念通常与解释变量相关联。这里的解释变量常用于线性回归等统计技术中。特征向量会将单行的所有特征组合成一个数值向量。选择特征的巧妙之处在于是否可以选择能够解释问题的最小自变量集。如果两个变量高度相关,要么将它们组合成一个特征,要么删除其中一个。有时,当我们进行主成分分析时,我们可以将相关变量转换为一组线性独立变量。在实际应用中,我们可以通过简单的方式构造新的特征或对特征向量进行降维。例如,从死亡年份中减去出生年份得出死亡年龄,这是寿命和死亡率分析的主要独立变量。当然,在其他情况下,特征构建并不是那么微不足道。拆分数据监督机器学习中的一种常见做法是将数据集拆分为用于训练、验证和测试的子集。它的一种工作方式是将80%的数据分配给训练数据集,将另外10%的数据分配给验证和测试数据集。目前,大部分训练都是在数据集上进行的。在每个时期结束时,我们将对验证数据集进行预测。验证数据集中的这些错误不仅可以用于识别停止条件和驱动超参数调整,还可以帮助您确定目标模型是否过度拟合训练数据。对测试数据集的预测通常是在最终模型上完成的。如果测试数据集从未用于训练,我们有时将其称为holdout数据集。与其他常见的拆分数据方案一样,交叉验证将整个数据集重复拆分为训练数据集和验证数据集。Python、SparkMLlib(https://www.infoworld.com/article/3141605/review-spark-lights-up-machine-learning.html)和Scikit-learn(https://www.infoworld.com/article/3158509/review-scikit-learn-shines-for-simpler-machine-learning.html)是机器学习库的最佳选择。在R语言中,常见的机器学习包有CARAT、randomForest、e1071和KernLab。而在Java中,您可以使用Java-ML、RapidMiner和Weka。作为机器学习的一种应用形式,深度学习在训练模型的输入和输出之间有多个隐藏层。在大多数讨论中,深度学习意味着使用深度技术的神经网络。当然,除了神经网络,深度学习还使用了一些算法来实现其他类型的隐藏层。“人工”神经网络的长期概念是相互连接的阈值开关网络,这些阈值开关形成人工神经元,可以学习识别动物大脑和视网膜等神经系统等模式。反向传播学习基本上是通过在训练期间同时激活两个神经元时加强它们之间的连接而发生的。在目前的神经网络软件中,最常见的方法是使用一种称为误差反向传播(或backprop,BP)的规则来增加神经元之间连接的权重。人工神经网络中的每个神经元都有一个传播函数。该函数通过对连接的神经元进行加权来转换它们的输出。传播函数将输出传递给激活函数,激活函数在输入超过阈值时触发。神经网络中的激活函数在1940年代和50年代,人工神经元通常使用称为感知器的单步激活函数。今天的神经网络引入了平滑的激活函数,例如逻辑函数、S型函数、双曲正切函数和线性整流单元(ReLU)。其中,ReLU虽然存在“学习率设置过高时神经元会在训练过程中‘死亡’”的问题,但它仍然是快速收敛的最佳选择。激活函数的输出可以传递给输出函数以进行额外整形。然而,输出函数通常是恒等函数,因此激活函数的输出直接传递给下游连接的神经元。神经网络拓扑结构常见的神经网络拓扑结构是:1.在一个前馈网络中,神经元可以分为:一个输入层、n个隐藏处理层和一个输出层。每层的输出只会输入到下一层。2.在具有快捷连接的前馈网络中,一些连接可以跳过一个或多个中间层。3.在循环神经网络中,一个神经元可以通过下一层直接或间接地影响自己。神经网络的监督学习类似于其他机器学习:我们用一组训练数据来表示网络,将网络的输出与预期输出进行比较以生成误差向量,然后根据误差向量修正网络。在应用校正之前一起运行的那些批训练数据称为时期。在实现细节中,反向传播根据模型的权重和偏差使用关于梯度的误差(或成本)函数来找到正确的方向以最小化误差。因此,应用程序的正确性取决于优化算法的变量和学习率。如前所述,这个变量通常需要足够小以保证收敛并避免导致ReLU神经元“死亡”。神经网络优化器通常,神经网络优化器使用某种形式的梯度下降算法来驱动反向传播。同时,它会使用一种机制来避免陷入局部极小值,例如:只优化那些随机选择的minibatch(随机梯度下降),并对梯度使用动量校正。此外,一些优化算法(例如:AdaGrad、RMSProp和Adam)也会通过查看梯度的历史来调整模型参数的学习率。与所有机器学习一样,您需要根据单独的验证数据集检查神经网络的预测。如果不这样做,您可能会创建一个神经网络,它只能记住输入的内容,而不能学习成为广义预测器。深度学习的各种算法一个针对实际问题的深度神经网络可能由十多个隐藏层组成,其拓扑结构也可能很复杂或不同。一般来说,网络层数越多,优点是可以识别的特征越多,缺点是计算时间越长,训练难度越大。卷积神经网络(CNN)通常用于机器视觉等应用。该网络通常使用卷积层、池化层、ReLU、全连接层和dropout层来模拟视觉皮层。其中,卷积层主要整合了很多小的重叠区域。池化层执行非线性形式的下采样。ReLU层使用非饱和激活函数f(x)=max(0,x)。在全连接层中,神经元与前一层的所有激活都有连接。损失层主要负责计算网络训练如何“惩罚”那些预测标签和真实标签之间的偏差,使用Softmax或交叉熵损失函数进行分类,或者使用欧氏损失函数进行回归。循环神经网络通常用于自然语言处理(NLP)、序列处理、长短期记忆(LSTM)网络和基于注意力的神经网络。在前馈神经网络中,信息通过隐藏层从输入流向输出。这有效地将网络一次限制为一种状态。在循环神经网络(RNN)中,信息反复循环,使网络只记住最近的输出,从而可以分析顺序和时??序。当然,RNN有两个常见问题:梯度爆炸(我们可以通过钳位轻松解决)和梯度消失(不太容易解决)。在LSTM中,网络可以使用遗忘和门控来修改先前信息的权重并记住它们。有了这样的长短期记忆,网络就解决了梯度消失的问题。同时,LSTM还可以处理数百个过去的输入序列。注意模块是将权重应用于输入向量的通用门。它的分层神经注意编码器使用多层注意模块来处理数千个过去的输入。尽管不是神经网络的一部分,随机决策森林(RDF)也可用于一系列分类和回归问题。由多个层次结构组成的RDF,输出单个树的预测统计数据(通常是分类模式或回归平均值)的平均值。在随机方面,RDF在单个树上使用引导聚合(也称为装袋),并根据树的属性定制随机子集。XGBoost(eXtremeGradientboost)同样不属于深度神经网络,是一个可扩展的端到端树增强系统。它在许多机器学习挑战中取得了先进的成果。与RDF不同,它的梯度树提升从单个决策树或回归树开始。通过优化,其后续树是基于先前树的残差构建的。目前业界公认最好的Python深度学习框架包括:TensorFlow、Keras、PyTorch、MXNet。Deeplearning4j是最好的Java深度学习框架之一。ONNX和TensorRT是深度学习模型的运行时。一般来说,经典(非深度)机器学习算法的训练和预测速度要比深度学习算法快很多。一个或多个CPU足以训练一个经典模型。深度学习模型通常需要GPU、TPU或FPGA等硬件加速器来进行训练和大规模部署。没有它们,这些模型可能需要几个月的时间来训练。自然语言处理是深度学习的一个分支,包括语言翻译、自动摘要、协同参考解析、语篇分析、词法分割、命名实体识别、自然语言生成、自然语言理解、词性标注、情感分析和语音识别等深度学习的另一个主要应用领域是图像分类。它包括:带定位的图像分类、目标检测、目标分割、图像风格迁移、图像着色、图像重建、图像超分辨率和图像合成等。此外,深度学习已成功用于预测分子间的相互作用帮助制药公司设计新药、寻找亚原子粒子、利用自动分析构建人脑的3D显微镜图像等。原标题:Deeplearningvs.machinelearning:Understandthedifferences,作者:MartinHeller
