Joint embedding of words and labels for text classification 论文解读
Motivation
不同的词/字对分类的影响程度不同,目的是找到那些对分类有重要影响的词/字,并赋予他们更高的权重
模型结构
- X:[batch_size, sequence_length, vocab_size] one-hot表示每个词/字的输入数据
- y:[batch_size, class_nums] one-hot表示的输入数据的标签
- V:[batch_size, embedding_size, sequence_length] 词向量表示每个词/字的输入数据
- C:[embedding_size, class_nums] label_embedding矩阵
- G:[batch_size, class_nums, sequence_length]
- β\betaβ:[batch_size, sequence_length] 第1维为softmax后的概率值,表示经过label的attention后,这个词/字的重要性(权重)
- z:[batch_size, hidden_size] 文本聚合向量,表示整条数据的信息
- y:[batch_size, class_nums] 第1维为softmax后的概率值
- f0:将one-hot表示的词/字映射成word_embedding表示
- f1:将每条数据的word_embedding聚合成一个向量
- f2:使用文本聚合向量进行分类,即将z映射到y用来分类
前向传播过程
每条数据里的每个词/字,对最后分类结果的影响应该是不同的。
比如说一条文本里有词:湖人、赛前训练等,要分到类别NBA中,"湖人"对应的word_embedding,所占的权重应该高于词"赛前训练"对应的word_embedding。
1.label_embedding矩阵和word_embedding矩阵相乘,并归一化
G矩阵中的一条数据(class_nums × sequence_length)中的每个元素,表示每个词/字的embedding向量与每个label的embedding向量的余弦相似度
- CTC^{T}CT:[class_nums, embedding_size]
- VVV:[batch_size, sequence_length, embedding_dim]
- ?\oslash?:表示元素逐个相除
- G^\hat{G}G^:[batch_size, class_nums, sequence_length]
每个元素值为,g^kl=∥ck∥∥vl∥\hat{g}_{kl}=\left \| c_{k}\right \| \left \| v_{l}\right \|g^?kl?=∥ck?∥∥vl?∥
∥ck∥\left \| c_{k}\right \|∥ck?∥表示CTC^TCT中一列的L2正则
∥vl∥\left \| v_{l}\right \|∥vl?∥表示V中一行的L2正则 - CTVC^{T}VCTV:[batch_size, class_nums, sequence_length]
- GGG:[batch_size, class_nums, sequence_length]
2.通过引入非线性(使用卷积、激活函数),来提取更高层的,词/字与label的相似性关系,以及连续词/字之间的空间关系
在sequence_length这个方向上,使用class_nums个 [class_nums, 2r+1] 大小的卷积核,对每个字进行卷积,从而得到的新的词/字与label的attention的值,不仅和自己有关,也和周围的词有关。
- ulu_{l}ul?:[batch_size, class_nums] G中的一列
- Gl?r:l+rG_{l-r:l+r}Gl?r:l+r?:[batch_size, class_nums, width(2r+1)] G中和卷积核进行卷积的部分,lll表示第lll个词/字,卷积核的视野在高为class_nums,宽为左右r个词/字的范围
- W1W1W1:[class_nums, width(2r+1), 1, filter_nums] filter卷积核
- b1b1b1:[batch_size, class_nums]
3.对每个词/字,获取相似性最高的label的相似性值
- mlm_{l}ml?:[batch_size] 对每条数据来说,是个数字
4.mmm矩阵的一行,表示每条数据的每个词/字对应的最相似的label的相似性值,再进行SoftMax转换成概率值,用来表示每个词/字的重要性
- β\betaβ:[batch_size, sequence_length]
- mmm:[batch_size, sequence_length]
5.v矩阵中,一条数据(一行)的每一个词/字的embedding表示,乘上β\betaβ矩阵的一条数据的一列(该词/字对应的重要性),得到最终的embedding表示,每个词/字都进行这样的操作(embedding表示的各维度和权重相乘),最后所有词/字的embedding表示再相加(即做一个通过权重的average),得到文本聚合表示
- zzz:[batch_size, sequence_length, embedding_dim]
- βl\beta_{l}βl?:[batch_size]
- vlv_{l}vl?:[batch_size, embedding_dim]