阅读量 ,评论量
背景
Simple RNN:encoder-decoder结构,encoder output作为decoder的initial
states的输入,随着decoder长度的增加,encoder output的信息会衰减。
Contextualized
RNN:decoder在每个timestep的input上都会加上一个context,以解决decoder逐渐“遗忘”源端序列信息的问题。
Contextualized RNN with soft align
(Attention):为了让每个decoder端的token在解码时用到的context有所侧重,计算当前token与context之间的”相关度”以做一个”attention”操作。
一些零散点
1、LM Head与embedding层做权重绑定(Weight Tying):
- 优:权重绑定可强制让语义对称性成立(在预测时,最终输出的hidden state
与 embedding 越接近(内积越大),这个 token 被选中的概率就越高)
- 劣:绑定后,embedding层的权重会有两条梯度流,训练方向会互相拉扯,影响精度上限。举例:“bank”这个词在输入时,embedding
需要表达的是一种尚未消歧的、兼容”河岸”和”银行”两个含义的初始表征;但在输出预测时,模型已经通过上下文消歧了,LM
Head 需要的是在已消歧的语义空间中精确地匹配到”bank”。LM
Head存在一种与embedding层并不相同的定位,该定位是
在给定上下文语义表征的情况下,把”应该出现的
token”的分数推高,把”不应该出现的 token”的分数压低
- 模型较小时,该绑定操作带来的正则化效果,在数据有限、模型容量有限时是优势占多的,“两个目标的妥协”造成的损失,小于参数减半带来的泛化收益。
2、log空间操作:
- 交叉熵损失:logits → log_softmax → NLLLoss;
- log_softmax内部实现的log-sum-exp具体计算有数值保护算法,解决了exp易溢出的问题:math.exp(89)
→ float32 直接 inf!float32 最大值约 3.4e38
- 序列联合概率:logprob → 连加;重要性采样:logprob → 相减;
3、