はじめに
製造業においても,自然言語処理は重要な技術テーマのひとつである。週報などのメール,社内規定などのルール,安全記録や検査記録など,日々多くの文章が業務上で現れる。これらのテキストデータに対して自然言語処理技術を適用して業務効率化を実現していくために,近年発展が目覚ましい大規模言語モデルについて学ぶことにした。
第2章 Transformer
本章では,自然言語処理において標準的に用いられるニューラルネットワークモデルであるTransformerについて説明されている。Transformerは,大規模言語モデルを含む幅広いタスクに応用されている。
2.1 概要
Transformerには,エンコーダ・デコーダ,エンコーダのみ,デコーダのみの3種類が存在する。
図 : Transformerのモデル構造
出所 : Vaswani et. al. "Attention Is All You Need" https://arxiv.org/pdf/1706.03762
2.2 エンコーダ
本節では3種類のTransformerのうち,エンコーダについて,エンコーダを構成する各要素の役割が説明されている。
各要素の入出力や役割について説明する。なお,語彙の次元数は,入力トークンの埋め込みの次元数をとする。
位置符号
以下の式で定義される次元の位置符号(position encoding)を計算する。
その後,以下の式を用いて,モデルの入力埋め込みを算出する。
- 出力 : モデルの入力埋め込み
自己注意機構 (self-attention)
- 役割 : 文脈の情報,すなわちある文章におけるある単語において,関係性が深い別の単語の情報を付与する。
- 入力 : モデルの入力埋め込み
- 処理 :
入力された埋め込みに対して,キー(key),クエリ(query),バリュー(value)の3つの異なる埋め込みを計算する。
クエリ埋め込み・キー埋め込み・バリュー埋め込みのそれぞれをとすると,これらの3つの埋め込みは次元の重み行列を用いて,
番目のトークンから見た番目のトークンの関連性スコアは,
そして,出力埋め込みは,関連性スコアをソフトマックス関数を用いて正規化した重みによるバリュー埋め込みの重み付き和になる。
- 出力 : 出力埋め込み
マルチヘッド注意機構
- 役割 : キー・クエリ・バリュー注意機構の表現力をさらに高めるために,この注意機構を同時に複数適用する。
フィードフォワード層
- 役割 : 活性化関数により,ニューラルネットワークの表現力を高める。
残差結合
- 役割 : 勾配消失・勾配爆発問題を回避する。
層正規化
- 役割 : 値が大きい値になり過ぎないようにして,訓練を安定化させる。
ドロップアウト
- 役割 : 過適合を防ぐ。
まとめと感想
本章では,近年の自然言語処理技術の中核にあるTransformerの解説がなされていた。
Transformer以前の系列データ用のモデルであるRNNやLSTMとはかなり構造が異なっており,なかなか興味深かった。