用中文传话游戏理解 RNN

简介:

循环神经网络(RNN)是人工神经网络中非常流行的一个版本,其可以很好地处理序列数据类型。该数据类型指的是将一组数据点以特定顺序排列,从而使相关的数据点一个挨着一个,具体的例子有:股票市场价格、音频和视频数据、DNA 序列、传感器数据、自然语言文本等等。

为了直观地了解 RNN 是如何工作的,假设我们正在玩一个很受欢迎的儿童游戏——中文传话。该游戏的目的是最后一个人能准确预测出句子中所漏掉的词语,比如「The brown dog has four _____」。

用中文传话游戏理解 RNN

中文传话游戏

玩家们需要排成一队,并且根据句子中词语的排列,每个人都会得到其中的一个词语,比如玩家 1 得到词语「the」,玩家 2 得到词语「brown」,玩家 3 得到词语「dog」,以此类推。首先,队伍中的第一个人把他听到的词语悄悄地告诉队伍中站在他身后的玩家。然后这个玩家将这个词语和自己的词语一起悄悄地告诉他身后的人。接下来,整个队伍不断重复这个过程直到最后一个玩家。最后的玩家需要预测出所漏掉的词语,并大声地把这个消息告诉整个集体。

显而易见的是,最后一个玩家可以准确地猜出漏掉的词语是「legs」。这是因为前一个玩家告诉了他这个句子的前面部分:「The brown dog has four」,所以他能够通过该语境推导出这个词语。

上文说明了 RNN 的基本原理。通过提取序列之前的信息,并结合序列当前的输入,该网络能够预测出序列的下一个输出。

RNN 的展开

由上文可知,RNN 能够通过对整个序列重复同样的过程,从而做出预测。左下图显示了循环网络的基本结构。它同时接收序列数据输入向量(x)和隐藏状态信息(a),然后使用二者去预测序列数据的输出。

用中文传话游戏理解 RNN

为了正确地将系统工作方式可视化,我们通常把 RNN 展开成与序列数据长度一致的一连串重复的单元或称之为时间步(如右上图所示)。比如我们需要处理的序列是一个有三个词语的句子时,那么其将被展开成有三个时间步的 RNN 网络,每一个时间步处理一个词语。

RNN 的设计架构

序列数据的输入和输出有各种各样的形式和长度。比如在情感分析任务中,输入通常是一串文本,而期望的输出是一个整数(1-5 的评分范围)或是单个文本(好的、坏的,积极的、消极的、中性的)。然而在语音文本任务中,输入则是声波中的一串声音信号,其输出则是一串对应的文本。

正是由于这些差异,当需要处理序列任务时,我们会针对性地设计 RNN 的输入和输出结构。一些常见的架构类型如下:

1. 多对多架构(同样的序列长度)

这是最基本的 RNN 结构,在每个时间步中输入序列的数量与输出序列的数量是一致的。一个使用该架构的应用实例是文本生成器:根据句子中前面的词语,预测下一个最有可能的词语。

用中文传话游戏理解 RNN

采用多对多 RNN 架构的文本生成器

如上图所示,文本生成器的输入是一串词语,输出则是由预测得到的下一个词所组成的一串词语:「brown dog has four legs」。

2. 多对多架构(不同序列长度)

当需要处理输入和输出序列的数量不一致时,我们便可采用多对多架构的另一种版本。而机器翻译任务就是这样的一个应用实例:输入是原文的一串词语(比如法文),而输出是译文的一串词语(比如英文)。这个架构有两个不同的模块:编码器和解码器。前者接受输入的句子,将其映射成内部状态表征,然后将其传给后者,以供其生成输出的句子。

用中文传话游戏理解 RNN

采用多对多 RNN 架构的机器翻译

在此架构中,当编码器将全部的输入序列处理完后,解码器才开始对输出的序列进行预测。这与前面提到的相同序列长度架构完全不同,在那个架构中,其每收到一个输入序列对象后,马上开始对每一个输出序列对象进行预测。

3. 多对一架构

在此架构中,RNN 在每个时间步都有一串输入,但只有在最后一个时间步输出一个单一值。情感分析任务正是此情景下的应用实例:任务的目的是对输入的语句进行分类,判断其是否有正面或负面的情感。

用中文传话游戏理解 RNN

采用多对一 RNN 架构的情感分析任务

在上图的情感分析任务中,RNN 并不是在每个时间步都有输出,而是在读完整串词语后,仅在最后一个时间步输出一个单一值:「positive」。

4. 一对多架构

此处的 RNN 在第一个时间步接受一个单一值,然后在剩余的时间步中输出一串值。基于此架构的应用通常会取得每个时间步的预测输出,并把它传递给下一层,作为该层的输入值。一个应用实例是图像标注:RNN 接受一幅图像作为输入,然后输出描述图像中所发生事情的一串词语。

用中文传话游戏理解 RNN

采用一对多架构的图像标注

上图显示了输入是一个女性跑步的表情符号,而输出则是预测得到的一串词语:「woman in blue vest running」。

结论

在这篇文章中,我们简单介绍了循环网络以及其不同类型的架构,包括相应的应用实例。


原文发布时间为:2018-05-31

本文来自云栖社区合作伙伴“雷锋网”,了解相关信息可以关注“雷锋网”。

相关文章
|
4月前
|
机器学习/深度学习 自然语言处理 TensorFlow
tensorflow循环神经网络(RNN)文本生成莎士比亚剧集
我们将使用 Andrej Karpathy 在《循环神经网络不合理的有效性》一文中提供的莎士比亚作品数据集。给定此数据中的一个字符序列 (“Shakespear”),训练一个模型以预测该序列的下一个字符(“e”)。通过重复调用该模型,可以生成更长的文本序列。
|
5月前
|
自然语言处理 算法 数据处理
持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)
Faster-Whisper是Whisper开源后的第三方进化版本,它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等,从而减少了计算量和内存消耗,提高了推理速度,与此同时,Faster-Whisper也改进了推理算法、优化计算过程、减少冗余计算等,用以提高模型的运行效率。 本次我们利用Faster-Whisper对日语视频进行双语(日语/国语)转录实践,看看效率如何。
持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)
|
7月前
|
人工智能 自然语言处理 安全
中文竞技场-中文大模型比比看
今天,大语言模型正在各个应用领域引起巨大的变革,并已经在搜索、金融、办公、安全、教育、游戏、电商、社交媒体等领域迅速普及和应用。例如微软将 GPT4应用于必应搜索引擎和 Office 办公软件。几乎每个企业都试图探索如何将AI融入业务和技术中去。但以中文为主的语言大模型却缺少应有的关注,今天让我们聚焦中文竞技场,看看各种中文大语言模型的表现吧~
63514 1
中文竞技场-中文大模型比比看
|
4月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
45 0
|
4月前
|
机器学习/深度学习 数据采集 人工智能
本地训练,立等可取,30秒音频素材复刻霉霉讲中文音色基于Bert-VITS2V2.0.2
之前我们[使用Bert-VITS2V2.0.2版本对现有的原神数据集进行了本地训练](https://v3u.cn/a_id_330),但如果克隆对象脱离了原神角色,我们就需要自己构建数据集了,事实上,深度学习模型的性能和泛化能力都依托于所使用的数据集的质量和多样性,本次我们在本地利用Bert-VITS2V2.0.2对霉霉讲中文的音色进行克隆实践。
本地训练,立等可取,30秒音频素材复刻霉霉讲中文音色基于Bert-VITS2V2.0.2
|
8月前
|
自然语言处理 测试技术
ModelScope中文竞技场模型测试
ModelScope中文竞技场是一个创新性的应用测试平台,专注于评估和提升自然语言处理(NLP)模型在中文语境下的性能。该平台为研究人员、工程师和数据科学家提供了一个丰富多样的测试环境,用于测试和比较不同NLP模型在各种任务上的表现。这也使的我们了解它们在不同任务上的相对表现,选择更适合使用场景的回答。下面👇就是基于该应用测试结果(使用到的对话类型为:代码相关,人类价值观,NLP 专业领域):
134 2
|
9月前
|
人工智能 搜索推荐 Java
|
11月前
|
机器学习/深度学习 并行计算 PyTorch
循环神经网络实战案例——实现文本情感分类
循环神经网络实战案例——实现文本情感分类
118 0
|
11月前
|
存储 人工智能 开发者
中文多模态模型问世!IDPChat生成图像文字,只需5步+单GPU
中文多模态模型问世!IDPChat生成图像文字,只需5步+单GPU
139 0
|
机器学习/深度学习 存储 人工智能
使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法(上)
使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法
155 0
使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法(上)