More Related Content Similar to BERT分類ワークショップ.pptx (17) BERT分類ワークショップ.pptx7. BERTとは
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
で提案された深層学習モデル。2022/7/22現在 44471引用!!!
簡単に、さまざまな自然言語処理タスクに適用可能であり、実際に多くの研究で用いられている。
以下の順序でBERTについて説明していく。
1. 入力文章の前処理
2. BERTの構造
A) 埋め込み
B) 自己注意機構(Self-Attention Mechanism)
C) 残差接続(Residual Connection)
D) 層正規化(Layer Normalization)
3. 事前学習
A) マスク言語モデリング(MLM : Masked Language Modeling)
4. 分類タスクへの適用法
7
質問はslackチャットで随時受け付けております
8. 1. 入力文章の前処理
1. 入力文章の前処理
2. BERTの実際の構造
A) 自己注意機構(Self-Attention Mechanism)
B) 残差接続
C) 層正規化
3. 事前学習
A) マスク言語モデリング(Masked Language Modeling)
4. 実際に分類タスクに適用
本日は晴天なり。
[[CLS], 本, ##日, は, 晴, ##天, なり, 。, [SEP], [PAD], …, [PAD]]
[本, ##日, は, 晴, ##天, なり, 。]
入力文章
単語分割
特殊トークン結合
特殊トークン
[CLS] : 文章の先頭を示す
[SEP] : 文章の終わり(もしくは区切り)
[PAD] : 入力長の調節用
トークン
トークン
[ 2, 108, 28486, 9, 4798, 28849, 297, 8, 3, 0, …, 0 ]
辞書を用いてID化
トークンID
辞書は事前に大規模データから単語頻度を用いて作成する
辞書のサイズは32000程度が用いられる場合が多い。
辞書に含まれなかったトークンは事前に[UNK]トークンに置き換える。
[UNK] : 語彙リストに含まれない
トークン
[MASK] : のちに説明
※##は1つ前のサブワードと結合して
1つの単語を意味することを示す。
※正確には単語より細かいサブワードに分割する
8
質問はslackチャットで随時受け付けております
BERTでは自然文を分割した後、ID配列に変換し入力とする。
14. 2.B 自己注意機構
以前から、自己注意はLSTMの補助等で活用されて
いたが、Attention Is All You Need(2017)で提案さ
れたTransformerでモデルの核として利用されて以
来画像処理等でも広く使用されるようなった。
入力
(𝑥1
𝑡
, 𝑥2
𝑡
, … , 𝑥𝑁
𝑡
) ∈ ℝ𝑑
線形層 𝑊𝑄 線形層 𝑊𝐾
線形層 𝑊𝑉
クエリ
𝑄 ∈ ℝ𝑁×𝑑𝑘
キー
K ∈ ℝ𝑁×𝑑𝑘
バリュー
V ∈ ℝ𝑁×𝑑
転置
行列積
スケーリング+
ソフトマックス
注意スコア
𝑆 ∈ ℝ𝑁×𝑁 行列積
出力
(𝑥1
𝑡+1
, 𝑥2
𝑡+1
, … , 𝑥𝑁
𝑡+1
) ∈ ℝ𝑑
自己注意
自己注意を数式で表すと
𝑑𝑘 : Query, Keyのベクトル次元数
𝑑𝑘 : 次元数𝑑𝑘が大きいと内積値𝑄𝐾𝑇
も大きくなりやすい
次元数の影響を調節するスケーリング因子
Self-Attention Mechanism
MH自己注意
残差接続
層正規化
線形層
残差接続
層正規化
14
ソフトマックスは値を0~1の範囲、合計1に正規化する関数
質問はslackチャットで随時受け付けております
自己注意(Self-Attention)とは
入力ベクトルを、文脈を加味したベクトルに変換する機構
15. 2.B 自己注意機構
晴
[CLS]
本
##日
[SEP]
は
晴
##天
なり
。
[PAD]
クエリ(一部) キー 注意スコア
1.2
1.3
-0.5
1.2
-1.2
3.0
2.5
1.1
0.5
-∞
0.07
0.08
0.01
0.07
0.00
0.42
0.25
0.07
0.03
0.00
[PAD]とのスコアは-∞で置き換える。
(この時に注意マスクが使用される)
⇨ソフトマックスを通した際に値が
限りなく0に近くなる。
スケーリング
+ソフトマックス
[CLS]
本
##日
[SEP]
は
晴
##天
なり
。
[PAD]
バリュー
New 晴
加重和
クエリ
[CLS]
本
##日
[SEP]
は
晴
##天
なり
。
[PAD]
わかりやすさのた
め、一旦クエリの
うち1ベクトルの
みで考える。
注意スコアをもとにバ
リューの加重和を取る。
⇨文脈を加味した埋め込み
を得ることができる。
New [CLS]
New 本
New ##日
New [SEP]
New は
New 晴
New ##天
New なり
New 。
New [PAD]
文脈を加味した
最終出力
全てのクエリで同じ処
理をすることで、最終
出力を得る。
Self-Attention Mechanism
内積値
MH自己注意
残差接続
層正規化
線形層
残差接続
層正規化
15
質問はslackチャットで随時受け付けております
各キーと
内積を取る
どのように文脈を加味したベクトルを得ているのか図解的に説明していく。
16. 2.B マルチヘッド自己注意
Multi-Head Self-Attention
式で表すと以下のようになる。
𝑊
𝑖
𝑄
, 𝑊𝑖
𝐾
, 𝑊𝑖
𝑉
: 𝑖番目の頭の次元圧縮用の線形層の重み
𝑊𝑂
: 結合の境目を隠すための線形層の重み
MH自己注意
残差接続
層正規化
線形層
残差接続
層正規化
線形層を用いて、入力𝑁 × 𝑑を𝑁 ×
𝒅
𝒉
次元に圧縮。
ここでℎは𝑑の約数。
ℎ個の注意ヘッドを用いることで出力h × 𝑁 ×
𝒅
𝒉
を得
た後、結合し𝑁 × 𝑑とする。
結合位置を隠すため線形層に通し最終出力を得る。
入力
(𝑥1
𝑡
, 𝑥2
𝑡
, … , 𝑥𝑁
𝑡
) ∈ ℝ𝑑
線形層 𝑊
1
𝑄
線形層 𝑊1
𝐾
線形層 𝑊1
𝑉
クエリ
𝑄1 ∈ ℝ
𝑁×
𝒅
𝒉
(𝑥1,1
𝑡+1
, 𝑥1,2
𝑡+1
, … , 𝑥1,𝑁
𝑡+1
) ∈ ℝ
𝒅
𝒉
自己注意
キー
K1 ∈ ℝ
𝑁×
𝒅
𝒉
バリュー
𝑉1 ∈ ℝ𝑁×
𝒅
𝒉
線形層 𝑊
ℎ
𝑄
線形層 𝑊ℎ
𝐾
線形層 𝑊ℎ
𝑉
クエリ
𝑄ℎ ∈ ℝ
𝑁×
𝒅
𝒉
(𝑥ℎ,1
𝑡+1
, 𝑥ℎ,2
𝑡+1
, … , 𝑥ℎ,𝑁
𝑡+1
) ∈ ℝ
𝒅
𝒉
自己注意
キー
Kℎ ∈ ℝ
𝑁×
𝒅
𝒉
バリュー
𝑉ℎ ∈ ℝ𝑁×
𝒅
𝒉
…
結合
線形層 𝑊𝑂
出力
(𝑥1
𝑡+1
, 𝑥2
𝑡+1
, … , 𝑥𝑁
𝑡+1
) ∈ ℝ𝑑
注意ヘッド 注意ヘッド
16
質問はslackチャットで随時受け付けております
マルチヘッド自己注意とは
複数の自己注意を並列で行うことで、単一の場合
より多くの文脈関係を扱うことができるようにな
る手法。
17. 2.C 残差接続
Residual Connection
入力
(𝑥1
𝑡
, 𝑥2
𝑡
, … , 𝑥𝑁
𝑡
) ∈ ℝ𝑑
自己注意 or 線形層
(𝑥1
𝑡+1
, 𝑥2
𝑡+1
, … , 𝑥𝑁
𝑡+1
) ∈ ℝ𝑑
和
(𝑥1
𝑡
+ 𝑥1
𝑡+1
, 𝑥2
𝑡
+ 𝑥2
𝑡+1
, … , 𝑥𝑁
𝑡
+ 𝑥𝑁
𝑡+1
) ∈ ℝ𝑑
残差接続
Deep Residual Learning for Image Recognition(2015)で提案され
た。
何かしらのネットワーク(今回の場合は自己注意か線形層)の入力
𝑥𝑡
と出力 𝑥𝑡+1
の和 𝑥𝑡
+ 𝑥𝑡+1
を最終出力とする。
この場合、モデルは入力との差分𝑥𝑡+1を学習すれば良いため全体の
ネットワークが深くなっても学習が安定する。
やや詳しく説明するとニューラルネットは層が深くなればなるほど、
誤差逆伝播の際に勾配が消失しやすくなることが知られている。
残差接続はこの勾配消失を防ぐ効果を持っており、結果として深い
ネットワークの学習の安定に繋がる。
MH自己注意
残差接続
層正規化
線形層
残差接続
層正規化
17
質問はslackチャットで随時受け付けております
残差接続とは
深い(つまり多層の)ネットワークを安定して学習するためのテクニック
18. 2.D 層正規化
Layer Normalization
Layer Normalization(2016)で提案された。
1次元に結合した残差接続後の出力 : 𝑎𝑡 = 𝑐𝑜𝑛𝑐𝑎𝑡 𝑥1
𝑡
, 𝑥2
𝑡
, … , 𝑥𝑁
𝑡
, 𝑎𝑡 ∈ ℝ𝑁𝑑
平均 : 分散 :
平均と分散を用いて、出力を平均0、分散1に正規化する。
⨀ : 要素積
𝐠, 𝐛 ∈ ℝ𝑁𝑑
: 学習可能なベクトル
(𝑥1
𝑡′
, 𝑥2
𝑡′
, … , 𝑥𝑁
𝑡′
) = decompose(ℎ𝑡)
MH自己注意
残差接続
層正規化
線形層
残差接続
層正規化
ℎ𝑡 =
𝐠
𝜎𝑡
⨀ 𝑎𝑡 − 𝜇𝑡 + 𝐛
18
質問はslackチャットで随時受け付けております
層正規化とは
ネットワーク出力の分布変動を抑制することで、学習を安定化&高速化できる手法。
20. 3.A マスク言語モデリング
Masked Language Modeling
[CLS]
一定の確率で単語を[MASK]に置き換えて単語を当てるタスク。
Wikipediaなどの大規模コーパスで事前学習を行う。
語 ##日 は [MASK] ##天 なり 。 [SEP]
BERT
線形層
0.4 晴
0.2 雨
0.2 曇
…
ソフトマックス
0.5 本
0.2 当
0.1 休
…
全体の15%の単語が対象となる。
そのうち、
80%を[MASK]トークン
10%を別のトークン
10%を同じトークン
に置き換える。
BERTは対象の単語が何であったか
を当てる必要がある。
置き換え マスク 置き換えしない
0.5 です
0.1 なり
0.1 である
…
20
質問はslackチャットで随時受け付けております
29. サブワード分割に関して
29
質問はSlack#bert_workshop2022チャンネルで随時受け付けております
本日は晴天なり。
[本, ##日, は, 晴, ##天, なり, 。]
入力文章
単語分割
トークン
※##は1つ前のサブワードと結合して
1つの単語を意味することを示す。
※正確には単語より細かいサブワードに分割する
Q. サブワード分割の前にMeCab等で単語分割をおこなっているのでしょうか?
A. はい。MeCabなどの形態素解析器で単語分割をおこなった後、BPE(バイトペアエンコーディング)な
どの手法を用いてサブワードに分割しています。
ちなみに、サブワードレベルへの分割を行うと、全体の語彙数を大幅に圧縮することができます。
サブワードの細かさは調節可能ですが、事前学習を行う前に決めておく必要があります。
分割を細かくすると全体の語彙数をより圧縮できますが、逆に分割後のトークン列が長くなります。
30. 各注意ヘッドの出力の意味
30
質問はSlack#bert_workshop2022チャンネルで随時受け付けております
入力
(𝑥1
𝑡
, 𝑥2
𝑡
, … , 𝑥𝑁
𝑡
) ∈ ℝ𝑑
線形層 𝑊
1
𝑄
線形層 𝑊1
𝐾
線形層 𝑊1
𝑉
クエリ
𝑄1 ∈ ℝ𝑁×
𝒅
𝒉
(𝑥1,1
𝑡+1
, 𝑥1,2
𝑡+1
, … , 𝑥1,𝑁
𝑡+1
) ∈ ℝ
𝒅
𝒉
自己注意
キー
K1 ∈ ℝ𝑁×
𝒅
𝒉
バリュー
𝑉1 ∈ ℝ𝑁×
𝒅
𝒉
線形層 𝑊
ℎ
𝑄
線形層 𝑊ℎ
𝐾
線形層 𝑊ℎ
𝑉
クエリ
𝑄ℎ ∈ ℝ𝑁×
𝒅
𝒉
(𝑥ℎ,1
𝑡+1
, 𝑥ℎ,2
𝑡+1
, … , 𝑥ℎ,𝑁
𝑡+1
) ∈ ℝ
𝒅
𝒉
自己注意
キー
Kℎ ∈ ℝ𝑁×
𝒅
𝒉
バリュー
𝑉ℎ ∈ ℝ𝑁×
𝒅
𝒉
…
結合
線形層 𝑊𝑂
出力
(𝑥1
𝑡+1
, 𝑥2
𝑡+1
, … , 𝑥𝑁
𝑡+1
) ∈ ℝ𝑑
注意ヘッド 注意ヘッド
Q. 注意ヘッドの出力は何かを意味しているも
のなのでしょうか?
A. 注意ヘッドの出力は、各注意ヘッドで捉え
た文脈を考慮した単語の意味を表していると
考えられます。また、それぞれの注意ヘッド
は別々のパラメータを持っているため、文章
のさまざまな側面から捉えた意味を表してく
れていると考えられます。
31. 次文予測(Next Sentence Prediction)とは
31
質問はSlack#bert_workshop2022チャンネルで随時受け付けております
[CLS]吾輩は猫である。名前はまだ無い。[SEP]どこで生れたかとんと見当がつかぬ。[SEP]
Q. 次文予測とはなんでしょうか。なぜ役に立たないと言われているのでしょうか。
A. [SEP]トークンで連結された文章ペアが流れとして正しいかどうかを判定する分類タスク。
本タスクによりモデルが長期的な依存関係を学習することが期待される。
50%の確率で次の文章を大規模コーパスからサンプリングした文章に置き換えてデータセットを作成する。
[CLS]親譲りの無鉄砲で小供の時から損ばかりしている。[SEP]小学校に居る時分学校の二階から飛び降りて …[SEP]
正例
[CLS]吾輩は猫である。名前はまだ無い。[SEP]小学校に居る時分学校の二階から飛び降りて …[SEP]
[CLS]親譲りの無鉄砲で小供の時から損ばかりしている。[SEP]どこで生れたかとんと見当がつかぬ。[SEP]
負例
RoBERTa: A Robustly Optimized BERT Pretraining Approach(2019)
であまり効果がないことが指摘された。
次文予測を並列して用いた場合、マスク言語モデリングでは50%の
確率でしか文章全体を参照できないデメリットが存在する。次文予
測タスクが簡単すぎるため、このデメリットの方が目立ってしまい
効果が低いと思われる。
40. XLNetとの違い
40
質問はSlack#bert_workshop2022チャンネルで随時受け付けております
XLNet: Generalized Autoregressive Pretraining for Language Understanding(2019)で提案されたモデル。
BERTにおける[MASK]のデメリットを克服しているが、計算コストがBERTより重い。
New, York, is, a, city といった入力を考える
• BERTのマスク言語モデリングの場合
[MASK]された単語を予測する。
New, York, [MASK], a, city ⇦[MASK]という通常は使用されない単語が使用されている。
[MASK], [MASK], is, a, city ⇦複数単語マスクされた場合2つの単語の間の予測を活用できない。
• 通常の言語モデリングの場合
現在までの単語列から次の単語を予測する。
New, York, ? ⇦後半に出てくる単語の情報が使用できない。
• XLNetのモデリングの場合
語順を入れ替えて言語モデリングを行う。(各単語は元の位置を保存している)
is, New, city, a, ?
以上をすべての順列で行う。後半に出てくる単語を使用しつつ他の予測結果も使用できる。
Editor's Notes 理解できてなくてもデモ自体は動かせますよ。 次元数を追記する。実例。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。 理解できてなくてもデモ自体は動かせますよ。