本稿ではFeedForward層とResidual connection(残差接続)、正規化層を導入します。Transformerはattention機構とFeedForward機構から構成されており、それぞれに対して残差接続が行われています。
実装
FeedForward
FeedForwardとは循環構造を持たないニューラルネットワークの総称です。Transformerでは単純に隠れ層が1つの全結合層が用いられます。また隠れ層の次元は通常入力次元とは大きなものが用いられ出力次元は入力次元と同じものに設定されます。
さてそれではなぜこのfeedforward層が必要なのでしょうか。少なくともattentionは結局Value部分の平均化操作にすぎないため、非線形変換や、活性化関数的操作、それ以上の操作を行いたい場合はこのような追加の層が必要です(参考: natural language - What is the role of feed forward layer in Transformer Neural Network architecture? - Cross Validated)。ニューラルネットワークでは多様な変換が行える機構が(それが必要かどうかはおいといて)含まれている方が良いのでしょう。
他: [2012.14913] Transformer Feed-Forward Layers Are Key-Value Memories
Residual connection
日本語で残差接続です。ReLUやバッチ正則化と並ぶ、深層ニューラルネットワークの要とされています。
図のようにxを入力する関数の出力y=g(x)とxを合算したものを最終的な出力とします。 この残差接続により、勾配消失を防げたり、深い層のモデルの学習を安定させる効果がある(そうです)。
また計算グラフにおけるbackward計算処理も簡単で、単純にaddのノードに到達した勾配をそのままxのノードへ送るだけです。
正規化層
入力するミニバッチデータに関して正規化を行います。(同じ箇所のデータが平均0分散1になるように変換します。)これは学習を安定させる効果があります。
全体の構成
コード
まとめ
本稿ではfeed forward層、residual connection、正規化層を追加し、その実装を示しました。
他の記事
- 次の記事
- 前の記事
- 一覧 Transformer自作 カテゴリーの記事一覧 - サブロウ丸