AI从业者需要应用的10种深度学习方法

https://zhuanlan.zhihu.com/p/43636528

https://zhuanlan.zhihu.com/p/43734896

摘要:想要了解人工智能,不知道这十种深度学习方法怎么能行?

在过去十年中,人们对机器学习的兴趣激增。几乎每天,我们都可以在各种各样的计算机科学课程、行业会议、华尔街日报等等看到有关机器学习的讨论。在所有关于机器学习的讨论中,许多人把机器学习能做的事情和他们希望机器学习做的事情混为一谈。从根本上讲,机器学习是使用算法从原始数据中提取信息,并在某种类型的模型中表示这些信息。我们使用这个模型来推断还没有建模的其他数据。

神经网络是机器学习的一种模型,它们至少有50年历史了。神经网络的基本单元是节点(node),基本上是受哺乳动物大脑中的生物神经元启发。神经元之间的连接也以生物的大脑为模型,这些连接随着时间的推移而发展的方式是为“训练”。

在20世纪80年代中期和90年代初期,许多重要的模型架构进步都是在神经网络中进行的。然而,为了获得良好性能所需的时间和数据越来越多,这极大的降低了研究人员的兴趣。在21世纪初期,计算能力呈指数级增长,研究人员看到了计算机技术的“寒武纪爆发”。作为该领域的一个重要竞争者——深度学习,因为计算能力的爆炸式增长,赢得了许多重要的机器学习竞赛。截至目前,这种趋势仍然没有减退;今天,我们看到机器学习的每个角落都提到了深度学习。

为了让自己赶上潮流,我参加了Udacity的“深度学习”的课程,这个课程很好的介绍了深度学习的动机以及如何从TensorFlow中学习对大规模数据集学习的智能系统设计介绍。在课堂上,我开发了用于图像识别的卷积神经网络、用于自然语言处理的嵌入式神经网络,以及使用循环神经网络/长短期记忆网络的字符级文本生成。你们可以在Jupiter Notebook适用代码,所有代码都能在这个GitHub存储库中找到。

最近,我又开始阅读有关该深度学习的学术论文。根据我的研究,以下是一些对该领域的发展产生巨大影响的出版物:

? 纽约大学基于梯度的学习应用于文档识别(1998),它将卷积神经网络引入机器学习世界。

? 多伦多大学的Deep Boltzmann Machines(2009),它为Boltzmann机器提供了一种新的学习算法,包含许多隐藏变量层。

? 斯坦福和谷歌使用大规模无监督学习构建高级功能(2012),解决了仅使用未标记数据构建高级,类特定功能检测器的问题。

? Berkeley的DeCAF-一种用于通用视觉识别的深度卷积激活功能(2013),它发布了DeCAF,这是一种深度卷积激活功能的开源实现,以及所有相关的网络参数,使视觉研究人员能够进行深度实验跨越一系列视觉概念学习范例的表示。

? DeepMind使用Deep Reinforcement Learning(2016)播放Atari,它提供了第一个深度学习模型,可以使用强化学习直接从高维感觉输入成功学习控制策略。

通过研究和学习论文,我学到了很多关于深度学习的丰富知识。在这里,我想分享AI工程师可以应用于机器学习问题的10种强大的深度学习方法。但首先,让我们来定义深度学习是什么。深度学习对于许多人来说是一个挑战,因为它的形式在过去十年中逐渐发生了改变。为了向各位更好的说明深层学习的地位,下图说明了人工智能,机器学习和深度学习之间关系的概念。

人工智能领域很广泛,并且已经存在了很长时间。深度学习是机器学习领域的一个子集,而机器学习只是人工智能的一个子领域。将深度学习网络与之前的前馈多层网络进行区分:

? 深度学习比以前的网络更多的神经元;

? 深度学习中有更复杂的连接层的方式;

? “寒武纪爆炸”的提供的计算能力;

? 深度学习可以自动进行特征提取。

当我说到“更多神经元”时,是指近年来神经元的数量不断增加,深度学习就可以表示更为复杂的模型。层也从多层网络中每一层的完全连接,进化成卷积神经网络中神经元片段的局部连接,以及与递归神经网络中的同一神经元的循环连接(与前一层的连接除外)。

深度学习可以被定义为具有大量参数和层数的神经网络:

? 无人监督的预训练网络;

? 卷积神经网络;

? 循环神经网络;

? 递归神经网络。

在这篇文章中,我主要对后三种网络进行讲解。

卷积神经网络(CNN)基本上式已经跨越使用共享权重的空间延伸的标准神经网络。CNN旨在通过在内部的卷积来识别图像,该卷积看到图像上识别对象的边缘。

递归神经网络基本上是一个使用时间延伸扩展空间的标准神经网络,它提取进入下一时间步的边沿,而不是在同一时间进入下一层。

RNN进行序列识别,例如语音或文本信号,因其内部具有循环,意味着在RNN网络中存在短时记忆。递归神经网络更类似于分层网络,其中输入序列实际上与时间无关,但输入必须以树状方式分层处理。

下面的10种方法可以应用于所有这些架构。

1-反向传播

Back-prop反向传播只是一种简单计算函数的偏导数的方法,它具有函数组合的形式(如神经网络中)。当你使用基于梯度的方法解决最优化问题(梯度下降只是其中之一)时,你希望在每次迭代时计算函数渐变,这个时候它便可以发挥作用。

对于神经网络,其目标函数具有组合的形式。你如何计算梯度?有两种常见的方法可以做到:(i)分析微分法。如果你知道函数的形式,你只需使用链式规则(基本微积分)计算导数。(ii)有限差分的近似微分。该方法在计算上是昂贵的,因为评估函数的数量是O(N),其中N是参数的数量。与解析微分相比,这种方法的计算成本是昂贵的。在调试时,通常使用有限差分验证反向传播的执行效果。

2-随机梯度下降

想象梯度下降的直观方式是想象一条源自山顶的河流的路径。梯度下降的目标正是河流努力实现的目标,即从山顶流到最低点。

现在,如果山的地形形状使得河流在到达其最终目的地之前不必完全停在任何地方,这是我们想要的理想情况。在机器学习中,这相当于说,我们已经从初始点(山顶)开始找到解决方案的全局最小值(或最优值)。然而,可能由于地形性质,导致河流路径出现若干的坑洼,会迫使河流困住和停滞。在机器学习方面,这种坑洼被称为局部最优解,这是我们不想要的情况。当然有很多方法可以解决局部最优解问题,这里我不打算进一步讨论。

因此,梯度下降倾向于陷入局部最小值,这取决于地形的性质(或ML术语中的函数)。但是,当你有一种特殊的山地形状(形状像一个碗,用ML术语称为凸函数)时,算法始终能够找到最优值。你可以想象将这条河流可视化。在机器学习中,这些特殊的地形(也称为凸函数)总是需要优化的。另外,你从山顶开始(即函数的初始值)的位置不同,最终你到达山底的路径也完全不同。同样,根据河流的流淌速度(即梯度下降算法的学习速率或步长),你可能会以不同的方式到达目的地。你是否会陷入或避免一个坑(局部最小),都会被这两个标准影响。

3-学习速率衰减

调整随机梯度下降优化程序的学习速率可以提高性能并缩短训练时间。有时这也被称为学习率退火或自适应学习率。在训练期间最简单且最常用的学习率调整是随时间降低学习率的技术。在训练初期使用较大的学习速率值,可以对学习速率进行大幅调整;在训练后期,降低学习速率,使模型以一个较小的速率进行权重的更新。这种技术在早期可以快速学习获得一些较好的权重,并在后期对权重进行微调。

两种流行且易于使用的学习率衰减如下:

? 在每个环节逐渐降低学习率。

? 在特定时期使用大幅下降来降低学习速率。

4-Dropout

具有大量参数的深度神经网络是非常强大的机器学习系统。然而,过度拟合是这种网络中的严重问题。大型网络使用起来也很慢,因此在测试时将许多不同的大型神经网络的预测结合起来很难处理过度拟合。Dropout就是一种解决此问题的技术。

关键思想是在训练期间从神经网络中随机删除单元及其连接,这可以防止单元间的过度适应。在训练期间,从指数数量的不同“稀疏”网络中抽取样本。在测试时,通过简单地使用具有较小权重的单解开网络(untwinednetwork),很容易近似平均所有这些稀疏网络以达到预测的效果。这显着减少了过度拟合,并且比其他正则化方法表现的更好。

Dropout已被证明可以改善神经网络在计算机视觉,语音识别,文档分类和计算生物学等领域的监督学习任务的性能,并在许多基准数据集上获得最先进的结果。

5-最大池化

最大池化是基于样本的离散化过程。目的是对输入表示(图像、隐藏层输出矩阵等)进行下采样,通过降低其维数并允许对包含在子区域中的特征进行合并。

通过提供表征的抽象形式,这种方法在某种程度上有助于解决过拟合。同样,它也通过减少学习参数的数量和提供基本的内部表征的转换不变性来减少计算量。最大池化是通过将最大过滤器应用于通常不重叠的初始表征子区域来完成的。

6-批量归一化

当然,包括深度网络在内的神经网络需要仔细调整权重初始化和学习参数。批量归一化有助于让中国过程更简单一点。

 

权重问题:

· 无论那种权重的初始化,随机还是凭经验选择,它们都和学习权重差别很大。考虑一个小批量数据集,在最初的时期,在特征激活时都会有许多异常值。

· 深度神经网络本身脆弱的,即初始层的微小扰动都会导致后面层很大的变化。

在反向传播期间,这些现象会导致梯度偏移,这意味着在学习权重以产生所需输出之前,梯度必须补偿异常值。这也将导致需要额外的时间来收敛。

批量归一化将这些梯度从离散规则化为正常值,并在小批量的范围内朝向共同目标(通过归一化它们)流动。

 

学习率问题:通常,学习率保持较小,使得只有一小部分的梯度用来校正权重,原因是异常激活的梯度不应该影响已经学习好的权重。通过批量归一化,这些异常值被激活的可能性就会减少,因此可以使用更高的学习率来加速学习过程。

7-长短期记忆:

LSTM网络具有以下三个方面,使其与递归神经网络中的常规神经元区分开来:

1、它可以控制何时让输入进入神经元。

2、它可以控制何时记住上一个时间步骤中计算的内容。

3、它可以控制何时将输出传递给下一个时间戳。

LSTM的优点在于它根据当前输入本身决定所有这些,如下图所示:

当前时间戳处的输入信号x(t)决定所有上述3个点。输入门决定点1.遗忘门在点2上做出决定,输出门在点3上做出决定。输入门能单独能够做出这三个决定。这受到了我们的大脑是如何工作的启发,并且可以处理突然的上下文切换。

8-Skip-gram:

词嵌入模型的目标是为了每个词汇学习一个高维密集表征,其中嵌入向量之间的相似性显示了相应单词之间的语义或句法相似性。Skip-gram是学习词嵌入算法的模型。

skip-gram模型(以及许多其他词嵌入模型)背后的主要思想如下:如果两个词汇有相似的上下文,则它们是相似的。

换句话说,假设你有一句话,比如“猫是哺乳动物”。如果你使用术语“狗”而不是“猫”,句子仍然是一个有意义的句子。因此在该示例中,“狗”和“猫”可以共享相同的背景(即“是哺乳动物”)。

基于上述假设,你可以考虑一个上下文窗口(一个包含k个连续术语的窗口)。然后你应该跳过其中一个单词,并尝试学习除了跳过的一个术语之外的所有术语并预测跳过的术语的神经网络。因此如果两个单词在大型语料库中重复地共享相似的上下文,那些这些术语的嵌入向量将具有相似的向量。

9-连续的词袋模型(Continuous Bag of Words):

在自然语言处理问题中,我们希望学习将文档中的每个单词表示为数字向量,使得出现在相似上下文中的单词具有彼此接近的向量。在连续词袋模型中,目标是能够使用围绕特定单词的上下文并预测特定单词。

我们通过在一个大型语料库中抽取大量句子来做到这一点,每次看到一个单词时,我们都会使用其上下文单词。然后我们将上下文单词输入到一个神经网络中,并预测该上下文中心的单词。

当我们有数千个这样的上下文单词和中心单词时,我们就有一个神经网络数据集的实例。我们训练神经网络,在经过编码的隐藏层的输出表示特定单词的嵌入。碰巧的是,当我们在大量句子上训练时,类似上下文中的单词会得到类似的向量。

10-迁移学习:

考虑下图像是如何通过卷积神经网络的。假设你有一个图像,你应用卷积,你得到像素组合作为输出。如果碰到了边缘,则再次应用卷积,所以现在输出是边或线的组合。然后再次应用卷积,此时的输出将是线的组合,依此类推。你可以将其视为每个层寻找特定模式。神经网络的最后一层往往变得非常专业。如果你正在使用ImageNet,那么你的网络最后一层将寻找儿童或狗或飞机或其他什么。再后退几层你可能会看到网络正在寻找眼睛或耳朵或嘴或轮子。

深度CNN中的每个层逐渐建立了更高和更高级别的特征表征。最后几层往往专注于你输入模型的任何数据。另一方面,早期的图层更通用,是在更大类的图片中找到很多简单的模式。

迁移学习是指你在一个数据集上训练CNN,切断最后一层,在其他不同的数据集上重新训练模型的最后一层。直观地说,你正在重新训练模型以识别不同的更高级别的功能。因此,模型训练的时间会大大减少,因此当你没有足够的数据或者训练所需的太多资源时,迁移学习是一种有用的工具。

本文仅显示这些方法的一般概述。我建议阅读以下文章以获得更详细的解释:

· Andrew Beam的“深度学习101”

· 安德烈库林科夫的“神经网络与深度学习简史”

· Adit Deshpande的“理解卷积神经网络的初学者指南”

· 克里斯奥拉的“理解LSTM网络”

· Algobean的“人工神经网络”

· Andrej Karpathy的回归神经网络的不合理有效性”

深度学习是非常注重技术实践的。本文中的每个新想法都没有太多具体的解释。对于大多数新想法都附带了实验结果来证明它们能够运作。深度学习就像玩乐高,掌握乐高与任何其他艺术一样具有挑战性,但相比之下入门乐高是容易的。

以上为译文,由阿里云云栖社区组织翻译。

译文链接

文章原标题《the-10-deep-learning-methods-ai-practitioners-need-to-apply》,

作者: James Le 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

原文地址:https://www.cnblogs.com/DicksonJYL/p/9591732.html

时间: 2024-11-02 10:13:19

AI从业者需要应用的10种深度学习方法的相关文章

h5牌九房卡出售AI 从业者都会用到的 10 个深度学习方法

过去十年里,人们对机器学习的兴趣经历了爆炸式的整长.我们几乎每天都可以在计算机程序h5牌九房卡出售 (h5.hxforum.com)联系方式 17061863533 企鹅 2952777280 微信 Tel17061863533.行业会议和媒体上看到机器学习的身影.很多关于机器学习的讨论都混淆了"机器学习能做什么"和"人类希望机器学习能做什么".从根本上讲,机器学习是运用算法从原始数据中提取信息,并用某种类型的模型进行表示,然后使用该模型对一些尚未用模型表示的其他数

锤子不讲情怀傍风口?扯AI虎皮就能值10亿?

提起锤子,相信很多人都是只闻其名不见其机,名字倒是长期处于话题的漩涡之中,而产品却不怎么多见.作为一个超级小众的手机品牌,锤子也算是经历了不少大起大落,过去的2016年是锤子最难熬的一年,亏损.高管离职.资金链断裂等消息不断传出,甚至不少人预测锤子马上就要倒闭. 但现在,濒临死亡的锤子又经历了一次"起死回生".8月6日下午,锤子科技的创始人罗永浩在公开场合上表示:锤子科技已经获得了10亿人民币融资.有了钱的锤子底气就足了,腰杆子也直了,要知道,过去的一年,老罗为了维护锤子的经营,以个人

10种优化页面加载速度的方法——转

小于2秒的页载入时间被认为是优良的,而且高达4秒是可接受的.而大于5秒的页面载入时间不仅影响你网站的搜索引擎排名,还会严重影响用户体验.这里列出了10种方法,可以快速提升你网站的性能. 1. 优化图像 图像对于吸引访客的关注是很重要的.但是你添加到页面上的每一张图片都需要用户从你的服务器下载到他们的电脑上.这无疑增加了页面的加载时间,因此很可能让用户离开你的网站.所以,优化图像是非常必要的. 过大的图像需要的下载时间更多,因此要确保图像尽可能的小.可以使用图像处理工具如PS来减小颜色深度.剪切图

人工智能改进传统云ERP的10种方法

http://blog.itpub.net/31542119/viewspace-2168809/ 随着数字化转型的进程加快,企业开始重新评估ERP的作用.传统ERP经过多年僵硬化定制过于追求生产的一致性,而忽视了客户的需求变化,导致系统缺乏灵活性,已经无法满足当今数字业务模型的增长需求.目前,人工智能(AI).机器学习发展迅速,成为了很多企业的必备帮手,云ERP供应商要想解决传统ERP系统的问题,或许需要这两大王者的帮助! 用更高的智慧和洞察力挽救传统ERP系统 要想新的商业模式取得成功,企业

成员变量的10种命名方式

[成员变量的10种命名方式] 1.resourceService. 特点 1)驼峰命名,首字符小写. 2.StageType 特点 1)驼峰命名,首字符大写. 3.fAddHPPercent. 特点 1)类型,小写 + 2)驼峰命名,首字符大写. 4._lightMapAssetIndex. 特点 1)_ + 2)驼峰命名,首字符小写. 5.mInterfacePool 特点 1)m + 2)驼峰命名,首字符大写. 6.m_mapLoaderModel. 特点 1)m_ + 2)驼峰命名,首字符

苹果iWatch或存多个型号 整合超过10种传感器

华尔街日报日前援引知情人士的话报道称,苹果正在计划推出一款拥有多个版本的智能手表,并会在今年秋天将其发布.据报道,苹果的这款设备将整合超过10种不同的传感器,其中包括用于追踪健康和健身数据的.据知情人士爆料,苹果希望去解决外界对于现有智能手表最大的批评,那就是这类设备的功能和智能手机并没有什么不同. 在上个月发布的新应用健康当中,苹果展现出了自己在健康和健身追踪方面的兴趣.这款应用可以将可穿戴设备收集到的数据集中在一起,但苹果目前并没有这样一款设备来体现该应用的能力.不过健康应用的出现也让外界更

10种排序算法分析

10种排序算法,分别是直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,树形排序,堆排序,归并排序,基数排序.各有千秋,但依旧有优劣之分,熟悉每一个算法,对于我们的代码优化,也将事半功倍. 1,直接插入排序: 基本思想: 假设待排的n个记录存放在变量R中,首先将R[1]看做是有序区,将后n - 1个数组元素看作是无序区:然后将无序区的第一个元素R[2]插入到前面有序区的适当位置,从而得到新的有序区R[1..2]:依次类推,经过n - 1趟直接插入排序后,得到有序区R[1..

(转)详解LVS负载均衡之三种工作模型原理和10种调度算法

前言:最近在为我们的产品在做高可用,一边搭环境,一边了解相关知识,搜到这篇博客,质量不错,表述清晰,于是转载过来学习. 标签:详解LVS负载均衡之三种工作模型原理和10种调度算法 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LVS负载均衡原理和算法详解    Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大

明星软件工程师的10种特质(转)

如今,每家公司都似乎成了科技公司.从软件创业公司到投机性投资公司.制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列.代码质量不仅成为了一个必需品,更成为了一个竞争优势.因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要.但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质. 1. 热爱编程 2. 完成事情 3. 持续重构代码 4. 使用设计模式 5. 编写测试 6. 善用现有代码 7. 专注可用性 8. 编写可维护的代码 9.