S2-03: VecMap + BPE —— 跨语言嵌入对齐的落地路线

S2-02 定义了 L0/L1/L2 三尺度架构。本文选择跨语言对齐的具体路线并实施。

1. 问题重述

L0 共享词表 + 混合训练已达到 BLEU=89.7(S2-02 实验结论)。但 L1 GRU 的跨语言传递 仍然失败——EN GRU 隐状态无法直接解码 ZH token。

核心问题:EN 和 ZH 的 GRU 隐状态空间不重叠。需要一个桥来对齐。

2. 两条现有路线

2.1 VecMap —— 单训 + 后对齐

Conneau et al. (2018, ICLR). “Word Translation Without Parallel Data.”

核心思想:

  1. EN 单语训 Echo → E_en 空间稳定
  2. ZH 单语训 Echo → E_zh 空间稳定
  3. 用 5000 对种子词 (数字、地名) 算 Orthogonal Procrustes 矩阵 W
W = argmin ||W @ E_en[i] - E_zh[i]||²,  subject to W^T W = I

W 是 128×128 的正交旋转矩阵。0 参数训练——只需求解一次 SVD 分解。

2.2 XLM-R / mBERT —— 混训 + 内置对齐

Devlin et al. (2019). Conneau et al. (2020).

核心思想:

  1. BPE 子词表跨 104 语言共享
  2. 所有语言混合训练 MLM (Masked Language Model)
  3. 共享子词 + 混合数据 → 跨语言对齐"自动涌现"

2.3 对比学习 (Contrastive)

Oord et al. (2018). Gao et al. (2021, SimCSE).

核心思想:正例对 (cat, Katze) 推近,负例对 (cat, Hund) 推开。

loss = -log(exp(sim(cat_en, Katze_de)/τ) / Σ_j exp(sim(cat_en, w_j)/τ))

需要大 batch size (4096+) 来提供足够负例。

3. 我们的选择:VecMap + BPE 组合

组件 路线 理由
L0 BPE 共享词表 (XLM-R 路线) 已验证可行——Phase AB 混训 BLEU=89.7
L1 Bridge Procrustes 正交对齐 (VecMap 路线) 6 行代码,0 参数,一次算完

为什么不选纯 XLM-R

XLM-R 在 L0 层面(词层面)对齐。但不会自动对齐 L1(GRU 隐状态层面)——因为 GRU 把 E 空间映射到了不同的隐空间。Procrustes 可以同时解决词空间和隐空间的对齐。

为什么不选 Contrastive

对比学习需要大 batch (4096+),我们的单 GPU 训练不适合。Procrustes 不需要训练。

4. 实施计划

Step 1: BPE 分词

import sentencepiece as spm

# 训练 BPE 模型(EN + ZH 文本)
spm.SentencePieceTrainer.train(
    input=['en_text.txt', 'zh_text.txt'],
    model_prefix='sp_bpe',
    vocab_size=16000,
    character_coverage=0.9995
)

# 替换 jieba
zh_toks = sp.encode_as_pieces(zh_text)   # ['中国', '人民', '共和国']
en_toks = sp.encode_as_pieces(en_text)   # ['the', 'cat', 'sits']

Step 2: Phase AB (混训 L0+L1)

和 S2-02 完全一致——BPE 替换 jieba,其余不变。

Step 3: Procrustes 对齐

# 取 5000 对 EN-ZH 配句的 GRU 隐状态
X_en = [L1_encode(en_sent).mean(0) for en_sent in seed_pairs]
X_zh = [L1_encode(zh_sent).mean(0) for zh_sent in seed_pairs]

# SVD 求正交对齐矩阵
U, _, V = torch.svd(X_zh.T @ X_en)
W = V @ U.T  # 128×128 orthogonal

# 翻译时:
zh_hidden = L1_decode(W @ en_hidden)

Step 4: 验证

指标 当前 (无桥) VecMap 后 (预期)
EN echo BLEU 89.7 ≥ 89.7
EN→ZH 翻译 BLEU 0 ( 循环) > 5 (破零)

5. 关键论文引用

论文 年份 与 SPR 关系
Mikolov et al. “Exploiting Similarities among Languages…” 2013 发现单语 Word2Vec 空间可通过线性变换对齐
Artetxe et al. “Learning bilingual word embeddings with (almost) no bilingual data” 2017 0 种子词对的自监督对齐
Conneau et al. “Word Translation Without Parallel Data” (VecMap) 2018 无监督 Procrustes 对齐的标杆——本实验直接用
Devlin et al. (mBERT) 2019 104 语言 BPE 共享词表 + MLM 混合训练——本实验的 L0 策略
Conneau et al. (XLM-R) 2020 更大规模多语言共享词表验证
Oord et al. “Representation Learning with Contrastive Predictive Coding” 2018 InfoNCE 对比损失——对比学习路线的基础

6. 预期

如果 Procrustes W 能让 EN→ZH 的翻译 BLEU > 5,证明三尺度架构 + VecMap 路线是可行的。W 是 offline 计算的——不需要训,只是一次 SVD。失败则继续探索。


License: GPLv3 本文《SPR》系列采用 GPLv3 协议开源发布。