当前位置: 代码迷 >> 综合 >> Joint embedding of words and labels for text classification 论文解读
  详细解决方案

Joint embedding of words and labels for text classification 论文解读

热度:18   发布时间:2023-11-18 03:59:26.0

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]
  相关解决方案