1700540603
百面机器学习:算法工程师带你去面试 06 SeqGAN:生成文本序列
1700540604
1700540605
1700540606
1700540607
场景描述
1700540608
1700540609
我们已探讨了用GANs生成离散数据。在有限点构成的离散空间中,每个样本是一个最小且不可分的点,不考虑点内部构造。因此,上节IRGAN模型中“生成”二字的含义,是从一群点中挑出一些点,是全集生成子集的过程。信息检索的生成模型,在给定查询词后,从文档集中找出最相关的文档,一个文档就是一个最小单位的点,至于文档用了哪些词,它并不关心。
1700540610
1700540611
很多时候,我们想得到更多细节,比如:写出一篇文章、一段话或一句话,不只是从文档集中选出文章。一个是“选”的任务,一个是“写”的任务,二者差别很大。以句子为例,选句子是把句子看成一个点,写句子是把句子看成一个个字。假设你手里有一本《英语900句》,你把它背得滚瓜烂熟。当让你“活用900句”时,是指针对特定场景,从900句中挑选最恰当的一句话;当让你“模仿900句造句”时,是指不拘泥于书中原句,可替换名词动词、改变时态等,造出书中没有的句子,此时你不能将句子看成点,不能死记硬背,需开启创造性思维,切入句子结构来选词造句。生成一句话的过程,是生成文字序列的过程,序列中每个字是最小的基本单位。也就是说,句子是离散的,词也是离散的,生成器要做的不是“选”句子,而是“选”词“写”句子。
1700540612
1700540613
2017年一个名为SeqGAN的模型被提出[43],用来解决GANs框架下生成文本序列的问题,进一步拓展GANs的适用范围。该文章借鉴了强化学习理论中的策略和动作值函数,将生成文字序列的过程看成一系列选词的决策过程,GANs的判别器在决策完毕时为产生的文字序列打分,作为影响决策的奖励[44]。
1700540614
1700540615
知识点
1700540616
1700540617
循环神经网络,LSTM/GRU,语言模型(Language Model),奖励/长期奖励,策略梯度,动作值函数
1700540618
1700540619
问题1 如何构建生成器,生成文字组成的序列来表示句子?
1700540620
1700540621
难度:★★☆☆☆
1700540622
1700540623
分析与解答
1700540624
1700540625
1700540626
1700540627
1700540628
假定生成器产生一个定长(记T)的句子,即文字序列,yi∈,其中yi表示一个词,表示词库。一般地,序列建模采用RNN框架(见图13.18),具体单元可以是LSTM或GRU,甚至带上注意力机制。
1700540629
1700540630
1700540631
,
1700540632
1700540633
(13.28)
1700540634
1700540635
1700540636
,
1700540637
1700540638
(13.29)
1700540639
1700540640
1700540641
.
1700540642
1700540643
(13.30)
1700540644
1700540645
1700540646
1700540647
上面式子刻画了RNN的第t步,ht−1表示前一步的隐状态,xt采用前一步生成词yt−1的表示向量,xt和ht−1共同作为g的输入,计算当前步的隐状态ht。如果g是一个LSTM单元,隐状态要包含一个用作记忆的状态。隐状态ht是一个d维向量,经线性变换成为一个|Y|维向量,再经过一个Softmax层,计算出选择词的概率分布zt,并采样一个词yt。概率分布zt是一个条件概率,因为xt为词yt−1的表示向量,x1作为一个空字符或RNN头输入暂忽略,所以条件概率写成,进而生成文字序列Y1
:T的概率为:
1700540648
1700540649
1700540650
.
1700540651
[
上一页 ]
[ :1.700540602e+09 ]
[
下一页 ]