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

文章均从个人微信公众号“ 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 state,所以hidden

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值