背景 当前深度学习中“经验性的成功”(emperical success)大多来自于对网络架构的改进与训练过程的改进。包括优化器、正则化方法和模型结构等等。在这些成功的工作背后隐藏的一个原则是,在将某个机器学习pipeline上的改进迁移到其他task上时,表现至少不会变差。
例如CNN中的残差连接,被广泛应用于图像分类、语义分割等任务上。当然在实际工作中研究者并不可能尝试所有的改进方法,因此研究者必须通过一些有代表性的任务对改进进行评估。
Transformer结构是一个很好的例子。在三年前被提出以来,学界出现了许多对transformer结构的mod,然而只有很少的mods被真正应用于实践。Transformers的各种mods似乎出现了在不同task上的“泛化”问题。
Transformer结构回顾 (这篇总结的不错,包括各种符号用的也比较统一)
input token sequences: $x[1],x[2],x[3]…,x[T]$
Target sequence: $y[1],y[2],y[3]…,y[T]$
经过emb层和position encoding p之后得到隐状态 $h_0$
$$ h_{e,0}[t]=\mathbf{E}[x[t]]+p[t] $$
这里的 $p[t,i] \in \mathbf{R} ^{d_{model}}$
$$ p[t,i]= \begin{cases} sin(\frac{i}{10000^{2i/d_{model}}})& \text{i even} \ cos(\frac{i}{10000^{2i/d_{model}}})& \text{i odd} \end{cases} \tag{0} $$