[人工智能-深度学习-50]:循环神经网络主要的应用场景
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[人工智能-深度学习-50]:循环神经网络主要的应用场景相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121437994
目录
第1章 循环神经网络CNN在神经网络应用中的位置
循环神经网络与卷积神经网络类似,是有神经元组合而成的神经网络。
卷积神经网络CNN的核心结构是:卷积核,其功能用于提取图像的特征。
循环神经网络RNN的核心结构是:循环单元,其功能用于记录输入之间的时序关系。
卷积核和循环单元都通过权重共享的机制减少全连接的权重的数量。
CNN主要应用机器视觉与图像处理。
RNN主用应用与自然语言处理。
第2章 循环神经网络CNN的应用场景
2.1 一对一(组合逻辑)
一个输入(不是只有一个数据,而是一组并发数据),得到一个固定的、确切的输出。
输入与输出之间的对应关系,与时间无关,与上下文无关,与前后的输入无关。相邻的两个输入以及其对应的两个输出之间是独立的,他们之间也没有“时序”的先后关系。这是典型的“组合”电路 (理论上,FPGA也可以实现)
这种网络结构与CNN的网络结构一致。
主要应用包括:
(1)图像分类
(2)线性回归(拟合)
(3)其他:其他需要自动发现内在特征的分类
2.2 一对多(时序逻辑)
一对多,每个输入时相互独立的,与向量的输入无关。但需要有多个输出。
每个输入是独立的,与相邻输入无关。
而输出是由多个单词(不是字母)组成的序列。
每个单词(而不是一个字母,也不是一句话)是一个输出,为了满足自然语言的特征,单词与单词之间,是有关联的,不是相互独立的。即输入虽然没有序列,但输出是有序列的。
主要应用包括:
(1)“图文标注”:即对一张输入图片进行文字标注。
2.3 多对一(时序逻辑)
多对1,是指具有时序关系的多个输入,经过网络处理,得到一个输出。
这里的前提是:多个输入之间是有时序关系。即多个输入,如“我”、“打”、“你”,如果时序关系不同,其含义也是不相同的,即为不同的输入,也就需要有不同的输出。
“我打你”,“你大我”,“你我打”,“打你我”,这几个含义都不同。
主要应用包括:
(1)情感分析:根据一段文字,分析其情感类型。
训练时:
输入为许多有情感分类标签的句子,将这些句子送入到RNN中,RNN的输出为情感分类。经过训练,RNN就能够记住不同自然语言包括的不同情感特征。
预测时:
当输入一段自然语言时,RNN网络就能够预测出,这段自然语言所包含的情感特征。
这里的关键:输入得自然语言,不是通过独立的关键词来进行分类的,而是根据上下文的语境来分类的。
比如:“讨厌”,在不同的语境下,其含义是不同的,有些语境是“厌恶”的情感,有些语境是“暧昧”的情感。
(2)新闻分类:根据一段文字的内容或标题,分析出其属于哪种题材的文章。
这样,RNN对文字进行分类,不是根据关键词进行分类的,而是根据词的序列进行分类的。
比如,我爱北京天安门,并不是根据三个卷积词“我” 、“爱” 、“北京天安门”,而是根据其字符的序列进行分类。
比如,输入任意的评论,电商平台的人工智能就需要有能力根据这些评价对判断评价的分类,对评价进行自动归类(而不用户手工指定是差评还是好评),这种能力,并非通过关键词来实现的。
比如,“我讨厌哪些无聊的电影,而这部却与众不同”,如果是关键词的方式,有可能得出“讨厌”的结论,而根据上下文,作者并不讨厌这部电影,甚至是喜欢的。
再比如,输入任意新闻标题时,能够自动根据文字序列的标题进行文章、新闻的分类。
把上下文的词,关联起来,这就是RNN的的任务。
I hate this movie 》这里是由4个单词组成的短文本。
(3)关键词提取:这里的关键词,并不是原句中的关键词,而是其核心思想
训练时:
使用RNN将多篇带有关键词标签的文章读一遍,然后把最后一个输出拿出来做attention(注意力、中心思想),然后将结果放到前馈网络中进行训练。
预测时:
给RNN送入一段文字,RNN就可以分析出其核心思想,如下图所示:
2.4 数量相同的“多对多”
输入与输出,都是有多个独立单元组成的序列,但输入和输出单元的个数是相同的。
主要应用包括:
(1)字符预测:
例如,如果你想写一个文档,单词的顺序很重要,当前的单词肯定取决于以前的单词。
如果把注意力放在文字写作上,输入每个字符时,当前待输入的一个字符取决于之前的字符。
比如要写The quick brown fox,当输入到“The quick br”时,再输入字符时,什么的字符的可能性最大呢?很显然,'o'字符的可能性比较大。每次输入字符后,对输入下个字符的预测。
如下图所示:
这里就需要用到了循环神经网络:预先给定一个文本序列,用于循环神经网络的学习,神经网络能够记住在指定的“上文”字符序列的情况下,产生一下不同字符出现概率的情况,然后从中选择一个概率最大的字符作为其预测值。
类似的、基于序列的模型可以用在很多领域中:
在音乐中,一首曲子的下一个音符肯定取决于前面的音符
在视频领域,电影中的下一帧肯定与先前的帧有关。
此外,在某些情况下,视频的当前帧、单词、字符或音符不仅仅取决于过去的信号,而且还取决于未来的信号。
(2)视频标注:把视频中没一帧的图片看成是一个图片序列,然后根据图片序列给视频做标注。
(3)视频行为识别:识别输入的视频图像帧序列中的人物行为,即前后输入网络的“图像”,不再是独立的单元,而是具备
2.5 数量不等的“多对多”(时序逻辑)
输入与输出,都是有多个独立单元组成的序列,但输入和输出单元的个数是不一定相同的。
(1)主要应用包括:
(2)语音识别:输入的语音数据,生成相应的语音文本信息。比如微信的语音转文字功能。
(3)机器翻译:不同语言之间的相互转换。像有道翻译、腾讯翻译官等。
训练时:
在机器翻译中,可以将一种语言的序列丢进RNN中,然后取RNN的最后一个输出当做输入继续训练,然后将每一个输出当做输入继续训练就可以得到另一种语言的一个序列。
预测时:
某种一种语言的输入,就可以预测处对应的另一种语言的输出。这种预测就是“机器实时翻译”。
(4)音乐生成:
(5)DNA序列分析:输入的DNA序列,输出蛋白质表达的子序列。
(6)文本生成:利用RNN亦可以生成某种风格的文字
(7)实体名字识别:从文本中识别实体的名字。
(8)诗歌创作
一个不错的应用是与自然语言处理(NLP)的合作。网上已经有很多人证明了 RNN,他们创造出了令人惊讶的模型,这些模型能表示一种语言模型。
训练时:这些语言模型能采纳像莎士比亚的诗歌这样的大量输入,并在训练这些模型后生成它们自己的莎士比亚式的诗歌,而且这些诗歌很难与原作区分开来。
生成时:RNN能够在给定的有限的字符的情况下,根据学习到的原文的文字序列特征,能够生成与原作者相似性极高的文字序列,这就是文字创作。
这种应用最复杂,使用范围最广。
后记:
(1)RNN适用范围:
只要输入或者输出的数据,前后具备一定的时序关系,即为输入序列或输出序列。就可以考虑使用循环神经网络RNN, 也就是说RNN可以应用于一切输入或输出具有时序关系的场合。
在现实生活中,具备动态属性的“时序”逻辑的应用场合远远大于具备静态属性的“组合”逻辑的应用场合。
(2)循环神经网络是如何做到具备上述能力的呢?
这就需要学习循环神经网络CNN的静态结构和其时序工作原理,结构决定了功能!
关于CNN的静态结构和其时序工作原理, 请参考后续文章。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121437994
以上是关于[人工智能-深度学习-50]:循环神经网络主要的应用场景的主要内容,如果未能解决你的问题,请参考以下文章
[人工智能-深度学习-49]:循环神经网络RNN与NLP的关系以及RNN在人工神经网络中的位置