对联智能生成的原理(学习笔记附代码实现与详解)

本文介绍了如何使用基于attention机制的seq2seq模型进行对联生成。模型通过encoder理解输入的上联,decoder利用attention机制生成下联。详细解释了seq2seq模型的结构、计算流程及attention机制的工作原理,还提供了代码实现和实验结果的分析,展示了模型在训练初期和后期的生成效果,并指出了模型的不足之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章均从个人微信公众号“ AI牛逼顿”转载,文末扫码,欢迎关注!


过年的脚步越来越近,是不是该给家里贴上一副对联呢?除了买买买,有没有想过自己动手写出一副对联?来吧,撸起袖子加油干!只是提笔之后,有没有像穿肠兄这样呢

锅锅我当然没有华安的文采,又不能让夺命书生耀武扬威,只能借助AI去学习已有的对联数据,然后替我力挽狂澜。言归正传,开始本期的正题——基于attention机制的seq2seq模型的序列生成任务。

一、seq2seq模型的理解

1.  什么是seq2seq模型

seq2seq模型全称是sequence to sequence模型,是一个编码--解码(encoder--decoder )结构的网络,如图一所示。它的输入是一个序列,输出也是一个序列。 encoder(编码) 将一个可变长度的信号序列变为固定长度的向量表达(图一中的context向量),decoder 将这个固定长度的向量变成可变长度的目标信号序列。应用场景有:比如这里的对联生成——输入上联,就能输出下联。又比如图一中的场景——双语翻译。

图一

                                                                                               

2.  模型的输入是什么

输入肯定不是图一里的文字,计算机很智障的,怎么能理解这么复杂的东西!!需要把原始的文字进行向量化表示,模型才能开始进行训练。如图二所示,输入应该为这样。

图二

这里的每一个词都用一个长度为4的向量表示(举例说明,实际使用的过程中,这个向量长度就是词向量的维度。另外还假设了向量的取值,颜色的深浅与数字没有必然联系,只是为了加以区分)。 

 

3.   seq2seq的计算流程

输入进来的一个训练句子,先要经过encoder过程,从而获取整个句子的信息,相当于计算机“理解”句子的含义。encoder过程如图三所示。

图三

这就是RNN网络的计算过程(如果不了解RNN,可以在网易云课堂观看吴恩达的《深度学习》课程,目前已经免费了)。图中的符号的意义分别为:

hidden  state  #0是网络计算所需的初始化参数(向量)。

input表示的是每个词的向量,如图二所示。

每个蓝色圆圈就是RNN细胞单元,可以是基础的RNN单元,也可以是LSTM或者GRU单元。图中可以看到,每个细胞单元有两个输入,一个输出(这里是seq2seq模型,所以只输出当前时间步的hidden  state,不输出output)。

 hidden state #3是最后一个时间步上,细胞单元输出的结果(向量)。从计算流程图可以看出,这个输出要用到所有时间步上的input和中间的hidden

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值