本文长度为
5288字
,
建议阅读
10分钟
本文为你总结10个深度学习方法,适用于四种基本网络架构。
在过去十年里,大众对机器学习的兴趣与日俱增。几乎每天都可以在计算机科学程序、行业会议和华尔街日报上看到机器学习的身影。在所有关于机器学习的讨论中,很多都将“机器学习的作用”和“人类希望机器学习能够做什么”这两个观念混为一谈。
从根本上说,机器学习是使用算法从原始数据中提取信息,并用某种模型进行表示,然后对于一些我们尚未建模的数据,使用模型来进行推断。
神经网络是机器学习模型的一种
,而且已经存在了至少50年了。神经网络的基本单元是节点,源于哺乳动物大脑中的生物神经元。神经元之间的联系也是基本生物大脑建立的,这些联系随着时间的推移不断进化(即“训练”)。
在二十世纪八十年代中期和九十年代初期,神经网络有了许多重要的发展。
然而,为了获得较好结果需要大量的时间和数据,这减缓了神经网络发展的速度,也降低了当时人们的关注度。在二十一世纪初,计算能力呈指数级增长,业界认为计算技术的发展比“寒武纪爆炸”都来的迅猛。在计算能力爆炸式增长的十年中,作为神经网络领域的一个重要角色,深度学习出现了,赢得了许多重要的机器学习竞赛。2017年,深度学习的热度仍然不减。今天,在机器学习的出现的地方都可以看到深度学习的身影。
最近,我已经开始阅读关于深度学习的学术论文。
根据我的个人研究,下列出版内容对这个领域的发展产生了巨大的影响:
通过研究和学习,关于深度学习相关知识我收获颇丰。在这里,我想分享AI工程师用于解决机器学习问题的10个强大的深度学习方法。但首先,我们需要定义什么是深度学习。 定义深度学习是很多人面临的一个挑战,因为它的形式在过去的十年中已经慢慢地发生了改变。为了在视觉上定义深度学习,
下图展示了人工智能AI,机器学习和深度学习之间的关系。
人工智能领域广泛且存在时间较长。深度学习是机器学习领域的一个子集,
而机器学习是AI领域的一个子集。
一般将深度学习网络与“典型”前馈多层网络从如下方面进行区分:
上述 “更多的神经元”,是指近年来神经元的数量不断增加,深度学习就可以表示更为复杂的模型。层也从多层网络中每一层的完全连接,进化成卷积神经网络中神经元片段的局部连接,以及与递归神经网络中的同一神经元的循环连接(与前一层的连接除外)。
在四种基本网络架构中,深度学习可以被定义为具有大量参数和层数的神经网络:
-
无监督预训练网络(Unsupervised Pre-trained Networks)
-
卷积神经网络(Convolutional Neural Networks)
-
循环神经网络(Recurrent Neural Networks)
-
递归神经网络(Recursive Neural Networks)
在这篇文章中,我主要关注后三种网络架构。卷积神经网络基本上是一个使用共享权重扩展空间的标准神经网络。
CNN通过在内部卷积来识别图像,它可以看到图像上识别对象的边缘。递归神经网络基本上是一个使用时间延伸扩展空间的标准神经网络,它提取进入下一时间步的边沿,而不是在同一时间进入下一层。RNN进行序列识别,例如语音或文本信号,因其内部具有循环,意味着在RNN网络中存在短时记忆。递归神经网络更类似于分层网络,其中输入序列实际上与时间无关,但输入必须以树状方式分层处理。以下10种方法适用于上述所有的网络架构。
1. 反向传播(Back-Propagation)
反向传播是一种简单计算函数的偏导数(或梯度)的方法,它的形式是函数组合(如神经网络)。当你使用基于梯度的方法求解最优化问题(梯度下降只是其中之一)时,你想在每次迭代中计算函数梯度。
对于一个神经网络,其目标函数是组合形式。如何计算梯度?有2种常规方法:
2. 随机梯度下降法(Stochasitc Gradient Descent)
理解梯度下降的一种直观的方式是,想象一条源于山顶的河流的路径。梯度下降的目标正是河流努力实现的目标—即从山顶流到最底点(在山麓处)。
现在,如果山的地形是这样一种形状,即河流在到达最终目的地(山麓的最低点)之前不会停留,这也是我们所希望的理想情况。在机器学习中,是指从初始点(山顶)开始,我们已经找到了全局最小值(或最优值)的方案。然而,可能由于地形性质,导致河流路径出现若干的坑洼,会迫使河流困住和停滞。在机器学习方面,这种坑洼被称为局部最优解,这是我们不想要的情况。当然有很多方法可以解决局部最优解问题,这里我不打算进一步讨论。
因此,由于地形的性质(或机器学习中函数的性质),梯度下降很容易卡在局部最小值。但是,当你找到一个特殊的山地形状(像一个碗,在机器学习的术语中称为凸函数),那么算法始终能够找到最优值。你可以将想象的这条河流可视化。在机器学习中,这些特殊的地形(也称为凸函数)总是需要优化。另外,你从山顶开始(即函数的初始值)的位置不同,最终你到达山底的路径也完全不同。同样,根据河流的流淌速度(即梯度下降算法的学习速率或步长),你可能会以不同的方式到达目的地。你是否会陷入或避免一个坑(局部最小),都会被这两个标准影响。
3. 学习速率衰减(Learning Rate Decay)
调整学习速率来进行随机梯度下降中的过程优化,可以提高性能并减少训练时间。有时这被称为学习速率退火或自适应学习速率。随着时间的推移而降低学习速率是训练过程中最简单也是最常用的自适应学习速率技术。在训练初期使用较大的学习速率值,可以对学习速率进行大幅调整;在训练后期,降低学习速率,使模型以一个较小的速率进行权重的更新。这种技术在早期可以快速学习获得一些较好的权重,并在后期对权重进行微调。
两个流行和简单的学习速率衰减方法如下:
4. Dropout
拥有大量参数的深度神经网络是非常强大的机器学习系统。然而,在这样的网络中过度拟合是一个很严重的问题。并且大型网络的运行速度很慢,使得在测试阶段,通过结合多个不同的大型神经网络的预测来解决过拟合问题是很困难的。Dropout技术可以用来解决这个问题。
其关键的思想是,在训练过程中随机地从神经网络中删除单元(以及相应的连接),进而防止单元间的过度适应。在训练过程中,在指数级的不同“稀疏”网络中剔除样本。在测试阶段,很容易通过使用有较小权重的单解开网络(untwined
network),将这些稀疏网络的预测取平均进而逼近结果。这能有效地避免过拟合,并且相比其它的正则化方法能得到更大的性能提升,Dropout技术已经被证明在计算机视觉、语音识别、文本分类和计算生物学等领域的监督学习任务中能提升神经网络的性能,并在多个基准测试数据集中达到顶尖结果。
5. 最大池化
最大池化是一种基于样本的离散化方法。目标是对输入表征(图像、隐藏层的输出矩阵等)进行下采样,降低维度并且允许对包括在子区域中的特征进行假设。
通过提供表征的抽象形式,这种方法在某种程度上有助于解决过拟合。同样,它也通过减少学习参数的数量和提供基本的内部表征的转换不变性来减少计算量。最大池化是通过将最大过滤器应用于通常不重叠的初始表征子区域来完成的。
6. 批量归一化(Batch Normalization)
当然,包括深度网络在内的神经网络需要仔细调整权重初始化和学习参数。批量归一化能使这个过程更简单。
权重问题:
在反向传播过程中,这些现象会导致梯度的偏移,这意味着在学习权重以产生所需输出之前,梯度必须补偿异常值。而这将导致需要额外的时间才能收敛。
批量归一化使这些梯度从离散到正常值,并在小批量范围内(通过归一化)向共同目标流动。
学习率问题:
通常来说,学习率保持较低,使得只有一小部分的梯度用来校正权重,原因是异常激活的梯度不应该影响已经学习好的权重。通过批量归一化,这些异常值激活的可能性会被降低,从而可以使用更大的学习率加速学习过程。
7. 长短期记忆(Long short-Term Memory)
长短期记忆网络(LSTM network)的神经元和其他递归神经网络(recurrent neural network)中常用神经元在以下三个方面有所不同:
LSTM的强大在于它能只基于当前的输入就决定以上所有的值。请看下方的图表:
当前时间标记处的输入信号x(t)决定了上述所有3个点。输入门(input gate)决定了第1点,遗忘门(forget gate)决定了第2点,输出门(output gate)决定了第3点。只依赖输入就能完成所有这三项决定。这受到了大脑工作机制的启发,大脑可以基于输入来处理突然的上下文切换。
8. Skip-gram
词嵌入模型的目标是为每个词汇项学习一个高维密集表征,其中嵌入向量之间的相似性显示了相应词语之间的语义或句法相似性。Skip-gram是一种学习词嵌入算法的模型。
skip-gram 模型(和很多其它词嵌入模型)背后的主要思想是:如果两个词汇项有相似的上下文,则它们是相似的。