基于对抗性正则化(Adversarial Regularization)的文本表示学习算法详解
算法描述
“基于对抗性正则化的文本表示学习”属于表示学习和对抗学习的交叉领域。它的核心目标是:学习高质量的文本向量表示(即文本的密集、低维向量),使得这些表示不仅能够很好地服务于下游任务(如分类、检索),还能对输入文本中某些不相关的、具有干扰性的变异(例如文本风格、领域特征、某些敏感属性)保持不变(invariant)。 这种“不变性”通过对抗训练来实现。
简单比喻:想象我们需要学习一个人的画像(文本表示)。我们希望这幅画像能精准体现这个人的职业(主要任务),但无论TA是穿西装还是穿T恤(干扰属性),这幅画像都应该能让我们判断出TA的职业。对抗性正则化就是为了“强迫”表示忽略掉穿着(干扰属性)的信息。
循序渐进解题过程
我们以一个具体场景为例:构建一个电影评论的情感分类模型,但希望学到的文本表示能“忘记”评论是关于哪个电影类型的(如动作片、爱情片),而只关注情感本身。 因为电影类型可能会对模型判断情感带来无关的偏见。
第一步:问题形式化与模型总览
- 输入:一段文本(如电影评论文本)。
- 核心网络(生成器/编码器):一个神经网络(如BERT、LSTM、CNN等),用于将输入文本 \(x\) 编码成一个稠密的向量表示 \(h = Encoder(x)\)。这个 \(h\) 是我们希望学习的、高质量的文本表示。
- 主要任务分类器:一个分类器网络,以 \(h\) 为输入,预测主要任务标签(情感:正面/负面)。其损失函数记为 \(L_{task}\)。
- 对抗分类器(判别器):另一个分类器网络,同样以 \(h\) 为输入,试图预测我们希望“忽略”的干扰属性(电影类型:动作/爱情/喜剧等)。这是对抗性的来源。
- 核心思想:训练目标是让核心网络生成的表示 \(h\),使得主要任务分类器预测情感的性能很好(\(L_{task}\) 小),但同时使得对抗分类器预测电影类型的性能很差。这样,\(h\) 中就尽量不包含电影类型的信息,从而学到更纯净的、与情感强相关的表示。
第二步:损失函数设计
这是算法的核心数学表达。总损失函数 \(L_{total}\) 由三部分构成:
\[L_{total} = L_{task} + \lambda L_{adv} + \beta L_{reg} \]
让我们拆解每一项:
-
主任务损失 \(L_{task}\):
- 这是标准监督学习损失。例如,对于情感二分类,使用交叉熵损失。
- \(L_{task} = - \sum y_{sentiment} \log(\hat{y}_{sentiment})\),其中 \(y_{sentiment}\) 是真实情感标签,\(\hat{y}_{sentiment}\) 是主任务分类器的预测。
-
对抗性损失 \(L_{adv}\):
- 这是实现“不变性”的关键。目标是最大化对抗分类器在预测干扰属性(电影类型)上的错误。但在梯度下降中,我们通常通过最小化一个损失来实现“最大化错误”。
- 常用技巧是梯度反转层。在计算图的反向传播中,当梯度经过梯度反转层从对抗分类器传向核心编码器时,梯度符号会取反。
- 对抗分类器本身的损失是标准的分类损失(如交叉熵):\(L_{adv\_disc} = - \sum y_{genre} \log(\hat{y}_{genre})\)。
- 对于编码器的对抗性损失:实际上,我们通过梯度反转,让编码器在接收到来自对抗分类器的梯度时,朝着使得对抗分类器性能更差的方向优化。在公式上,这体现为 \(L_{adv} = -L_{adv\_disc}\) 对编码器的参数求导时的特殊处理(即梯度反转)。所以,编码器的更新会尝试让 \(h\) 更难以区分电影类型。
-
正则化项 \(L_{reg}\):
- 这是一个可选但常用的项,用于防止模型过拟合或稳定训练。常用L2正则化:\(L_{reg} = ||\theta||^2_2\),其中 \(\theta\) 是模型参数。
-
超参数 \(\lambda\) 和 \(\beta\):
- \(\lambda\):对抗性权重。控制“遗忘干扰属性”这一目标的强度。\(\lambda\) 越大,编码器越被迫生成与干扰属性无关的表示。需要仔细调节,太小无效,太大会损害主任务性能。
- \(\beta\):正则化权重。控制模型复杂度的惩罚。
第三步:训练流程(极小极大博弈)
训练过程是一个动态的博弈过程,通常采用交替训练:
-
固定编码器,训练主分类器和对抗分类器:
- 用当前编码器得到表示 \(h\)。
- 更新主分类器:最小化 \(L_{task}\),使其能更好地从 \(h\) 预测情感。
- 更新对抗分类器:最小化 \(L_{adv\_disc}\),使其能更好地从 \(h\) 预测电影类型。这一步是“辨识”,对抗分类器努力成为一个好的“侦探”,试图从 \(h\) 中找到电影类型的蛛丝马迹。
-
固定主分类器和对抗分类器,训练编码器:
- 前向传播得到 \(h\)。
- 计算编码器的总损失:\(L_{encoder} = L_{task} + \lambda \cdot (GRL(L_{adv\_disc})) + \beta L_{reg}\)。
- \(L_{task}\) 鼓励 \(h\) 包含情感信息。
- \(GRL(L_{adv\_disc})\) 表示梯度反转后的对抗损失。在反向传播时,编码器收到的关于对抗损失的梯度是反方向的,因此编码器的参数更新会朝着增大 \(L_{adv\_disc}\) 的方向进行,即让对抗分类器更难判断电影类型。
- 反向传播更新编码器参数。
循环进行步骤1和2,直到模型收敛。最终,编码器学会了生成一种“混淆”了电影类型但情感信息鲜明的文本表示。
第四步:算法优势与应用场景
-
优势:
- 学习去偏见的表示:可应用于公平性机器学习,消除表示中的性别、种族等敏感属性信息。
- 提升领域泛化能力:让表示对领域(干扰属性)不变,使得模型在未知领域上表现更鲁棒。
- 学习更本质的特征:迫使模型关注与核心任务最相关的深层特征,而非表面的相关性。
-
应用场景:
- 领域自适应:源领域有标签,目标领域无标签。对抗训练使模型学到的表示无法区分来自哪个领域,从而提升在目标域的表现。
- 文本风格迁移:将内容与风格分离。对抗训练可使表示不包含风格信息,再结合特定的风格解码器。
- 隐私保护:学习不含用户私人信息的文本表示。
总结
基于对抗性正则化的文本表示学习,通过引入一个对抗分类器并与主任务分类器进行极小极大博弈,为编码器的优化增加了一个约束:最大化干扰属性预测的难度。这就像一位老师(主任务)在教学生(编码器)核心知识,同时还有一个“干扰者”(对抗分类器)不断试图用无关信息分散学生注意力,而学生必须学会专注核心、忽略干扰。最终得到的是一个对核心任务判别性强、对指定干扰属性鲁棒的优质文本表示。