1. 问题描述
输入
古诗的第一句话。
输出
古诗剩余的句子。
2. 模型
输入
首先构造词典集,然后使用词典中的词语,生成所有满足音韵约束的可能的组合。之后使用语言模型,对所有生成的候选项进行打分,选取打分最高的作为古诗的第一句。作者使用了基于单个字符的RNN网络加上Kneser-Ney trigram来作为语言模型(避免了对古诗的分词)。
目标
对于行 Si+1=w1,w2,…,wm ,给定所有之前的行 S1:i 时,预测:
P(Si+1|S1:i)=∏j=1m−1P(wj+1|w1:j,S1:i)
结构
主要流程
viujiP(wj+1|w1:j,S1:i)=CSM(Si)=RCM(v1:i,j)=RGM(w1:j+1,u1:ji)
Convolutional Sentence Model (CSM)
网络的第一层,输入是一行古诗,输出是其句子向量。所有类似的模型都可以采用,作者使用的是CSM模型,因为其使用的是单个字符而不是词语。
网络结构:
对于上述网络:
\begin{align}
T_{:,j}^{l+1} &= \sigma(\sum_{i=1}^nT_{:,j+i-1}^l\odot C_{:,i}^{l,n})\\
N^{l+1}&=N^l-n+1\\
1 &\leq j \leq N^{l+1}\\
T^1 &= [L\cdot e(w_1), L\cdot e(w_2), \dots , L\cdot e(w_m)]\\
N^1 = m
\end{align}
T_{:,j}^{l+1} &= \sigma(\sum_{i=1}^nT_{:,j+i-1}^l\odot C_{:,i}^{l,n})\\
N^{l+1}&=N^l-n+1\\
1 &\leq j \leq N^{l+1}\\
T^1 &= [L\cdot e(w_1), L\cdot e(w_2), \dots , L\cdot e(w_m)]\\
N^1 = m
\end{align}
其中:
- Nl 是上图中第 l 层的节点个数。
q 是隐含层的节点个数,即隐空间的维度。-
n
表示当前层(第
l 层)计算下一层时使用的节点数量。 - Tl∈Rq×Nl 是上图中第 l 层的表示。
Cl,n∈Rq×n 是一个权重矩阵,用于将第 l 层的n 个节点计算出 l+1 层的一个节点的值。- ⊙ 是按元素的向量乘法。
- σ 是非线性函数。
- w 是词典中的一个词语。
e(w)∈R|V|×1 是w的独热码(one-hot)。- L∈Rq×|V| 是转换矩阵,矩阵的每一列都是一个字符向量。
Recurrent Context Model (RCM)
网络结构:
表达式:
其中:
- q 是隐含层的节点个数,即隐空间的维度。
hi∈Rq×1 ,隐层状态。- vi∈Rq×1 ,CSM模型的输出,即第 i 行句子的向量表示。
M∈Rq×2q 权重矩阵。- Uj∈Rq×q 权重矩阵。
- uji∈Rq×1 输出。
- σ 非线性函数。
- m 是当前行的字符个数。
Recurrent Generation Model (RGM)
网络结构:
表达式:
其中:
q 是隐含层的节点个数,即隐空间的维度。- ri∈Rq×1 ,隐含层的状态。
- uji∈Rq×1 ,RCM网络的输出。
- yj∈R|V|×1 ,RGM网络的输出。
- w 是词典中的一个词语。
e(w)∈R|V|×1 是w的独热码(one-hot)。- R∈Rq×q
- X∈Rq×|V|
- H∈Rq×q
- Y∈R|V|×q
-
σ
非线性函数。
网络最后的输出采用 softmax 进行激活,即:P(wj+1=k|w1:j,uji)=exp(yj+1,k)∑|V|k=1exp(yj+1,k)
损失函数
网络的目标函数采用交叉熵损失:预测的字符和语料中实际字符的交叉熵。