神经网络是机器学习的一种模型,它们已经存在至少50年了。神经网络的基本单位是节点,它是模拟哺乳动物大脑中的生物神经元。神经元之间的连接也以生物大脑为模型,这些连接随着韶光的推移而发展(通过“演习”)。
在20世纪80年代中期和90年代早期,神经网络在架构上取得了许多主要的进步。然而,得到良好结果所需的韶光和数据减少了实用的速率,从而降落了人们对它的兴趣。在21世纪初,打算能力呈指数级增长,业界见证了打算技能的“寒武编年夜爆发”,这在此之前是不可能的。深度学习(Deep learning)在那十年爆炸式的打算增长中脱颖而出,成为该领域的有力竞争者,赢得了许多主要的机器学习竞赛。截至2017年,投资者的兴趣并未降温,本日,我们在机器学习的每个角落都可以看到深度学习。
在这里,我想分享10种强大的深度学习方法, AI工程师可以运用到他们的机器学习问题中。但首先,让我们来定义什么是深度学习。对许多人来说,深度学习一贯是一个难以定义的寻衅,由于在过去十年中,它的形式发生了缓慢的变革。为了直不雅观地将深度学习置于语境中,下图解释了人工智能、机器学习和深度学习之间的关系的观点。
人工智能的领域很广,已经存在很永劫光了。深度学习是机器学习领域的一个子集,机器学习是人工智能的一个子领域。深度学习网络与“古典的”前馈多层网络的差异在于:
当我说“更多的神经元”时,我的意思是神经元的数量在过去的几年里一贯在上升,可以表达更繁芜的模型。层也从多层网络中完备连接的每一层发展到卷积神经网络中各层之间神经元的局部连接块,再到循环神经网络中同一神经元的循环连接(除了前一层的连接)。
那么深度学习可以定义为以下四种基本网络架构之一的具有大量参数和层次的神经网络:
无监督预先演习网络卷积神经网络循环神经网络递归神经网络在这篇文章中,我紧张对后3个架构感兴趣。卷积神经网络基本上是一个标准的神经网络,它利用共享的权值进行了跨空间的扩展。CNN的设计是通过内部的卷积来识别图像,卷积可以看到图像上识别的物体的边缘。循环神经网络基本上是一种标准的神经网络,它将输出送到下一个韶光步而不是下一层。RNN用于识别序列,例如语音旗子暗记或文本。它内部有循环,这意味着网络中存在短时影象。递归神经网络更像是一个层次网络,个中输入序列实际上没有韶光的观点,但输入必须以树的办法分层处理。下面的10个方法可以运用于所有这些体系构造。
1 —反向传播反向传播只是打算函数的偏导数(或梯度)的一种方法,它的形式是函数的复合形式(如神经网络)。当你利用基于梯度的方法办理优化问题时(梯度低落只是个中之一),你须要在每次迭代中计算函数梯度。
对付神经网络,目标函数具有组合形式。如何打算梯度?有两种常见的方法:(i) 解析微分。你知道函数的形式。你只要用链式法则(基本微积分)打算导数就行了。(ii) 近似微分利用有限差分。这种方法的打算代价很高,由于函数求值的个数是O(N),个中N是参数的个数。与解析微分比较,这个打算代价是非常大的。然而,有限差分常日用于调试时验证反向传播的实现是不是精确。
2 — 随机梯度低落一种直不雅观的方法来考虑梯度低落是想象一条河流的路径起源于山顶。坡度低落的目标正是这条河努力要达到的目标,即从山上爬下来,到达山脚的最低处。
现在,如果山的地形是这样形成的,在到达终极目的地(山脚的最低点)之前,河流不会在任何地方完备停滞流动,那么这便是我们想要的空想情形。在机器学习中,这相称于说,我们已经从初始点(山顶)开始找到理解决方案的全局最小(或最优)。然而,有可能是地形的缘故原由导致了河流的流经路径上有几个坑,这可能会使得河流的流动陷入困境并结束不前。在机器学习术语中,这种凹坑被称为局部极小解,这是不可取的。有很多方法可以办理这个问题(我没有谈论这个问题)。
3 — 学习率低落
在随机梯度低落优化过程调度学习率可以提高性能并减少演习韶光。有时这被称为“学习率退火”或“自适应学习率”。在演习过程中,对学习率的最大略、大概也是最常用的调度是随着韶光的推移降落学习率的技能。当利用较大的学习率值时,这些方法可以在演习过程的开始时进行较大的变动,并降落学习率,从而在演习过程的后期对权重进行较小的更新,从而减少更新的次数。这样做的效果是,及早快速学习良好的权重,然后对其进行微调。
两种常用且易于利用的学习率衰减方案如下:
根据韶光逐步降落学习速率。在特定时间点对学习率进行大幅的低落。4 — Dropout具有大量参数的深度神经网络是非常强大的机器学习系统。然而,在这样的网络中,过拟合是一个严重的问题。大型的网络用起来往往很慢,这样的话,想通过对多个大型神经网络组合的办法来办理过拟合问题就非常困难了。Dropout是办理这个问题的一种技能。
其关键思想是,在演习过程中随机地从神经网络中删除单元(以及它们的连接)。这就避免了神经元之间的过度协作。在演习过程中,从指数数量的不同的“稀疏”网络对神经元进行dropout。在测试时,大略地利用具有较小权重的单个网络,就可以很随意马虎地近似所有这些稀疏网络的预测均匀值的效果。这大大减少了过拟合,与其他正则化方法比较有了很大的改进。Dropout在视觉、语音识别、文档分类和打算生物学等方面改进了神经网络在监督学习任务中的性能,在许多基准数据集上得到了最前辈的结果。
5 — 最大池化Max池是一个基于采样的离散化过程。目标是对输入表示(图像、隐蔽层输出矩阵等)进行下采样,降落其维数,并许可对被包含的特色的子区域做出估计。
这样做的部分缘故原由是,通过供应一种抽象的表示形式来帮助减少过拟合。此外,它还通过减少要学习的参数的数量来降落打算本钱,并为内部表示供应基本的平移不变性。最大池化是通过对常日是不重叠的子区域利用最大化滤波器来实现的。
6 — Batch Normalization神经网络包括深度网络都须要对权值初始化和学习参数进行仔细的调试,Batch Normalization可以使得对初始化和学习的哀求放松一点。
权重问题:
无论初始化的权重是随机的还是履历选择的,它们都与学习的权重相差甚远。考虑一个mini batch,在初始阶段,在所需的特色激活方面会有许多非常值。
深度神经网络本身是不适定的,即初始层的一个小扰动会导致后一层的大变革。
在反向传播过程中,这些征象会对梯度造成滋扰,这意味着在学习权重以产生所需输出之前,梯度必须对非常值进行补偿。这就须要额外的韶光来收敛。
Batch normalization将这些梯度从分散的离群值变成归一化的值,并在mini batch的范围内让它们向共同的目标流动(通过对它们进行归一化)。
学习率问题:一样平常情形下,学习率保持在较小的范围内,只有很小一部分梯度可以改动权重,缘故原由是非常激活的梯度不应该影响学习到的激活。通过Batch normalization,这些非常激活被减少,因此可以利用较高的学习率来加速学习过程。
7 — 是非时影象Long Short-Term Memory:LSTM网络与递归神经网络中常见的神经元有以下三个不同之处:
它可以掌握输入什么时候进着迷经元它可以掌握何时记住上一个韶光步骤中计算的内容它可以掌握何时将输出通报到下一个韶光步LSTM的美妙之处在于,它根据当前输入本身来决定这统统。
当前韶光戳处的输入旗子暗记x(t)决定了以上3个点。输入门为点1做一个决定,忘却门在点2上做决定,输出门在点3上做决定。仅凭输入就能做出这三个决定。它的灵感来自于我们的大脑如何事情,以及如何处理基于输入的溘然的高下文切换。
8 — Skip-gram:词嵌入模型的目标是学习每个词的高维的密集的表示,个中嵌入向量之间的相似性表示对应单词之间的语义或语法的相似性。Skip-gram是一种学习词嵌入算法的模型。
skip-gram模型(以及许多其他词嵌入模型)背后的紧张思想如下:如果两个词共享相似的高下文,那么这两个词是相似的。
换句话说,假设你有一句话,像“猫是哺乳动物”。如果你用“狗”代替“猫”,这个句子仍旧是一个故意义的句子。因此,在这个例子中,“狗”和“猫”可以共享相同的高下文(即“哺乳动物”)。
基于上述假设,你可以考虑一个高下文窗口(包含k个连续项的窗口)。然后你该当跳过个中一个单词,试着学习一个神经网络,它能得到所有的词,除了被跳过的那个,并预测被跳过的那个。因此,如果两个词在一个大型语料库中重复地共享相似的高下文,那么这些词的嵌入向量将具有附近的向量。
9 — 连续词袋模型:在自然措辞处理问题中,我们希望将文档中的每个单词表示为一个数字向量,这样在类似高下文中涌现的单词的向量就会非常靠近。在连续词袋模型中,目标是能够利用特定单词周围的高下文并预测特定的单词。
我们通过在一个大语料库中利用很多很多的句子来做到这一点,每次我们看到一个单词,我们就利用周围的单词。然后我们将高下文单词输着迷经网络,并预测该高下文中央的单词。
当我们有数千个这样的高下文单词和中央单词时,我们就有了神经网络数据集的一个实例。我们对神经网络进行演习,末了编码后的隐含层输出表示特定单词的嵌入。当我们对大量的句子进行演习时,在相似语境下的单词会得到相似的向量。
10 — 迁移学习:让我们考虑一下图像是如何通过卷积神经网络的。假设你有一个图像,你对它进行卷积,你得到像素的组互助为输出。假设它们是边缘。现在再次运用卷积,现在你的输出是边缘或者线的组合。现在再次运用卷积,你的输出是线的组合,等等。你可以把它想象成每一层都在探求一个特定的模式。神经网络的末了一层会变得非常分外。如果你在ImageNet上演习,你的网络的末了一层会探求孩子、狗、飞机或其他东西。在后面几层,你可能会看到网络在探求眼睛、耳朵、嘴巴或轮子。
深度CNN中的每一层都在逐步构建越来越高等的特色表示。末了两层每每专门处理你输入模型的随便什么数据。另一方面,早期的层更加通用,在更大的图片类中有很多大略的模式。
迁移学习便是说,你在一个数据集上演习CNN,去掉末了一层,然后在另一个数据集上重新演习模型的末了一层。直不雅观地说,你是在对模型进行再演习,以识别不同的高等特色。因此,当你没有足够的数据或者演习须要太多的资源时,迁移学习是一个有用的工具。
深度学习非常看重技能。对付每一个新想法都没有太多详细的阐明,大多数新想法的提出都附有实验结果,以证明它们是可行的。深度学习就像玩乐高。节制乐高积木和其他艺术一样具有寻衅性,但更随意马虎入门。
英文原文:https://medium.com/cracking-the-data-science-interview/the-10-deep-learning-methods-ai-practitioners-need-to-apply-885259f402c1
更多文章,请关注微信公众年夜众号:AI公园