基于双线性变换的语义组合模型
算法题目描述
“基于双线性变换的语义组合模型”是自然语言处理中,用于建模短语或句子语义表示的一种经典方法。其核心问题是:如何从两个词(或子成分)的向量表示,组合出一个能准确反映其联合语义的新向量?
具体而言,给定两个词(例如,一个形容词和一个名词,或者一个动词及其宾语),我们各自有它们的词向量表示(比如通过Word2Vec或GloVe预训练得到)。简单的组合方法,如向量加法或逐元素相乘,往往无法捕捉词与词之间复杂的相互作用(例如,“红苹果”和“大苹果”中,“红”和“大”对“苹果”的修饰方式是不同的)。双线性变换模型通过引入一个可学习的参数矩阵,为这种组合提供了一种更强大、更灵活的建模方式,旨在更准确地计算组合后的语义向量。
循序渐进讲解
第一步:问题形式化与直观理解
假设我们有两个词:u 和 v。
- 它们对应的词向量分别是 u ∈ ℝ^d 和 v ∈ ℝ^d,其中
d是词向量的维度。 - 我们的目标是得到一个组合后的短语或成分的向量表示 p ∈ ℝ^d。
最简单的组合方式是:
- 加法:p = u + v
- 逐元素乘法(Hadamard积):p = u ⊙ v (即
p_i = u_i * v_i)
加法模型假设语义是叠加的,而乘法模型强调共同激活的特征。但它们都假设两个词对最终表示的贡献是独立、对称的,无法建模诸如修饰关系、支配关系等非对称、结构化的语义交互。
双线性变换的核心思想:引入一个参数矩阵 W ∈ ℝ^(d×d),让第一个词向量 u 通过这个矩阵“过滤”或“转换”后,再与第二个词向量 v 进行交互。这允许模型学习到类似于“当u出现时,v的哪些语义维度应该被增强或抑制”的复杂模式。
第二步:模型的基本数学形式
双线性组合的基本公式如下:
p = f( u^T W v )
等等,这是一个常见的误解。让我们先澄清:
-
标量输出形式:在某些早期工作或特定任务(如关系分类)中,
u^T W v计算出一个标量,表示u和v之间存在某种关系的强度或得分。这里W ∈ ℝ^(d×d),u^T W v结果是一个实数。- 这适用于判断两个词之间是否存在特定语义关系,但不直接产生一个组合后的向量。
-
向量输出形式(本题核心):为了得到一个新的
d维向量p,我们需要一个更通用的形式。常见的一种定义是:
p = g( W * [u; v] + b )
但这其实是线性变换,不是“双线性”。真正的、用于产生向量输出的双线性变换通常写作:
p = U^T u ⊙ V^T v
或者更一般地,利用双线性映射的完整形式,但这样参数会非常多(d×d×d)。
在实际的语义组合模型中,一个经典且高效的简化版本是:
p = f( W_1 u + W_2 v + u ⊙ W_3 v )
让我们聚焦于最核心、最能体现“双线性”交互的部分:u ⊙ W_3 v。
- 这里,
W_3 ∈ ℝ^(d×d)是一个可学习的矩阵。 - 计算过程:
a. 用矩阵W_3对第二个词向量v进行线性变换:h = W_3 v,得到一个新的d维向量h。
b. 将第一个词向量u与变换后的向量h进行逐元素相乘(Hadamard积):p_bilinear = u ⊙ h = u ⊙ (W_3 v)。 - 这个
p_bilinear就是双线性交互项。它不再是简单的u ⊙ v,而是让v先根据W_3进行了一次“旋转”或“重新加权”,再与u相乘。这使得u的每个维度可以根据W_3学到的模式,有选择地与v的不同变换版本进行交互。
第三步:完整的组合模型架构
一个完整的基于双线性变换的语义组合模型,通常会将双线性项与线性项结合,以保留原始信息并增加非线性。一个代表性公式如下:
p = g( W_1 u + W_2 v + B( u ⊙ W_3 v ) )
让我们分解这个公式:
- W_1 u 和 W_2 v:这是两个线性变换项。
W_1, W_2 ∈ ℝ^(d×d)。它们分别对u和v进行独立的转换,允许模型在组合前调整每个向量的表示。 - B( u ⊙ W_3 v ):这是核心的双线性交互项。
W_3 ∈ ℝ^(d×d)是双线性变换矩阵。B ∈ ℝ^(d×d)是另一个线性变换矩阵,作用于双线性交互的结果上,目的是将交互后的向量映射到最终的d维空间。有时为了简化,B可以被设为恒等矩阵。 - g(·):这是一个非线性激活函数,如
tanh或ReLU。它引入了非线性,使模型能够学习更复杂的组合函数。 - p:最终的输出向量,代表了短语(如“红苹果”)的语义表示。
模型参数:需要学习的参数是矩阵 W_1, W_2, W_3, B(可能还有偏置项b,已在公式中隐含)。
第四步:模型的训练与应用
-
训练目标:该模型本身不是一个端到端的任务系统,而是一个“组合函数”模块。它通常被嵌入到一个更大的神经网络架构中,用于解决需要理解短语或句子语义的任务。
- 示例任务1:情感分析。给定句子,通过递归或循环的方式,不断用此组合函数将相邻的词/短语向量组合成更高级别的短语向量,最终得到整个句子的向量表示,然后接一个分类器判断情感极性。训练时,误差通过反向传播算法,从分类器一直回传到组合函数的参数
W_1, W_2, W_3, B以及词向量。 - 示例任务2:语义相关度计算。计算两个短语的向量,然后用余弦相似度衡量其相关度,与人工标注的相关度分数计算均方误差(MSE)作为损失。
- 示例任务1:情感分析。给定句子,通过递归或循环的方式,不断用此组合函数将相邻的词/短语向量组合成更高级别的短语向量,最终得到整个句子的向量表示,然后接一个分类器判断情感极性。训练时,误差通过反向传播算法,从分类器一直回传到组合函数的参数
-
训练过程:
a. 初始化所有参数矩阵(W_1, W_2, W_3, B)和词向量(或使用预训练词向量固定/微调)。
b. 前向传播:对于训练数据中的每个短语对(u, v),根据上述公式计算组合向量p。
c. 将p送入任务特定的上层网络(如分类层),计算预测和损失。
d. 反向传播:计算损失关于所有参数(包括组合函数参数)的梯度。
e. 使用优化算法(如SGD、Adam)更新参数。 -
优势:
- 强大:比加法和乘法模型更能捕捉词间复杂的、非对称的语义交互。
- 可解释性:矩阵
W_3可以看作学习了词性间或语义角色间的相互作用模式(例如,形容词如何修饰名词)。 - 灵活性:可以通过设计不同的双线性形式来适应不同结构(如树结构、序列结构)的语言组合。
第五步:总结与关联
基于双线性变换的语义组合模型是神经网络语义组合研究中的一个重要里程碑。它明确了从词向量构建短语/句子向量时,建模词与词之间结构化交互的重要性。后续的许多更复杂的模型(如基于递归神经网络、Tree-LSTM、以及引入注意力机制的模型)都受到了这一思想的启发,或者可以看作是这种双线性交互思想的扩展和泛化。
简单来说,这个模型就像是一个“智能语义混合器”,它不是一个简单的搅拌勺(加法或乘法),而是一个带有可编程配方的精密仪器(参数矩阵W_3),能够根据输入词的不同,以特定的、学习到的方式将它们的意思融合在一起。