1. 序列预测与信息瓶颈:机器翻译的原始困境
机器翻译作为序列到序列(Seq2Seq)任务的典型代表,其核心挑战在于如何将源语言序列转换为目标语言序列。早期的神经网络方法主要依赖循环神经网络(RNN)架构,其工作流程可以形象地比喻为"压缩-解压"过程:
- 编码阶段:RNN编码器逐词读取源语言句子,将整个序列的信息压缩为一个固定维度的上下文向量(context vector)
- 解码阶段:RNN解码器基于该向量逐步生成目标语言译文
这种架构存在明显的信息瓶颈问题:无论源句子多长,都必须被压缩到相同大小的向量空间。就像试图用一张便利贴总结整本《战争与和平》,再要求他人仅凭这张便签复述原著细节,信息丢失在所难免。具体表现为:
- 长句子翻译质量显著下降
- 复杂句式结构难以保留
- 细粒度语义信息(如修饰关系)容易丢失
技术细节:假设使用LSTM作为RNN单元,其隐状态维度通常为512或1024。这意味着无论输入句子是5个词还是50个词,最终都必须压缩到相同的向量空间,导致信息密度差异巨大。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RNN与注意力机制:动态信息检索的突破
2014年提出的注意力机制为信息瓶颈问题提供了创新解决方案。其核心思想是:让解码器在生成每个目标词时,动态决定需要关注源句子的哪些部分,而非强迫模型将所有信息压缩到单一向量中。
2.1 注意力机制工作原理
- 编码器输出保存:编码器处理源句子时,保留所有时间步的隐状态(h₁, h₂,..., h_T),而非仅保留最终状态
- 注意力权重计算:解码器在时间步t生成目标词时,计算当前解码器状态s_t与所有编码器状态的匹配分数
- 上下文向量生成:通过softmax将匹配分数转换为权重分布,对编码器状态加权求和得到动态上下文向量c_t
python复制# 简化版注意力计算伪代码
def attention(encoder_states, decoder_state):
scores = [dot_product(decoder_state, h_i) for h_i in encoder_states]
weights = softmax(scores)
context = sum(w * h for w
