らんだむな記憶

blogというものを体験してみようか!的なー

詳解ディープラーニング 第2版 (9)

Transformer に入るにあたって式が整理される。

式 (6.16)

\begin{align*}
a(\tau, t) = \mathrm{softmax}(g(\bm{h}_s(\tau), \bm{h}_t(t-1)))
\end{align*}

は式 (6.26) として

\begin{align*}
a = \mathrm{softmax}(\mathrm{score}(\bm{h}_s, \bm{h}_t))
\end{align*}

となり、式 (6.17)

\begin{align*}
\bm{c}(t) = \sum_{\tau=1}^T a(\tau, t) \bm{h}_s(\tau)
\end{align*}

は式 (6.27) として

\begin{align*}
\bm{c} = \sum a \cdot \bm{h}_s
\end{align*}

になる。

スコア関数としてゼロつく 2 では、式 (6.31)

\begin{align*}
\mathrm{score}(\bm{h}_s, \bm{h}_t) = \bm{h}_t^T \bm{h}_s
\end{align*}

が使われていたが、この最も単純なドット積注意の場合、$\bm{h}_s$ と $\bm{h}_t$ の次元が同じでなければならないとある。確かにそうだ。式 (6.29)

\begin{align*}
\mathrm{score}(\bm{h}_s, \bm{h}_t) = \nu^T \mathrm{tanh}(W_t \bm{h}_t + W_s \bm{h}_s)
\end{align*}

や式 (6.30)

\begin{align*}
\mathrm{score}(\bm{h}_s, \bm{h}_t) = \bm{h}_t^T W_a \bm{h}_s
\end{align*}

の形の場合、間に重み行列が入ることでその次元の違いを吸収してくれる。

ここまでのものは 2 つの系列のデータを扱うことから Source-Target Attention と呼ばれるが、1 つの系列データに対してのみ Attention を行う場合には、その系列データ内での時間依存性をうまく学習できる Self-Attention と呼ばれるものになるとある。実はこの本を読む動機はこの Self-Attention の理解と Transformer の理解であったので、漸くメインディッシュに到達したことになる。さて、この Self-Attention をドット積で書くと

\begin{align*}
\mathrm{score}(\bm{h}_s, \bm{h}_s) = \bm{h}_s^T \bm{h}_s
\end{align*}

で何だかノルムの 2 乗に見えるのだが、省略記法をやめてちゃんと書き下すと

\begin{align*}
\mathrm{score}(\bm{h}_s, \bm{h}_s) = \bm{h}_s^T(\tau) \bm{h}_s(\tau-1)
\end{align*}

なので、時間が異なることに注意する必要がある。