【论文阅读】Text Classification Using Label Names Only: A Language Model Self-Training Approach.


前言

论文:
“Text Classification Using Label Names Only: A Language Model Self-Training Approach”

文章地址
github源码


一、原理

人类可以不看任何标签示例,仅基于一小组描述要分类的类别的词对文本进行分类。这篇论文由此受到启发,探讨了只使用每个类的标签名称来训练未标记数据的分类模型,而不使用任何人工标记文档的可能性。

二、方法

1. Category Understanding via Label Name Replacement

通过标签名称替换来理解类别。使用预先训练好的带掩码的 BERT 语言模型(MLM)来预测在大多数情况下什么词可以取代 label 名称。

在语料库中,每次出现标签名(label name),通过BERT编码器生成 contextualized 的 embedding 向量 h(长度为h),将其输入MLM的头,输出在整个语料库的词汇 V 上的概率分布,显示每个单词 w w w出现在这个位置的可能性:
p ( w ∣ h ) = S o f t m a x ( W 2 σ ( W 1 h + b ) ) ,      ( 1 ) p(w|{\boldsymbol h})=\rm Softmax(W_2 \sigma(W_1 \boldsymbol h+\boldsymbol b)), \;\;(1) p(wh)=Softmax(W2σ(W1h+b)),(1)

Table 1 显示了在两种不同上下文中,预训练好的带编码语言模型 MLM 对替换原始标签名称“sports”产生的top单词(按 p ( w ∣ h ) p(w|{\boldsymbol h}) p(wh) 排序) 。

Table1:在不同上下文中,最有可能出现在sports位置上的词

可以观察到对于每个被掩盖的词(masked word),前 50 个预测词通常与原始词有相似的意义,因此我们使用MLM给出的 50 个词的阈值,来定义对标签名称在语料库中每次出现的有效替换 (valid replacement)。

将词汇根据在语料库中有效替换标签名称的次数来排序,选取排名前100 位的词汇来形成每个类别的类别词汇表 category vocabulary,用 NLTK (Bird et al,2009)去掉停用词和出现在多个类别中的词汇。

2. Masked Category Prediction

被掩盖类别的预测

2.1 前情:
人进行分类时关注的一般是句子序列中的类别指示词。如:“篮球赛是一个常常在中学生中风靡的赛事。”,人类通过“篮球”“赛事”来判断这个句子属于“运动”类。
同样,我们也希望应用到机器上。
一种方式是直接关注方法1中得到的 category vocabulary 的条目在语料库中的每一次出现。这种方式的问题是:
(1)category vocabulary 中有些词不能很好地指示这个类别:
词汇的含义是随上下文变化的,不是每次类别关键词出现时都指示了这个类别。
比如:“宇宙中没有不动的物体,一切物体都在不停的运动。” 虽然出现了“运动”这个类别关键词,但并不意味着主题“运动”。
(2)category vocabulary 可能不全:
类别词汇表涵盖范围有限,特定语境下的一些术语可能与类别关键词的含义相似,但不包含在category vocabulary中。
比如:“百步穿扬”

2.2 方法:新任务——引入Masked Category Prediction
Fig.1 所示,一个预训练的LM模型创建了上下文相关的词级(word-level)类别监督,用于训练自身在词汇被掩盖时预测词汇的隐含类别。
为了创建语境化的词级类别监督,我们重用(reuse)了 方法1 中的预训练MLM方法,通过检查它们的 有效替换词汇,来理解每个词的语境含义。
如表1所示,MLM的预测词很好地反映了原词的含义。和之前一样,我们将MLM给出的top-50认为是原词的有效替换。另外,对于一个 “ w w w”,如果 w w w 的替换词中超过20/50出现在 c w c_w cw 的类别词汇表 c a t e g o r y    v o c a b u l a r y category\;vocabulary categoryvocabulary 中时,将 w w w 作为类别 c w c_w cw 的类别指示词 category-indicative
通过检查上方语料库中的每个词,我们将得到一个类别指示词和对应类别标签的集合 S i n d \bf S_{ind} Sind 作为词级监督。

对于每个类别指示词 w w w,我们用【MASK】掩盖它,并训练模型来预测 w w w 的指示类别 c w c_w cw,输入 w w w 的语境化向量 h h h,通过交叉熵损失和一个分类器(一个线性层):
L M C P = − ∑ ( w , c w ) ∈ S i n d log ⁡ p ( c w ∣ h w ) ,      ( 2 ) L_{MCP}= -\sum_{(w,c_w)\in S_{ind}}\log p(c_w|\boldsymbol h_w),\;\; (2) LMCP=(w,cw)Sindlogp(cwhw),(2)
p ( c ∣ h ) = S o f t m a x ( W 2 h + b c ) ,      ( 3 ) p(c|\boldsymbol h)=\rm Softmax(W_2\boldsymbol h+\boldsymbol b_c), \;\;(3) p(ch)=Softmax(W2h+bc),(3)
其中 W c W_c Wc b c \boldsymbol b_c bc 是线性层的可学习参数。(K是类别数)

我们注意到,为了进行类别预测,必须屏蔽类别指示词,因为这将迫使模型根据单词的上下文 “ c o n t e x t s contexts contexts” 来推断类别,而不是简单地记住与上下文无关的类别关键字。这样,BERT编码器将学习去将序列中的类别判别信息category-discriminative information 编码到语境化向量 h 中,这有助于预测该位置的类别。
aaaa
Fig1: MCP概览。掩码语言模型(MLM)的头部首先预测出在每个词元 token 位置上可能出现的词。如果一个词元可能的替换词与某个类的 category vocabulary 高度重叠,则该 token 被认为是“类别指示性”的。MCP head的训练是在类别指示词被屏蔽时,预测它们的隐含类别。

3. Self-Training

在用MCP任务训练LM后,我们提出在整个未标注的语料库中自训练这个模型。

  1. 原因:
    (1)依然存在很多在MCP任务中还不曾被模型发现的未标注文档(由于没有检测到类别关键词),这可以用于优化(refine)模型,使之更好地泛化(generalization)。
    (2)分类器已经被训练为可以在top words被屏蔽时预测它们的类别,但是还未被应用于【CLS】标号,这种情况下模型被允许查看整个句子序列来预测类别。

  2. 方法:
    自训练(ST)的思想是:迭代使用模型的当前预测 P P P 来计算一个目标分布 Q Q Q,它可以指导模型改进(refinement)。ST 目标的一般形式可以用 KL 发散损失(divergence loss)表示:
    L S T = K L ( Q ∣ ∣ P ) = ∑ i = 1 N ∑ j = 1 K q i j log ⁡ q i j p i j ,      ( 4 ) L_{ST}={\bf KL} (Q||P) = \sum_{i=1}^N \sum_{j=1}^K q_{ij}\log\frac{q_{ij}}{p_{ij}},\;\;(4) LST=KL(QP)=i=1Nj=1Kqijlogpijqij,(4)
    其中 N N N是实例 instance 的数量。
    对目标分布 Q Q Q有两种主要选择:Hard labeling 和 Soft labeling。
    软标记(Xie et al.,2016)通过增强高自信预测,并对当前预测进行平方和归一化来降低低自信预测,从而得到Q:
    q i j = p i j 2 / f j ∑ j ′ ( p i j ′ 2 / f j ′ ) ,   f j = ∑ i p i j ,      ( 5 ) q_{ij}= \frac{p_{ij}^2/f_j}{\sum_{j'}(p_{ij'}^2/f_{j'})},\, f_j=\sum_ip_{ij},\;\; (5) qij=j(pij2/fj)pij2/fj,fj=ipij,(5)
    将MCP训练的分类器(公式(3))应用于每个文档的【CLS】标记进行模型预测:
    p i j = p ( c j ∣ h d i : [ C L S ] ) . ( 6 ) p_{ij}=p(c_j|\boldsymbol h_{d_i:[\rm CLS]}). (6) pij=p(cjhdi:[CLS]).(6)
    在实践中,我们发现软标记策略始终比硬标记提供更好和更稳定的结果,可能是因为硬标记将高自信的预测直接视为ground-truth标签,更容易错误传播。软标记的另一个优点是,可以计算每个实例的目标分布,不需要预先设置置信阈值。
    将50作为批量大小,通过 公式(5) 更新目标分布 Q Q Q,通过 公式(4) 训练模型。

4. 总体算法:

Algorithm 1: LOTClass Training.

输入:一个未标注的文本语料库 D D D; 一个标签集 C C C; 一个预训练的神经语言模型 M M M
输出:一个训练好的模型 M M M,用于分类 K K K个类别。
C a t e g o r y      v o c a b u l a r y ⟵ m e t h o d 1 S i n d ⟵ m e t h o d 2 T r a i n    M    w i t h    公 式 2 B ⟵ T o t a l    n u m b e r    o f    b a t c h e s f o r    i ⟵ 0    t o    B − 1    d o i f    i    m o d    50 = 0      t h e n Q ⟵ 公 式 5 ; T r a i n    M    o n    b a t c h    i    w i t h    公 式 4 R e t u r n      M ; \begin{aligned} & {\rm Category\;\;vocabulary \longleftarrow method1} \\ & {S_{ind} \longleftarrow \rm method2} \\ & {{\rm Train}\;M\; {\rm with\;公式2}} \\ & {B\longleftarrow {\rm Total\;number\;of\;batches}}\\ & {{\bf for}\;i \longleftarrow 0\;to\;B-1\;\bf do}\\ & \qquad{\bf if}\;i\;mod\;50=0\;\;\bf then\\ & \qquad\qquad Q\longleftarrow公式5;\\ & \qquad {\rm Train}\;M\; {\rm on\;batch}\;i\; {\rm with\;公式4}\\ & {\rm Return}\;\;M; \end{aligned} Categoryvocabularymethod1Sindmethod2TrainMwith2BTotalnumberofbatchesfori0toB1doifimod50=0thenQ5;TrainMonbatchiwith4ReturnM;

三、讨论

  1. 弱监督分类的潜力还未被完全开发。
    (1)为了使方法简单明了,我们只使用了基于BERT的简单模型,而不是更高级的更近期的语言模型。
    (2)我们只使用了至多3个单词作为每个类别的标签名称。
    (3)我们没有使用像反向翻译系统之类的其他依赖项进行增强。我们相信,随着模型的升级,输入的丰富和数据处理技术的使用,性能将会变得更好。
  2. 将弱监督模型运用到其他的自然语言处理任务。
    很多其他NLP问题都可以被表示为分类任务。比如,命名实体识别(named entity recognition)和面向方面的情感分析(ABSA:aspect-based sentiment analysis) (Huang et al., 2020)。有时标签名称含义有一般性,以至于不好诠释,比如"person","time"等。为了应用类似这篇文章的方法到这些情景下,可以考虑使用更具体的示例术语(如特定的人名)来实例化标签名称。
  3. 弱监督文本分类的局限性。
    在一些困难情况下,标签名称不足以教会模型进行正确分类。比如,有些评论文本的隐含语义可能与词级理解是对立的。
    “I find it sad that just because Edward Norton did not want to be in the film or have anything to do with it, people automatically think the movie sucks without even watching it or giving it a chance.”
    因此,用主动学习(active learning)来改进弱监督分类将是一件很有趣的事情,在这种情况下,模型允许用户对困难的情况给出结果。
  4. 是否可以和半监督分类方法相结合。
    我们可以很容易将弱监督与半监督方法集成到不同场景:
    (1)当没有训练文本可用时,弱监督方法的高可信预测可以作为真实标注(ground-truth labels)来初始化半监督方法。
    (2)当训练文本和标签名称都可用时,可以设计一个联合目标,用单词级任务和文档级任务来训练模型。

四、总结

这篇文章证明了标签名称是一种有效的文本分类监督类型,它可以避免繁琐的人工标注过程,降低了分类成本,也有一定的准确率,未来可以更加完善。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
最新发布
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值