HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units
Hsu et al. (FAIR)
把 BERT 的 masked prediction 真正搬到语音——用 k-means 聚类做「伪 phoneme」标签,迭代式 SSL 训练,比 wav2vec 2.0 更稳。
arXiv:2106.07447#ssl#audio#speech#masked-prediction
核心贡献
- 01K-means 离线聚类 MFCC(或上一轮模型隐层)→ 离散伪标签
- 02Masked prediction:mask 输入帧,预测被 mask 帧的 cluster id(cross-entropy)
- 03迭代式训练:第 2 轮用第 1 轮 Transformer 隐层重新聚类,伪标签越来越精细
- 04下游 ASR fine-tune 在 LibriSpeech 上 SOTA,超越 wav2vec 2.0
HuBERT 的核心 trick:不要"对比",直接"预测"。
- wav2vec 2.0 用 contrastive loss,区分 mask 位置的正样本 vs 同序列负样本——需要 codebook 不退化的复杂技巧
- HuBERT 改成
cross-entropy:把 mask 位置的"目标"换成离线 k-means 聚类得到的离散 cluster id,直接预测
迭代式精炼:
- 第 1 轮:对 MFCC 做 k-means 聚类(100 类)→ 伪标签 → 训第一个 HuBERT
- 第 2 轮:用第 1 轮 HuBERT 的某中间层(如第 6-9 层)输出做 k-means → 更"语音感知"的伪标签 → 再训
- 第 3 轮可选:进一步细化
每轮的 cluster 比上轮更接近真实 phoneme 分布,无需任何标注。
HuBERT vs wav2vec 2.0? HuBERT 用 k-means + cross-entropy 替代 contrastive,更稳;wav2vec 2.0 端到端但 codebook 容易退化要 diversity loss 救场。为什么 k-means 够用? 因为我们不在乎 cluster id 的语义,只要它对内容编码就行。为什么要迭代? 第一轮用 MFCC(手工特征)聚类不够好,迭代用模型 hidden state 聚类越来越接近 phoneme。和 BEST-RQ / data2vec 关系? 都是 HuBERT 思路的变种——BEST-RQ 用 random projection 代替 k-means,data2vec 用 teacher-student 自蒸馏代替 k-means。工业地位? Meta 自家 Seamless / SeamlessM4T 都基于 HuBERT 系。