AI面试必备!你弗成不知的10个深度进修方法_神经收集_深度
作者 | James Le
译者 | Sambodhi
编辑 | Vincent
出处丨AI 前哨
AI 前哨导读:孔子曾经说过,“学如不及,犹恐失落之。”因此 AI 实践者学习深度学习也要“温故而知新”。James Le 跟我们分享了他总结的 AI 实践者须要用到的 10 个深度学习方法,
过去十年来,人们对机器学习的兴趣经历了爆炸式的增长。你险些每天都能在打算机科学程序、行业会媾和《华尔街日报》(Wall Street Journal)上看到机器学习的影子。在所有关于机器学习的谈论中,许多人都将机器学习能够做什么,与他们希望机器学习能够做什么混为一谈了。从根本上来说,机器学习便是利用算法从原始数据中提取信息,并在某种类型的模型中表示出来。我们利用这个模型来推断我们尚未建模的其他数据。
神经网络是机器学习中的一种模型;它们已经存在至少有 50 年了。神经网络的基本单元是一个节点,它的灵感源自哺乳动物大脑中的生物神经元。神经元节点之间的连接也模拟了生物大脑,也会像生物大脑那样不断蜕变(即通过“演习”的办法)。
许多主要的神经网络架构都是在上世纪八十年代中期和九十年代早期完成的。不过,要得到良好的结果,须要大量的韶光和数据,当时打算机处理的能力尚不敷以知足这些哀求,人们因此对机器学习的激情亲切也降落了。这一尴尬的局势直到 21 世纪初期才得以冲破:这时候打算能力呈指数级增长。业界目睹了打算技能的“寒武编年夜爆发”,而在此之前,这些都是不可想象的。在这十年中,深度学习以机器学习领域的主要竞争者的姿态,在打算能力爆炸式增长中脱颖而出。这种热度直到 2017 年仍未降温。本日,我们在机器学习中的每个角落,都能看到深度学习的身影。
为了能够跟上这一潮流,我选修了 Udacity 的“深度学习”课程(http://u6.gg/e6fJx),这门课程很好地先容了深度学习的动机、在 TensorFlow 的繁芜、大规模数据集中学习的智能系统的设计。在教室作业中,我利用并开拓了用于图像识别的卷积神经网络,用于自然措辞处理的嵌入式神经网络,以及利用循环神经网络 / 是非期影象的字符级文本天生。Jupiter Notebook 中所有代码都可以在这个 GitHub 存储库中找到:http://u6.gg/e6fMD
下图是个中一个作业的结果,词向量的 t-SNE 投影,通过相似性进行聚类。
后来我阅读了这方面的学术论文。据我的研究得出,下面是一些对机器学习领域发展产生巨大影响的出版物:
NYU:《Gradient-Based Learning Applied to Document Recognition》,1998 年。将卷积神经网络引入机器学习领域。http://u6.gg/e6fNPToronto:《Deep Boltzmann Machines》,2009 年。为玻尔兹曼机(Boltzmann Machines)提出了一种新的学习算法,该算法包含了许多隐蔽变量层。http://u6.gg/e6fPdStanford 和 Google:《Building High-Level Features Using Large-Scale Unsupervised Learning》,2012 年。办理了仅从无标记数据构建高等特定类别的特色检测器的问题。http://u6.gg/e6fPrBerkeley:《DeCAF — A Deep Convolutional Activation Feature for Generic Visual Recognition》,2013。发布了 DeCAF,一种深度卷积激活特色的开源实现,以及所有干系的网络参数,使视觉研究职员能够在一系列视觉观点学习范例中进行深度表征的实验。http://u6.gg/e6fP6DeepMind:《Playing Atari with Deep Reinforcement Learning》,2016 年。提出了第一个利用强化学习直接从高维感官输入中成功学习掌握策略的深度学习模型。http://u6.gg/e6fPT
通过研究和学习这些学术论文,我学到了很多关于深度学习的知识。我想在本分等分享 10 个强大的深度学习的方法,AI 工程师可以将这些方法运用到机器学习的问题中。但首先,让我们先定义什么是深度学习。如何定义深度学习对许多人来说是一个寻衅,由于在过去十年,深度学习的形式都在缓慢地发生变革。为了直不雅观地阐明深度学习,如下图所示,展示了人工智能、机器学习和深度学习之间关系的观点。
人工智能领域相称广泛,存在已久。深度学习是机器学习领域的一个子集,而机器学习是人工智能的一个子领域。深度学习网络与“范例”前馈多层网络的差异如下:
深度学习网络的神经元比以前的网络更多深度学习网络的连接层的办法更为繁芜深度学习网络须要像“寒武编年夜爆炸”的打算能力进行演习深度学习网络具备自动特色提取的能力
上文提到的“更多的神经元”,意思是指神经元的数量随着韶光的推移而增加,以表达更为繁芜的模型。层也从多层网络中完备连接的各层演化为卷积神经网络中各层之间局部连接的神经元片段,以及在递归神经网络中同一神经元的循环链接(除了前一层的连接)。
因此,深度学习可以被定义为以下四个基本网络框架中具有大量参数和层数的神经网络:
无监督预演习网络(Unsupervised Pre-trained Networks)卷积神经网络(Convolutional Neural Networks)循环神经网络(Recurrent Neural Networks)递归神经网络(Recursive Neural Networks)
在本文中,我紧张对后三种架构感兴趣。
卷积神经网络(Convolutional Neural Network,CNN)基本上便是一种标准的神经网络,通过利用共享权重在空间中扩展。卷积神经网络旨在通过内部的卷积来识别图像,它可以看到图像上识别工具的边缘。
循环神经网络(Recurrent Neural Network)基本上也是一种标准的神经网络的扩展,它通过下一个韶光步骤中,而不是同一个韶光步骤中进入下一层。循环神经网络旨在识别序列,例如语音旗子暗记或文本。它内部有循环,这意味着网络中存在短时影象。
递归神经网络(Recursive Neural Network)更像是一个分层网络,个中输入序列实际上没有韶光方面,但输入必须以树形办法进行分层处理。
下面提到的 10 个方法可以运用于所有这些架构。
1 — 反向传播反向传播(Back-prop)大略来说便是打算函数的偏导数(或梯度)的一种方法,它具有函数组合的形式(如神经网络)。当你利用基于梯度的方法(梯度低落法只是个中之一)来办理最优问题时,须要在每次迭代中计算函数梯度。
对神经网络来说,目标函数具有组合的形式。如何打算梯度呢?有两种常见的方法可以打算:
(i) 解析微分:知道函数形式时,只需利用链式法则(基本微积分)打算打算导数。
(ii) 有限差分近似微分:这种方法运算量很大,由于函数求职的个数是 O(N),个中 N 是参数的个数。与解析微分比较,这种方法运算量极大。但是,有限差分常日用于在调试时验证反向传播实现。
2 — 随机梯度低落法对梯度低落的一种直不雅观理解方法是,想象一条源自山顶向下的河流。梯度低落的目标正是河流努力要达到的目标:到达最低端(山脚处)。
现在,如果山势能够使河流在到达终极目的地之前(即山麓最低处)不必完备勾留,这正是我们想要的空想情形。在机器学习中,这相称于是说,我们已经从初始点(山顶)开始找到办理方案的全局最小值(或最优值)。然而,可能由于地形的缘故原由,河道中会形成几个坑洼,会迫使河流陷入困境并结束不前。在机器学习术语中,这些坑洼被称为局部最小值,都是不可取的。有很多方法可以办理这个问题。限于篇幅,我不打算谈论这个问题。
因此,梯度低落法很随意马虎陷入局部最小值,这取决于阵势(或机器学习术语中的函数)。但是,当你有一种分外的山地阵势(比如像一只碗,用机器学习术语称为凸函数)时,算法总是能够担保找到最优解。你可以想象一下一条河流。这些分外的地形(又称凸函数)对机器学习中的优化总是有好处。此外,你遵照什么样的路径,要取决于你最初是从山顶什么地方开始的(即函数的初始值)。类似的,根据不同的河流速率(即梯度低落算法的学习率或步长),你可能会以不同的办法到达终极目的地。这两个成分都会影响你是否掉坑(局部最小值)或能否避免。
3 — 学习率衰减调度随机梯度低落优化算法的学习率可以提高性能并缩短演习韶光。有时这被称为学习率退火( learning rate annealing)或自适应学习率(adaptive learning rates)。在演习过程中,最大略、也是最常用的适应学习率的方法是逐渐降落学习率的技能。在演习初期利用较大的学习率,可以对学习率进行大幅调度;在演习后期,降落学习率,以一个较小的速率更新权重。这种方法在早期可以快速学习得到较好的权重,并在后期对权重进行微调。
两种常用且易于利用的学习率衰减方法如下:
线性逐步降落学习率。在特定时点大幅降落学习率。4 — Dropout具有大量参数的深度神经网络是非常强大的机器学习系统。然而,在这样的网络中,过拟合是一个严重的问题。大型网络的利用起来也很慢,因此在测试时结合许多不同大型神经网络的预测,很难处理过拟合问题。Dropout 是办理这个问题的一种方法。
关键思想是在演习过程中从神经网络中随机删除单元 (以及它们的连接)。这就防止了单位之间的过度适应。在演习过程中,从指数级不同的“稀疏”网络中抽取 dropout 样本。在测试时,只需利用具有较小权重的单解开网络(single untwined network),就可以很随意马虎地估计出所有这些稀疏网络的均匀预测效果。这就大大减少了过拟合,并且对其他正则化方法进行了重大改进。Dropout 已被证明可以改进神经网络在视觉、语音识别、文档分类和打算生物学等监督学习的任务性能,在许多基准数据集上得到了最精良的结果。
5 — 最大池化最大池化(Max pooling)是基于采样的离散化过程。目标是对输入表征(如图像、隐蔽层输出矩阵等)进行降采样(down-sample),减小其维数,并许可对包含在子区域中的特色进行假设。
这部分是为了通过供应抽象的表征形式来帮助过拟合。同时,通过减少学习参数的数量,降落了打算本钱,为内部表征供应了基本的平移不变性。最大池化是通过对初始表征的常日不重叠的子区域运用最大过滤器(Max filter)来实现的。
6 — 批量归一化当然,包括深度网络的神经网络须要仔细调度权重初始化和学习参数,批量归一化有助于使这一过程轻微轻松些。
权重问题:
无论权重的初始化是什么,不管是随机的还是履历选择的,它们都与学习后的权重相差甚远。考虑一个小批量,在最初的轮数(epoch)中,根据所需的特性激活,会有很多离群值。深度神经网络本身便是不适定(ill-posed)的,即初始层的一个眇小扰动会导致后面的层发生很大的变革。
在反向传播过程中,这些征象会分散梯度的把稳力,这意味着梯度必须在学习产生所需输出的权重之前补偿离群值。这就须要额外的轮数来收敛。
批量归一化将这些梯度从分散归一化到离群值,并在一个小批量的范围内朝着共同目标收敛(通过对它们进行归一化)。
学习率问题:一样平常来说,学习率保持得很小,使得只有一小部分梯度改动了权重,缘故原由是离群值激活的梯度不应该影响学习好的权重。通过批量归一化,这些离群值激活被减少,因此更高的学习率可以用来加速学习过程。
7 — 是非期影象网络是非期影象(Long short-term memory,LSTM)网络与递归神经网络中的普通神经元有以下三个差异:
它可以掌握何时让输入进着迷经元。它可以掌握决定何时记住在前一个韶光步骤中计算的内容。它可以掌握决定何时将输出通报给下一个韶光戳。
LSTM 的优点在于:它基于当前输入本身来决定所有这些。因此,如果你看一下如下图表,就会明白了:
当前韶光戳上的输入旗子暗记 x(t) 决定了以上 3 个点。输入门对第 1 点做出决定。遗忘门在第 2 点做出决定。输出门在第 3 点做出决定。单是输入就能做出这三个决定。这是受我们大脑事情办法的启示,可以根据输入处理溘然的高下文切换。
8 — Skip-gram词嵌入(Word Embedding)模型的目标是学习每个词汇词的高维密集表示,个中嵌入向量之间的相似性表示对应词之间的语义或句法相似性。Skip-gram 是学习词嵌入算法的模型。
skip-gram 模型 (以及许多其他词嵌入模型) 背后的紧张思想如下:如果两个词汇具有相似的高下文,那么它们便是相似的。
换句话说,假设你有一个句子,比如“猫是哺乳动物”。如果你用“狗”而不是“猫”这个词,这个句子仍旧是一个故意义的句子。因此在这个例子中,“狗”和“猫”可以共享相同的高下文 (即“是哺乳动物”)。
基于上述假设,你可以考虑高下文窗口(包含 k 个连续项的窗口)。然后你该当跳过个中一个单词,试着学习神经网络,它能得到所有的词,除了跳过的那个,并预测跳过的那个。因此,如果两个词在一个大型语料库中重复共享相似的高下文,这些词的嵌入向量就会有附近的向量。
9 - 连续词袋在自然措辞处理问题中,我们希望学习如何将文档中的每个单词表示为数字向量,以便涌如今相似高下文中的单词具有彼此靠近的向量。在连续词袋(Continuous Bag Of Words)模型中,目标是能够利用特定单词周围的高下文并预测特定单词。
我们通过在大型语料库中抽取大量的句子来做到这一点:每次我们看到一个词,我们就取它周围的词。然后我们将高下文的单词输入到神经网络中,并预测这个高下文中央的词。
当我们有成千上万这样的高下文词和中央词时,我们就有了一个神经网络数据集的实例。我们演习神经网络,末了编码的隐蔽层输出表示一个特定词的嵌入。当我们对大量的句子进行演习时,相似高下文中的单词会得到相似的向量。
10 — 迁移学习让我们考虑图像是如何通过卷积神经网络处理的。假设你有一个图像,你对它运用卷积,你得到像素的组互助为输出。假设它们是边。现在再次运用卷积,现在输出的是边或线的组合。然后再次运用卷积,这时候输出是线的组合,以此类推。你可以把它看作是探求特定模式的每一层。神经网络的末了一层趋向于变得非常专业化。大概如果你正在利用 ImageNet,你的网络的末了一层将用于探求孩子、狗、飞机或者其他什么。在后面几层你可能会看到网络在探求眼睛、耳朵、嘴巴或者轮子。
深度 CNN 中的每一层都在不断地构建更高层次的特色表征。末了几个层每每专门针对输入到模型中的任何数据。另一方面,前面的层更加通用,在大量的图片中有许多大略的模式。
迁移学习是当你对一个数据集进行卷积神经网络演习时,切掉末了一层,在另一个数据集中重新演习模型末了一层。从直觉上来说,你正在重新演习模型以识别不同的更高等别的特色。因此,当你没有足够的数据或者演习占用了太多的资源时,迁移学习便是一个有用的工具。
本文只展示了这些方法的一样平常概述。我建议阅读下面的文章以得到更详细的阐明:
Andrew Beam:《Deep Learning 101》 :http://u6.gg/e6fX7Andrey Kurenkov:《A Brief History of Neural Nets and Deep Learning》http://u6.gg/e6fXNAdit Deshpande:《A Beginner’s Guide to Understanding Convolutional Neural Networks》http://u6.gg/e6fYmChris Olah:《Understanding LSTM Networks》http://u6.gg/e6fY2Algobean:《Artificial Neural Networks》http://u6.gg/e6fYLAndrej Karpathy:《The Unreasonable Effectiveness of Recurrent Neural Networks》http://u6.gg/e6fYY
深度学习非常看重技能实践。对付每一个新想法都没有太多详细的阐明。大多数新想法都是通过实验结果出来的,以证明它们是可行的。深度学习就像玩乐高积木。节制乐高和其他任何艺术一样具有寻衅性,但入门更随意马虎。
原文链接:
https://medium.com/cracking-the-data-science-interview/the-10-deep-learning-methods-ai-practitioners-need-to-apply-885259f402c1
本文系作者个人观点,不代表本站立场,转载请注明出处!