专栏亮点
-
内容新:本课程涵盖 RNN,LSTM,GRU,word2vec,CNN 这些基础,还包括多层,双向等拓展,有 Seq2seq 和 Attention,再到最近流行的 Transformer,ELMo,BERT,层层递进掌握经典模型。
-
实战多:包括 14 个项目的代码及详细的讲解,从命名实体识别,词性标注,到情感分析,聊天机器人,机器翻译,再到图片文字摘要,动手实现有趣的智能应用。
-
讲的细:每篇文章用黄金圈 why,how,what 的结构详细讲解模型原理,对面试中常考问题给出解答和理论依据,深刻理解经典模型解决问题的思想。
为什么要学习深度学习自然语言处理
让我们来想象这样一个画面:
当清晨被闹钟叫醒,睁开朦胧的双眼,摸起手机说“siri,帮我设一个五分钟的闹钟”,随之又进入了梦乡。五分钟后很快就到了,总算精神了一些,看看今天每小时的天气预 如何,起床准备开始一天的工作。早餐时间,一边吃着美味的早餐一边打开了邮箱,看到又多了几封垃圾邮件。一切准备就绪,出发去上班,在路上,兴致勃勃地看一篇今天特别感兴趣的外语文章,发现有个单词不认识,于是打开了翻译软件。忽然想到有个包裹怎么还没到,打开购物软件,和他们的聊天机器人客服聊了起来。
上面这些事情可能就发生在每日日常的一个小时内,但却用到了语音识别,时间序列预测,垃圾邮件识别,机器翻译,聊天机器人等技术。
你是否好奇是什么技术实现了这些便利的功能否也想自己也可以 DIY 一些人工智能应用来解决自己平日遇到的问题呢/strong>
那么这门课程就可以为你的奇思妙想奠定基础,这门课不仅仅是实战,还有深入的模型理论讲解,尤其是面试中常遇问题的详细解答。
放眼宏观环境,人工智能已经被列入国家战略目标,2020要让人工智能和应用达到世界先进水平,2025年使其成为引导经济转型的主要动力,而自然语言处理是人工智能入口之争的主要技术之一,它将会是未来人机交互的主要方式,很多大公司或者新创公司都下大力度进行这方面的研究,无论是出于兴趣,还是早在职业规划目标之内,学习一下自然语言处理的经典模型原理和实践,未来可以找到更多机会参与到人工智能创新的浪潮中来。
之前有些朋友会向我咨询为什么自学了名校的课程认真做了笔记,却还是会在面试时回答不出来问题,因为其实很多优秀的课程和书籍侧重点会不同,理论上可能只是讲个思想,来龙去脉并不会讲的很深,实战中可能只是给出基础的代码,为什么要进行哪一步也没有讲的很细,关于面试的书也只是给出答案,到底为什么要这么回答也没有给出详细的解释,而在面试时面试官们通常会把最基础的东西问得很透彻,比如手推反向传播,手推 LSTM,改进 SkipGram 模型等等,所以单单学完一门课程看完一本书可能并不会真正地掌握知识。
在这门课程中会帮助大家解决这样的问题,我们会以能够回答出面试题为基准,并且是建立在透彻理解模型原理的基础上,而不是死记硬背答案,还会有数学公式推导作为理论支撑,做到真的理解模型,这样当面试官们变换问题时,或者要求提出改进方案或者拓展时,都能够根据自己的理解给出解答。
除了理论还有实战,本课程设计的实战项目有热门应用,如情感分析,聊天机器人等都是现在很多公司所需要的;也有 NER,POS 等基础应用,是自然语言处理项目中必备的。面试官们会对项目的每个环节都问的比较细,数据清洗,预处理,特征,建模,模型评估等等,所以我们的项目解释也很全,包括数据在模型里是如何变化的,每一步代码干了什么发生了什么都会心里有数。
当然在这一门课程中肯定无法涵盖自然语言处理的各个角落,我们会先主要覆盖 NLP 工程师面试所需的深度学习基础部分,将基础的经典的模型理论牢牢掌握,会针对真实的面试题给出详细的讲解,例如:
- RNN 为什么会发生梯度消失何改进/li>
- LSTM 的模型结构是什么/li>
- 为什么说 LSTM 具有长期记忆功能/li>
- LSTM 为什么能抑制梯度衰减/li>
- 什么是 Word2Vec何训练/li>
- Word2vec,CBOW 和 Skip-gram 的区别是什么/li>
- 什么是 seq2seq 模型哪些优点/li>
- 什么是注意力机制/li>
- 为什么要使用注意力机制,有什么优点/li>
- CNN 的原理是什么哪些优缺点/li>
- BERT 的模型结构是什么何应用..
每个模型的公式是什么,怎么训练模型,怎么优化模型都会提到,在实战中遇到的特别技术概念也会给出详细的讲解。
专栏思路和内容大纲
第 1 部分:深度学习基础知识
因为本课程是关于深度学习在自然语言处理中的应用,所以课程开始部分我们会概括性地介绍什么是深度学习项目的一般流程和所需基本概念,深度学习在自然语言处理领域主要有哪些热门应用,还会介绍本课程项目所需的 Keras 和 TensorFlow 2.0 基础,有了这样一个全局观,在后面学习具体模型和项目的时候会更有掌控性。
第 2 部分:循环神经 络基础
这一部分会非常详细地介绍 RNN 和 LSTM 的原理,它们是深度自然语言处理的基础模型,掌握它们对学习并理解后面更复杂的模型结构有很好的帮助,而且课程中会有面试常考问题的详细解答和公式推导,从数学的层次做到真正理解经典模型的特性。
第 3 部分:词嵌入
在这里我们会介绍 Word2vec 的方法,包括 CBOW,Skip-gram,GloVe 的理论和应用。词嵌入是自然语言处理任务中很重要的一步,它可以让模型更好地学习到单词之间的关系和单词地含义,使模型表现地更好。
第 4 部分:循环神经 络的改进
这一部分我们将学习如何改进基础的 RNN 和 LSTM,通过前面对基础理论的深入了解,我们可以知道它们具有哪些不足,于是通过改善门控单元,搜索结果,增加方向等方法来使模型进一步得到改善。
第 5 部分:Seq2seq 和 Attention
这一部分模型的结构进一步升级,Seq2seq 是一个 Encoder–Decoder 结构的 络,它最重要的地方在于输入序列和输出序列的长度是可变的,不过因为不管输入的长度多长都会被它压缩成一个几百维的中间向量,就会造成任务质量的下降,而 Attention 又进一步解决了 Seq2seq 存在的问题,有了这些改进使得模型在情感分析,聊天机器人,机器翻译等任务中的性能提升。
第 6 部分:卷积神经 络的应用
卷积神经 络被大家熟知的是在图像领域的重要模型,这一部分就会介绍它其实也可以用于自然语言处理的任务中,通过学习这种“跨界”的模型,不仅可以更了解到任务和模型的本质,还有助于开拓解决问题的思路。
第 7 部分:Transformer,ELMo,BERT
BERT 是2018年10月11日由 Google AI Language 发布的模型,当时在问答,推理等 11 个 自然语言处理任务上的表现都刷新了记录,目前为止有很多优秀的模型都是在其基础上进行改进,所以这部分将介绍 Transformer,ELMo,BERT 这一系列的原理和应用。
你将收获什么
面试必备知识点
在自然语言处理相关职位的面试中,面试官会对模型的结构,原理,数学推导,优缺点,改进方法等进行细致地提问,很多外文原版书籍或者名校课程中都不会做特别详细地解答,最后看了很多书学了很多课程,可能到面试的时候还是答不出来问题,在本课程中就会对这些知识点进行深入地讲解,让大家能够真正理解每个模型,知其然知其所以然。
本课程将用通俗易懂的方式讲解模型的原理,用图解的方式画出模型中数据的走向,对关键步骤的计算,例如前向计算,反向传播,会有详细的手写推导。以及一些核心问题的探究,例如为什么循环神经 络具有记忆功能,LSTM 为什么可以缓解梯度消失,为什么用双向 LSTM,Encoder–Decoder 的结构是什么样的,为什么需要 Attention 机制等。
动手实践,编写有趣的项目
无论是出于兴趣还是想要找到高薪的工作,最后都要落实到有能力解决问题。所以本课程在每个模型的原理之后,都有相应的项目代码,而且有非常详细的代码讲解,理论与实践结合,真正把模型用起来,除了用序列模型处理其他模型能做到的分类和预测的任务,还可以构建一些好玩的,例如自动生成某个大师风格的文章,根据电影评论分析一下观众对它的评价,做个简易的聊天机器人,再或者平时经常用的翻译软件,自己也可以学习到机器翻译模型的构建方法。
熟练地使用 TensorFlow/Keras
本课程在每个模型后都配有应用代码,都是用 TensorFlow 或 Keras 来实现,这两个框架也是很多公司在招聘时优先考虑的技术,通过课程中一些小项目的练习,可以进行强化训练,并且由于都是序列模型,还可以进行横向比较,了解实现不同项目的共同点和区别,这样在以后应用这些深度学习框架来处理新的任务时可以得心应手。
适宜人群:
- 未来想从事自然语言处理方向的求职者。
- 对人工智能感兴趣的学生。
- 想亲手打造相关产品的开发者。
购买须知
- 本专栏为图文内容,共计 32 篇。
- 每周五更新,预计于 2020 年 2 月 15 日更新完毕。
- 付费用户可享受文章永久阅读权限。
- 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
- 本专栏可在 GitChat 服务 、App 及 页端 gitbook.cn 上购买,一端购买,多端阅读。
订阅福利
- 本专栏限时特价 39 元,2020 年 1 月 2 日恢复至原价 69 元。
- 订购本专栏可获得专属海 (在 GitChat 服务 领取),分享专属海 每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
- 提现流程:在 GitChat 服务 中点击「我-我的邀请-提现」。
- 购买本专栏后,服务 会自动弹出入群二维码和暗 。如果你没有收到那就先关注微信服务 「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 5 篇文末说明)。
课程内容
导读:如何通关自然语言处理面试
让我们先看看一些常见自然语言处理面试题:
- RNN 为什么会发生梯度消失何改进/li>
- LSTM 的模型结构是什么/li>
- 为什么说 LSTM 具有长期记忆功能/li>
- LSTM 为什么能抑制梯度衰减/li>
- 什么是 Word2Vec何训练/li>
- Word2vec,CBOW 和 Skip-gram 的区别是什么/li>
- 什么是 seq2seq 模型哪些优点/li>
- 什么是注意力机制/li>
- 为什么要使用注意力机制,有什么优点/li>
- CNN 的原理是什么哪些优缺点/li>
- BERT 的模型结构是什么何应用..
之前有些朋友会向我咨询为什么自学了名校的专栏认真做了笔记,却还是会在面试时回答不出来问题,因为其实很多优秀的专栏和书籍侧重点会不同,理论上可能只是讲个思想,来龙去脉并不会讲的很深。
实战中可能只是给出基础的代码,为什么要进行哪一步也没有讲的很细,关于面试的书也只是给出答案,到底为什么要这么回答也没有给出详细的解释,而在面试时面试官们通常会把最基础的东西问得很透彻,比如手推反向传播,手推 LSTM,改进 SkipGram 模型等等,所以单单学完一门专栏看完一本书可能并不会真正地掌握知识。
为什么要学习深度学习自然语言处理
让我们来想象这样一个画面:
当清晨被闹钟叫醒,睁开朦胧的双眼,摸起手机说“siri,帮我设一个五分钟的闹钟”,随之又进入了梦乡。五分钟后很快就到了,总算精神了一些,看看今天每小时的天气预 如何,起床准备开始一天的工作。早餐时间,一边吃着美味的早餐一边打开了邮箱,看到又多了几封垃圾邮件。一切准备就绪,出发去上班,在路上,兴致勃勃地看一篇今天特别感兴趣的外语文章,发现有个单词不认识,于是打开了翻译软件。忽然想到有个包裹怎么还没到,打开购物软件,和他们的聊天机器人客服聊了起来。
上面这些事情可能就发生在每日日常的一个小时内,但却用到了语音识别,时间序列预测,垃圾邮件识别,机器翻译,聊天机器人等技术。
你是否好奇是什么技术实现了这些便利的功能否也想自己也可以 DIY 一些人工智能应用来解决自己平日遇到的问题呢/strong>
那么这门专栏就可以为你的奇思妙想奠定基础,这门专栏不仅仅是实战,还有深入的模型理论讲解,尤其是面试中常遇问题的详细解答。
放眼宏观环境,人工智能已经被列入国家战略目标,2020要让人工智能和应用达到世界先进水平,2025年使其成为引导经济转型的主要动力,而自然语言处理是人工智能入口之争的主要技术之一,它将会是未来人机交互的主要方式,很多大公司或者新创公司都下大力度进行这方面的研究,无论是出于兴趣,还是早在职业规划目标之内,学习一下自然语言处理的经典模型原理和实践,未来可以找到更多机会参与到人工智能创新的浪潮中来。
同样在本门专栏中会帮助大家解决这样的问题,我们会以能够回答出面试题为基准,并且是建立在透彻理解模型原理的基础上,而不是死记硬背答案,还会有数学公式推导作为理论支撑,做到真的理解模型,这样当面试官们变换问题时,或者要求提出改进方案或者拓展时,都能够根据自己的理解给出解答。
除了理论还有实战,本专栏设计的实战项目有热门应用,如情感分析,聊天机器人等都是现在很多公司所需要的;也有 NER,POS 等基础应用,是自然语言处理项目中必备的。面试官们会对项目的每个环节都问的比较细,数据清洗,预处理,特征,建模,模型评估等等,所以我们的项目解释也很全,包括数据在模型里是如何变化的,每一步代码干了什么发生了什么都会心里有数。
当然在这一门专栏中肯定无法涵盖自然语言处理的各个角落,我们会先主要覆盖 NLP 工程师面试所需的深度学习基础部分,将基础的经典的模型理论牢牢掌握,会针对真实的面试题给出详细的讲解。
每个模型的公式是什么,怎么训练模型,怎么优化模型都会提到,在实战中遇到的特别技术概念也会给出详细的讲解。
专栏亮点
-
内容新:本专栏涵盖 RNN,LSTM,GRU,word2vec,CNN 这些基础,还包括多层,双向等拓展,有 Seq2seq 和 Attention,再到最近流行的 Transformer,ELMo,BERT,层层递进掌握经典模型。
-
实战多:包括 14 个项目的代码及详细的讲解,从命名实体识别,词性标注,到情感分析,聊天机器人,机器翻译,再到图片文字摘要,动手实现有趣的智能应用。
-
讲的细:每篇文章用黄金圈 why,how,what 的结构详细讲解模型原理,对面试中常考问题给出解答和理论依据,深刻理解经典模型解决问题的思想。
专栏思路和内容大纲
第 1 部分:深度学习基础知识
因为本专栏是关于深度学习在自然语言处理中的应用,所以专栏开始部分我们会概括性地介绍什么是深度学习项目的一般流程和所需基本概念,深度学习在自然语言处理领域主要有哪些热门应用,还会介绍本专栏项目所需的 Keras 和 TensorFlow 2.0 基础,有了这样一个全局观,在后面学习具体模型和项目的时候会更有掌控性。
第 2 部分:循环神经 络基础
这一部分会非常详细地介绍 RNN 和 LSTM 的原理,它们是深度自然语言处理的基础模型,掌握它们对学习并理解后面更复杂的模型结构有很好的帮助,而且专栏中会有面试常考问题的详细解答和公式推导,从数学的层次做到真正理解经典模型的特性。
第 3 部分:词嵌入
在这里我们会介绍 Word2vec 的方法,包括 CBOW,Skip-gram,GloVe 的理论和应用。词嵌入是自然语言处理任务中很重要的一步,它可以让模型更好地学习到单词之间的关系和单词地含义,使模型表现地更好。
第 4 部分:循环神经 络的改进
这一部分我们将学习如何改进基础的 RNN 和 LSTM,通过前面对基础理论的深入了解,我们可以知道它们具有哪些不足,于是通过改善门控单元,搜索结果,增加方向等方法来使模型进一步得到改善。
第 5 部分:Seq2seq 和 Attention
这一部分模型的结构进一步升级,Seq2seq 是一个 Encoder–Decoder 结构的 络,它最重要的地方在于输入序列和输出序列的长度是可变的,不过因为不管输入的长度多长都会被它压缩成一个几百维的中间向量,就会造成任务质量的下降,而 Attention 又进一步解决了 Seq2seq 存在的问题,有了这些改进使得模型在情感分析,聊天机器人,机器翻译等任务中的性能提升。
第 6 部分:卷积神经 络的应用
卷积神经 络被大家熟知的是在图像领域的重要模型,这一部分就会介绍它其实也可以用于自然语言处理的任务中,通过学习这种“跨界”的模型,不仅可以更了解到任务和模型的本质,还有助于开拓解决问题的思路。
第 7 部分:Transformer,ELMo,BERT
BERT 是2018年10月11日由 Google AI Language 发布的模型,当时在问答,推理等 11 个 自然语言处理任务上的表现都刷新了记录,目前为止有很多优秀的模型都是在其基础上进行改进,所以这部分将介绍 Transformer,ELMo,BERT 这一系列的原理和应用。
适宜人群:
- 未来想从事自然语言处理方向的求职者。
- 对人工智能感兴趣的学生。
- 想亲手打造相关产品的开发者。
深度学习在自然语言处理中的应用全景图-上
Natural language processing (NLP) 即自然语言处理,它关注的是如何开发实际应用来促进计算机与人类之间的交互语言。 典型应用包括语音识别,口语理解,对话系统,词汇分析,解析,机器翻译,知识图谱,信息检索,问答系统,情感分析, 交计算,自然语言生成和自然语言总结。
在过去的五十年里,NLP 经历了三次浪潮,理性主义,经验主义,还有现在的深度学习。
在传统的机器学习中,需要我们做大量的特征工程,很多时候需要大量的专业知识,这就形成了一个瓶颈,而且浅层模型也缺乏表示能力,缺乏抽象能力,在对观察到的数据进行建模时,无法识别复杂的因素。而深度学习却可以通过使用深度多层的模型结构和端到端的学习算法来克服上述困难。
深度学习的革命有五个基本支柱:
- 通过嵌入实现语言实体的分布式表示;
- 得益于嵌入的语义泛化;
- 自然语言的长跨深度序列建模;
- 从低到高有效表示语言水平的分层 络;
- 可以共同解决许多NLP任务的端到端的深度学习方法。
1. 会话语言理解
会话语言理解 (Conversational Language Understanding) 是要从口语或文本形式的自然对话中提取出含义,这样可以方便用户只需要使用自然的语言给机器下达指令就能执行某些任务。它是语音助理系统的一个重要组成部分,例如 Google Assistant, Amazon Alexa, Microsoft Cortana, Apple Siri,这些助理系统可以帮助我们做很多事情,创建日历,安排日程,预订餐厅等等。
以目标为导向的会话语言理解主要包括 3 个任务;
- 领域分类(domain classification):要识别用户在谈什么方面的话题,例如旅行,
- 意图分类(intent determination):要判断用户想要干什么,例如想要订宾馆,
- 语义槽填充(slot filling):要知道这个目标的参数是什么,例如预订宾馆的日期,房型,地理位置等。
1. 领域分类和意图确定
Hinton 等在2006年提出的 deep belief networks 率先将深度学习用于话语分类,并在信息处理应用的各个领域中普及。后来流行的技术是使用卷积神经 络 CNN 及其变体,例如 (Kalchbrenner et al. 2014)。随后 (Lee 和 Dernoncourt 2016) 尝试使用 循环神经 络 RNN 来处理这类任务,并与 CNN 结合,同时利用 RNN 和 CNN 的优点。
2. 语义槽填充
对于这个任务,比较先进的算法是基于 RNN 及其变种的。
(Dupont et al. 2017) 提出了一种新的 RNN 变体结构,其中输出标签也被连接到下一个输入中。
也有很多是基于双向 LSTM / GRU 模型的,(Vukotic et al. 2016)。
(Liu and Lane 2016) 将 encoder–decoder 模型用于此任务,(Chen et al. 2016) 使用了记忆 络 memory。(Zhu and Yu 2016b) 应用了焦点注意力机制。
3. 理解上下文
自然语言理解还有一个重要的任务是理解上下文。(Hori et al. 2014) 提出了使用 role-based LSTM 层,可以有效地理解口语中上下文。(Chen et al. 2016) 提出了一个基于端到端神经 络的对话理解模型,用记忆 络来提取先验信息,作为编码器的上下文知识,进而理解对话的含义。
3. 知识图谱
知识图谱也称为知识库,是一种重要的数据集,以结构化的形式组织了实体,实体属性和不同实体之间语义关系的丰富知识,是自然语言理解的基础资源,在人工智能的许多应用中发挥重要作用,如搜索,问答,语音识别等。
目前几个应用比较广泛的知识图谱是,Freebase,DBpedia,Wikidata,YAGO,HowNet。
基于深度学习的知识图谱技术有三大类:
- 知识表示技术,用来将图谱中的实体和关系嵌入到密集低维的语义空间中。
- 关系提取技术,从文本中提取关系,用于构建图谱。
- 实体链接技术,将图谱与文本数据联系起来,可以用于许多任务中。
1. 知识表示技术
(Bordes et al. 2013) 的 TransE 是一种典型的基于翻译的知识表示学习方法,用它来学习实体和关系的低维向量简单有效。
但大多数现有知识表示学习方法仅关注知识图谱中的结构信息,而没有处理其他丰富的多源信息,如文本信息,类型信息和视觉信息。(Xie et al. 2016b) 提出根据 CBOW 或 CNN 编码器的描述学习实体表示。(Xie et al. 2016c) 通过构造投影矩阵,利用分层类型结构增强了 TransR。Xie et al. 2016a) 提出了体现图像的知识表示,通过用相应的图来学习实体表示,进而考虑视觉信息。
2. 关系提取技术
关系提取是要从文本中自动地提取出关系。神经 络在关系提取上主要有两个任务,句子级和文档级。
其中句子级关系提取是要预测一个句子中实体对之间的语义关系。主要由三个部分组成:1. 输入编码器,用于表示输入的词。2. 句子编码器,将原始句子表示为单个向量或向量序列。3. 关系分类器,计算所有关系的条件概率分布。
(Zeng et al. 2014) 用一个 CNN 对输入句子作嵌入,其中卷积层可以提取局部特征,再用 max-pooling 将所有局部特征组合起来,最后获得固定大小的输入句子的向量。
(Zhang and Wang 2015) 用 RNN 嵌入句子,这样可以学习出时间特征。
3. 实体链接技术
实体链接任务有一个问题是名称歧义, 所以关键的挑战是如何有效使用上下文来计算名称与实体之间兼容度。在实体链接中,神经 络主要用来表示异构的上下文证据,例如名称提及表示,上下文提及表示和实体描述。
(Francis-Landau et al. 2016) 用 CNN 将名称提及表示,局部上下文,源文档,实体标题和实体描述投影到同一个连续特征空间,而且不同证据之间的语义相互作用被建模为它们之间的相似性,不仅可以考虑到单词的重要性和位置影响,还可用于实体链接中的文档表示
在 Sutskever 的编码-解码框架中,不管句子的长度是多少,编码器需要将整个源句子表示为一个固定长度的向量。 Bahdanau et al. 2015) 表明这样会使神经 络难以处理长期依赖,并引入了注意机制,动态地选择相关源上下文来生成目标词。
情感分析
情感分析要做的是从 交 络,博客或产品的评论中识别和提取用户的情绪,在数据挖掘, 络挖掘和 交媒体分析方面有广泛应用。主要任务有情绪分类,意见提取,细粒度情绪分析。接下来我们主要看深度学习在 句子级,文档级的应用。
句子级别的情感分析就是对句子的情感极性进行分类。很多神经 络结构都可以用来处理这个问题,卷积神经 络,循环神经 络,递归神经 络和辅助增强句子表示。
CNN 可以更好地捕获基于窗口的局部组合,基本的 CNN 有一个卷积层和池化层,Kalchbrenner et al. 2014) 将其扩展为多层结构,并用动态k-max 池化来更好地表示句子。Yin and Schuze 2015) 构建了多通道的多层 CNN,可以使用若干个不同的词嵌入。
RNN 可以有效学习隐式长期依赖性,Wang et al. 2015) 提出了用长期短期记忆(LSTM)神经 络进行推文情绪分析。
Zhang et al. 2016c) 结合了 LSTM 和 CNN,提出了一个依赖敏感的 CNN 模型,使 CNN 络结构也能够捕获长距离依赖性,很好地利用了二者的优点。
文档级的情感分类是要识别一个文档的情感类型。
Tang et al. 2015a) 用 CNN 来计算句子向量,然后用双向 GRU 来计算整个文档的嵌入表示。
在人类大脑中大约有 1000 亿个神经元和 100~1000 万亿个突触,可以进行很复杂的思维活动,处理很高级有难度的任务,受神经系统的启发,深度学习主要应用神经 络模型,来让机器更智能地完成一些任务。
神经 络就是按照一定规则将多个神经元连接起来的 络,不同的神经 络具有不同的连接规则。例如全连接神经 络,它有三种层:输入层,输出层,隐藏层,第 N 层的每个神经元和第 N-1 层的所有神经元相连,同一层的神经元之间没有连接。
(图片来自:Andrew L. Beamhttps://beamandrew.github.io/deeplearning/2017/02/23/deeplearning101_part1.html)
在 2000 年发现了梯度消失问题,一般的多层神经 络的表现并不是很好,在 1997 由 Sepp Hochreiter 和 Juergen Schmidhuber 提出的 LSTM:Long Short-Term Memory 模型恰好可以改善这个问题。
2006 年 Hinton 提出的 DBN:Deep Belief Networks 引起了神经 络的第二次发展。
2012 年,在 ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 比赛中,SuperVision 团队建立的深度卷积神经 络有 7 个隐藏层,5 个卷积层,包括 6000 万个参数,650,000 个神经元,6300 万个连接,通过 1000 万个图片的训练,最后在 150,000 个图片测试集上的成绩是错误率为 15.3%。
3. 和机器学习的关系和区别
传统的机器学习算法,需要应用者对某个相关领域有一些专业知识,一般流程是需要人为地根据数据构造出很多个特征,然后选择合适的模型进行分类或回归等任务。
深度学习和其他机器学习算法的区别是它能够自动地学习出数据的特征表示,不需要依赖人为做很复杂的特征工程,可以直接将原始数据投入到深层神经 络,就能够自动学习到数据中的关系和模式,而且随着数据量的增加,效果还会不断地提升,
How:常用的方法有:
-
0 均值标准化(标准化):$x^* = frac{x}{σ}$,其中 μ 为数据的均值,σ 为标准差,转换后的数据符合标准正态分布
-
min-max 极差标准化(归一化):$x^* = frac{xin}{maxin}$,其中 min 为数据中最小值,max 为最大值,转换后的数据在 0~1 之间
3.1 权重初始化
When:我们在训练神经 络时,需要将权重进行初始化
Why:合适的初始化方法可以在一定程度上减缓梯度消失和爆炸的速度
How:常用方法有:
1. 随机初始化,使其服从标准正态分布
但这个方法在训练深度神经 络时可能会造成两个问题,梯度消失和梯度爆炸。
所以在初始化权重时,不再服从标准正态分布,而是 服从方差为 k/n 的正态分布,k 因激活函数而不同。
2. 对于 RELU(z),用这个式子 $sqrt{frac{2}{size^[l-1]}}$ 乘以随机生成的 w,也叫做 He Initialization:/p>
3. 对于 tanh(z),用 Xavier 初始化方法,即用这个式子 $sqrt{frac{1}{size^[l-1]}}$ 乘以随机生成的 w,和上一个的区别就是 k 等于 1 而不是 2。/p>
通过这些方式,w 既不会比 1 大很多,也不会比 1 小很多,所以梯度不会很快地消失或爆炸,可以避免收敛太慢,也不会一直在最小值附近震荡。
3.2 激活函数
What:在神经元中,输入的 inputs 通过加权求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。
Why:激活函数能够使神经 络具有非线性,这种非线性使深度 络能够学习复杂的关系,激活函数决定着一个感知器是否应该被触发。
How:常用的激活函数有:
Sigmoid:可以将一个实数映射到 (0,1) 的区间,即可用于转换为概率,因此可用来做二分类,但存在梯度消失问题。
Tanh:是 sigmoid 的缩放版本,将输入映射到[-1,1]范围内,是 0 均值的,应用中 tanh 会比 sigmoid 更好。
**ReLU: **用于隐藏层神经元的输出,x 大于 0 时,函数值为 x,导数恒为 1,这样在深层 络中使用 relu 激活函数就不会导致梯度消失和爆炸的问题,而且 SGD 的收敛速度会比 sigmoid, tanh 快很多。但是因为 x 小于 0 时函数值恒为 0,会导致一些神经元无法激活。
Leaky Relu:为了解决 Relu 函数为 0 部分的问题,当 x 小于 0 时,函数值为 kx,有很小的坡度 k,一般为 0.01,0.02,或者可以作为参数学习而得。它具有 ReLU 的所有优点:计算高效、快速收敛。而且因为导数总是不为零,减少静默神经元的出现,允许基于梯度的学习,一定程度上缓解了 dead ReLU 问题。
3.4 Dropout
What:Dropout 是指在深度学习 络的训练过程中,按照一定的概率将一部分神经 络单元暂时从 络中丢弃,相当于从原始的 络中找到一个更瘦的 络。即在训练时,每个神经单元都可能以概率 p 被去除,在测试阶段不需要用 Dropout。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!