深度学习(DL)已成为商业智能项目中的通用名词。它属于更广泛的人工智能研究领域,也是机器学习算法的一部分。深度学习可以是监督的、半监督的和非监督的。
DL模型在计算机视觉、语音识别、自然语言处理、生物信息学、药物设计和机器翻译等方面发挥着至关重要的作用。
简单地说,大多数深度学习模型涉及将多层神经网络叠加在特定的布局中,用于预测或分类问题。神经网络是通用的、强大的和可扩展的,它们可以轻松地处理高维任务。
在2010年中期神经网络兴起之前,支持向量机在高维预测问题中的应用比如文本分类和语音识别。
在传统的分类任务中(即根据给定的症状列表和家庭健康记录来预测病人是否会被诊断为疾病;输出结果总为“是”或“否”),目的是找出区分目标变量类别(疾病状态:是或否)的决策边界。当数据是线性可分但不能理解非线性关系时,逻辑回归方法效果很好。
支持向量机在非线性和高维任务中使用核技巧和最大裕度概念来更好地执行任务。在大多数情况下,即使是强大的SVM模型也可以从适当的特征选择和特征提取/转换技术中受益。
人工神经网络的概念对计算机科学界来说并不是什么新鲜事。1957年,美国海军研究局委托Frank Rosenblatt构建感知器(神经网络)算法。单层感知器不能达到预期的性能,因为它只能捕获有限的线性模式,叠加两个或多个神经层(前馈神经网络或多层感知器)可以提高性能,但是仍然不能预测XOR函数。
Marvin Minsky和Seymor Papert在他们的著作《Perceptrons》中表明,这些网络不可能对XOR函数进行建模。多年来,该书的引用使得ANN领域的进展非常有限。直到20世纪80年代,该算法才重新开始进行积极的研究,2012年,Geoffrey Hinton在Imagenet挑战中展示了使用广义反向传播算法训练多层神经网络,这彻底改变了深度学习领域。
DL使用量的增长也应归因于启用字段。数据处理前端在2010年中期看到了突破性的变化。Hadoop分布式生态系统改变了数据处理和存储方式。与20世纪80年代的处理器相比,单核处理器的处理能力增加了多样性。设备互联网的出现使得大量的数据收集成为可能,为神经网络提供了急需的训练数据。与多核处理器相比,图形处理单元在矩阵乘法中表现良好,神经网络在很大程度上依赖于矩阵运算来完成必要的计算,现在神经网络可以在GPU上更快地训练。
神经网络的基本单位是单个神经元,其在生物大脑中的神经元之后被松散地建模。给定层(层1)中的每个神经元将连接到下一层(层2)中的所有或多个神经元。神经元之间的联系模仿生物大脑中的突触。如果神经元从其前任接收到足够的输入信号(大小超过设定的阈值),它将仅触发输出信号。
随着时间的推移改进神经网络性能的技术列表有助于它击败SVM:
1.反向传播:多层感知器(MLP)具有输入、隐藏和输出神经层。训练MLP是一项不可逾越的任务,直到1986年,Rumelhart发表了一篇文章,介绍了反向传播训练算法(也称为使用反向模式自动调节的梯度下降)。对于每个训练记录(数据点),算法计算来自每个层的神经元输出,然后最终在输出层中进行预测(正向传递),基于预测离实际输出的距离,它计算预测误差。然后使用预测误差来改变所有先前层中的神经元的权重(反向传播),直到其到达输入层以提高整体网络预测准确度。
2.每层隐藏层的隐藏层数和神经元数:单层神经网络可以给出较为合理的结果,但将它们堆叠在一起可以提高网络的学习能力。用于人脸检测的多层神经网络将胜过单层神经网络。当堆叠时,较低层可以捕获较低级别的细节(即,将面与背景分开的线),中间隐藏层可以捕获中级细节(即,正方形和圆形),输出层可以检测到高级别的特征(即眼睛的像素位置)。不过每层添加更多层和更多神经元将导致模型过度拟合,更长的训练时间和消失/爆炸梯度问题,因此需要仔细考虑这些参数。
3.激活函数(消失和爆炸梯度 - 非饱和激活函数):激活函数根据前一个输入信号决定神经元何时触发以及输出的幅度。它可以是sigmoid,tanh,softmax或ReLU变体。通常使用ReLU(整流线性单元)作为输入和隐藏层的激活功能。对于输出层,如果是分类任务,则为softmax;如果是预测,则为实际值。当RELU用于深层神经网络时,反向传播信号将减小到零或当它到达输入层时爆炸成大数,没有适当的反向传播信号,权重在下层中永远不会改变。
4.批量标准化:Sergey Ioffe和Christian Szegedy在2015年的论文中提出了BN,以解决消失和爆炸的梯度问题。就在每层的激活功能之前,零中心并标准化输入,然后通过两个新参数进行缩放和移位(一个用于缩放,另一个用于移位)。这使模型可以了解每层中训练数据的最佳比例和平均值。
5.重复使用预先训练的图层(迁移学习):可以重复使用预训练模型的较低图层权重,而不用从头开始训练新模型。如果我们正在构建一个模型来识别狗的模型,那么我们可以使用模型的较低层来确定图像中的动物是否是狗。
6.更快的优化器:优化器计算反向传播信号,这有助于网络调整所有层的神经元权重。优化器的性能和速度对网络的训练速度有直接影响。鲍里斯·波利亚克于1964年进行的动量优化是所有优化者的先驱。后来出现了Nesterov Accelerated Gradient,AdaGrad,RMSProp和Adam优化。 Adam的表现优于其他优化者。
7.学习率调度:找到合适的学习率至关重要。强烈建议在开始时使用高学习率并在训练期间减少学习率。
8.l1/l2正规化:当性能与先前的时期相比实际下降时,停止训练网络。使用l1或l2范数规范神经元权重有助于避免网络过度拟合训练数据。
9.退出:这个概念是由Geoffrey Hinton在2012年提出的,它帮助网络过度拟合。在每次训练迭代中,包括输入的所有层中的神经元都具有p从网络训练中退出的概率。该技术导致在每次迭代中训练的新架构,并且导致提高模型精度而不过度拟合训练数据
10.数据增加:标记数据比DL土地中的任何贵金属更有价值。每个网络都需要大量的标记数据才能进行训练(即,在给定图像中对猫与狗的对象检测中,我们需要标记图像进行训练) 。然而,当我们具有足够的标记训练数据时,可以对标记数据点添加一些修改以生成更多标记的训练数据。
对于每个标记的图像数据点,我们可以使用数据增强生成多个数据点。
让我们看一下从2000年开始的神经网络与支持向量机的已发表文章趋势。神经网络的文章量有很大的提升,并且在过去七年的积极研究中超过了SVM。我希望机器学习算法之间的混战会带来更好和更智能的产品。
原文标题《The Scuffle Between Two Algorithms -Neural Network vs. Support Vector Machine》
作者:Manikandan Jeeva
译者:lemon
不代表云加社区观点,更多详情请查看原文链接