自然语言处理(24:(第六章4.)seq2seq模型的应用)
系列文章目录
第六章 1:基于RNN生成文本
第六章 2:seq2seq模型的实现
第六章 3:seq2seq模型的改进
第六章 4:seq2seq模型的应用
文章目录
目录
系列文章目录
前言
一、聊天机器人
二、算法学习
三.自动图像描述
总结
前言
seq2seq 将某个时序数据转换为另一个时序数据,这个转换时序数据的框架可以应用在各种各样的任务中,比如以下几个例子。
• 机器翻译:将“一种语言的文本”转换为“另一种语言的文本”
• 自动摘要:将“一个长文本”转换为“短摘要”
• 问答系统:将“问题”转换为“答案”
• 邮件自动回复:将“接收到的邮件文本”转换为“回复文本”
像这样,seq2seq可以用于处理成对的时序数据的问题。除了自然语言 之外,也可以用于语音、视频等数据。有些乍一看不属于seq2seq的问题, 通过对输入输出数据进行预处理,也可以应用seq2seq。本节将简单介绍几个使用seq2seq 的应用。如果大佬们能由此感受到seq2seq的潜力和乐趣,那就再好不过了。
一、聊天机器人
聊天机器人是人和计算机使用文本进行对话的程序,现在已经被用于 Facebook、Twitter等各种各样的服务中。 毫无疑问,聊天机器人可以使用seq2seq。因为对话是由“对方的发言” 和“本方的发言”构成的,可以理解为是将“对方的发言”转换为“本方的 发言”的问题。也就是说,如果有对话文本数据,seq2seq就可以学习它。 另外,聊天机器人也可以用在实用场景中。进行了将基 于seq2seq的聊天机器人应用于IT帮助台的实验,并展示了它成功解决有关VPN接入问题的例子。这里,我们将其中的一部分对话翻译成中文。
从上图中可知,机器(聊天机器人)很好地解决了问题,遇到VPN接入问题的人被引导到了能解决该问题的URL。当然,它只能解决与IT帮助台相关的问题,无法泛化。但是,基于对话获取答案或者线索,这一点非常实用,应用范围很广。实际上,这样的服务(简易版)已经可以在若干网站上看到。(现在的大模型就比这个强,但是我们依然不要神话大模型。)
二、算法学习
本章进行的seq2seq实验是加法这样的简单问题,但理论上它也能处理 更加高级的问题,比如下图所示的Python代码
源代码也是用字符编写的时序数据。我们可以将跨行的代码处理为一条语句(将换行视为换行符)。因此,可以直接将源代码输入seq2seq,让 seq2seq 对源代码与目标答案一起进行学习。 上述包含for语句和if语句的问题不太容易解决。不过,即便是这样的问题,也可以在seq2seq框架内处理。通过改造seq2seq的结构,可以让这样的问题能够被解决。(现在的大模型可以解决大部分,但是它依然只是辅助作用,不要神话)
三.自动图像描述
到目前为止,我们只看了处理文本的seq2seq的应用示例,除了文本之 外,seq2seq 还可以处理图像、语音等类型的数据。本节我们来看一下将图 像转换为文本的自动图像描述(image captioning)
自动图像描述将“图像”转换为“文本”。如下图所示,这也可以在 seq2seq 的框架下解决。
上图是我们熟悉的网络结构。实际上,它和之前的网络的唯一区别在于,编码器从LSTM换成了CNN,而解码器仍使用与之前相同的网络。仅通过这点改变(用 CNN替代LSTM), seq2seq就可以处理图像了。 这里补充说明一下上图中的CNN。此处,CNN对图像进行编码, 这时CNN的最终输出是特征图。因为特征图是三维(高、宽、通道)的, 所以需要想一些办法让解码器的LSTM可以处理它。于是,将CNN的特征图扁平化到一维,并基于全连接的Affine层进行转换。之后,再将转换后的数据传递给解码器,就可以像之前一样生成文本了。(你用的图像识别文字之类的就是这么个原理)
总结
这一章我们探讨了基于RNN的文本生成。实际上,我们只是稍微改动了一下上一章的基于RNN的语言模型,增加了文本生成的功能。在本章后半部分,我们研究了seq2seq,并使之成功学习了简单的加法。seq2seq模型拼接了编码器和解码器,是组合了两个RNN的简单结构。但是,尽管 seq2seq 简单,却具有巨大的潜力,可以用于各种各样的应用。 另外,本章还介绍了改进seq2seq的两个方案——Reverse和Peeky。 我们对这两个方案进行了实现和评价,并确认了它们的效果。下一章我们将继续改进seq2seq,届时深度学习中最重要的技巧之一Attention将会出现。 我们将说明Attention的机制,然后基于它实现更强大的seq2seq。