SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
ML LT–第1回−
〜深層学習の覇権を握るTransformer〜
・⾃⼰紹介
ML 10⽉期 堀尾洋輔
• 趣味
• ⾳楽(主にR&B, Soul, mellow系J-hiphop)
• コーヒー
• テニス etc...
• 勉強している分野
• ⾃然⾔語処理
• たまーーーーーーにベイズ機械学習
1
Transformer…
名前は知っているけど中身は…
2
Transformer
2017年に発表された論文
”Attention is All You Need”にて発表されたモデル
• 当時最先端の技術であったAttention構造を採用
した深層学習モデル
• Attentionの他にもさまざまな工夫がてんこ盛り
の一見シンプルに見えてかなり奥が深いモデル
3
Transformerのモデルアーキテクチャ
4
図1) Transformerのアーキテクチャ
[1]より引用
<流れ>
1. テキストデータのEmbeddingを行う
2. Encoderスタックに通す
3. 出力をEncoderスタックの次の層と
Decoderスタックに渡す
4. Encoderスタックの出力と推論対象を
EmbeddingしたものをDecoderスタック
に通す
5. これをN回(原論文ではN=6)繰り返す
6. 線形変換を行った後、Softmax関数に
よる確率の算出を行う
・Transformerのここがすごい!!
• Attention機構の導入で系列長が大きいデータにも対応
できるようになり、実行時間の削減も実現した
• EncoderスタックとDecoderスタックが分かれており、
さまざまなタスクに特化した派生系が生まれやすい
• なにより、左右対称なモデルってだけでも美しいのに
モデル内の各層における入力と出力がずっと同じ!!
5
6
Transformerを支える5つの構成要素
1. Positional Encoding
2. Multi Head Attention
3. Residual Connection
4. Feed Forward Layer
5. Layer Normalization
今回はマスクやSource Traget Attentionといった学習時の工夫は省きます。すんません、、、。
7
Positional Encoding
<モチベーション>
文章における単語の意味を理解する上で重要な
文章中における位置情報を入力に紐づけたい!
単語の位置情報をベクトル化して付与すれば良いのでは?
8
Positional Encoding
周波数が変動するsin関数とcos関数を用いてベクトル化を行う
PE !"#,%& = sin pos/10000 ⁄
%& (!"#$%
PE !"#,%&)* = cos pos/10000 ⁄
%& (!"#$%
pos: Embeddingの次元数
次元数が偶数の時 → sin関数
次元数が奇数の時 → cos関数
9
Positional Encoding
• なぜsin, cos関数を用いるのか?
モデルの学習時に計算が容易だと仮定しているから、、?
PE !"#$%,'( = sin (pos + k) 𝑢)
sin (pos + k) 𝑢! =
sin posu! cos ku! + cos posu" 𝑠𝑖𝑛 ku" =
PE #$%,'" cos 𝑘𝑢! + PE #$%,'"() sin(𝑘𝑢!)
K地点後
u4 =
5
56666 ⁄
"# $%&$'(
とすると
PE 789,;4 = sin pos𝑢<
PE 789,;4=5 = cos posu4
原論文では、k地点後もsinとcosに関する一次関数であるためと書かれている
(おそらくL2ノルムの大きさがモデルの次元を固定すると一意になるため、、?)
10
Transformerを支える5つの構成要素
1. Positional Encoding
2. Multi Head Attention
3. Residual Connection
4. Feed Forward Layer
5. Layer Normalization
11
1. Multi Head Attention
そもそもAttentionって?
あるトークンにおいて、入力をK, Q, Vの三つに分割し重みをつけることで
他のトークンとの関係を明らかにする手法
Attention Q, K, V = Softmax
QK3
𝑑4
𝑉
Q = W!x", K = W#x", V = W$x", x" : 入力ベクトル, d%: 次元数
また、Transformerで採用されているQ,K,Vに分けるAttentionを
”Scaled Dot-Product Attention”と呼ぶ
12
数式じゃなくて
図を用意しろ!!
=
13
Scaled Dot-Product Attention
• Q, K, Vの準備
単語の数がn個の一つの文章Aを入力とする時を考える
𝕎>
𝕩
𝕎?𝕩
𝕎
@ 𝕩
Q
K
V
1×d*$+,-
n
×
1
n
×
𝑑!"#$%
𝕩
𝐸𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔
𝑆𝑒𝑛𝑡𝑒𝑛𝑐𝑒A
n
×
𝑑M8NOP
n
×
𝑑M8NOP
n
×
𝑑M8NOP
図2 )Scaled Dot-Product Attentionの概要1
14
Scaled Dot-Product Attention
• Outputの算出
Q, K, Vの重み付き和を考える
Σ
output
𝕢5
𝕜' 𝕧'
𝕜5
𝕜6
𝕜7
𝕜8
𝕜9
𝕧5
𝕧6
𝕧7
𝕧9
𝕧8
Q V
K
𝕠5
図3 )Scaled Dot-Product Attentionの概要2
15
詳細な数式がないと
納得しない人のために…
16
Scaled Dot-Product Attention
• 𝑆 = 𝑆𝑜𝑓𝑡𝑚𝑎𝑥
:;!
<"#$%&
∈ ℝQ×Q
, Q, K ∈ ℝQ×R)*+,-
𝕢*
𝕢%
𝕢+
⋮
𝕢,
𝕜*
-
, 𝕜%
-
, 𝕜+
-
, ⋯ , 𝕜.
-
𝐾!
𝑠55 𝑠5' ⋯ 𝑠5=
𝑠'5 𝑠'' ⋯ 𝑠'=
𝑠75 𝑠7' ⋯ 𝑠7=
⋮ ⋮ ⋮ ⋮
𝑠=5 𝑠=' ⋯ 𝑠==
𝑄 𝑆
𝕢(, 𝕜) ∈ ℝ5×<"#$%&, 𝑠)? = 𝑆𝑜𝑓𝑡𝑚𝑎𝑥 P
𝕢(𝕜?
@
𝑑AB<CD
17
𝑆 ∈ ℝ"×"
Scaled Dot-Product Attention
• 𝑜𝑢𝑡𝑝𝑢𝑡 = 𝑆𝑉 ∈ ℝ=×<"#$%&
s55 s5; ⋯ s5S
s;5 s;; ⋯ s;S
sT5 sT; ⋯ sTS
⋮ ⋮ ⋮ ⋮
sS5 sS; ⋯ sSS
𝕧$
𝕧%
𝕧&
⋮
𝕧'
𝑉 ∈ ℝQ×R)*+,-
𝕠$
𝕠%
𝕠&
⋮
𝕠'
𝑜𝑢𝑡𝑝𝑢𝑡 ∈ ℝQ×R)*+,-
𝕠) = R
?
𝑠)? 𝕧) ∈ ℝ5×<"#$%&
18
Multi Head Attention
19
Multi Head Attention
Scaled Dot-Product Attentionは
nの値が大きくなるにつれて計算コストが高くなるという課題があった
行列を何個かに分けて並列計算したらいいじゃん!!
=
20
Multi Head Attention
• Q, K, Vをヘッド数(h)に応じて用意する
𝕎<,>
𝕩
𝕎<,?𝕩
𝕎
<,@ 𝕩
Q
K
V
1×d*$+,-
n
×
1
n
×
𝑑!"#$%
𝕩
𝐸𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔
𝑆𝑒𝑛𝑡𝑒𝑛𝑐𝑒A
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
n× ⁄
𝑑*$+,- ℎ
図4 )Multi Head Attentionの概要1
21
Multi Head Attention
lLinear lLinear lLinear
lLinear
lConcat
Scaled Dot-Product Attention
Q K V
図5 )Multi Head Attentionの概要2
22
Multi Head Attentionのメリット
• ヘッドを分割することによりそれぞれのヘッドで
各単語の異なる特性を見ることができるようになった
(表現力の向上)
• 並列処理により、学習時間の大幅な減少を達成
23
Transformerを支える5つの構成要素
1. Positional Encoding
2. Multi Head Attention
3. Feed Forward Layer
4. Residual Connection
5. Layer Normalization
24
Feed Forward Layer
• 一般的な順伝播型NNとほぼ同じ計算が行われている層
相違点としては、一般に中間層の次元のサイズが小さくなるのに対
して、Transformerは反対にサイズが4倍になるように設計されている
Attention後の出力を一意のものにすることで潜在的な依存関係も捉
え、表現力の向上につながるという役割がある
原論文では活性化関数としてReLUを用いている
𝐹𝐹𝑁 𝑥 = 𝕎'ℎ)′ + 𝑏'
ℎ)
E
= 𝑅𝑒𝐿𝑈 𝕎5ℎ) + 𝑏5
[𝑊: 各種重み, ℎ": 𝑒𝑛𝑐𝑜𝑑𝑒𝑟の𝑖番目の隠れベクトル, 𝑏: バイアス]
ReLU
図6) TransformerにおけるFFN
25
Transformerを支える5つの構成要素
1. Positional Encoding
2. Multi Head Attention
3. Feed Forward Layer
4. Residual Connection
5. Layer Normalization
26
Residual Connection(残差接続)
ResNetで提案された勾配消失による情報の欠落をふせぐための手法
図7 )TransformerのEncoding部分([1]より引用)
残
差
接
続
TransformerのEncoding部分では
Attention機構の後とFFNの後に残差接続が
行われている(右図参照)
• Attentionの出力
𝑜𝑢𝑡𝑝𝑢𝑡STTCUV("U = Attention 𝐼𝑛𝑝𝑢𝑡 + Input
• FFNの出力
𝑜𝑢𝑡𝑝𝑢𝑡WWX = 𝐹𝐹𝑁 𝑜𝑢𝑡𝑝𝑢𝑡STTC=T)B= + 𝑜𝑢𝑡𝑝𝑢𝑡STTC=T)B=
27
Transformerを支える5つの構成要素
1. Positional Encoding
2. Multi Head Attention
3. Feed Forward Layer
4. Residual Connection
5. Layer Normalization
28
Layer Normalization
Transformerではバッチ正規化ではなく、
その発展形である層正規化を採用している
[Layer Normalization]
𝑥4
E
= 𝑎4
𝑥4 − 𝑢Y
𝜎Y + 𝜖
+ 𝑏4
𝑘: 各トークンの位置, 𝑎&, 𝑏&: ハイパラ,
𝑢': 𝑥&の平均, 𝜎' : 𝑥&の標準偏差,
𝜖: 分母を保証するハイパラ
[Layer Normalizationの役割]
• 学習の高速化
:入力の偏りが原因となる勾配計算の遅延を
減少させる
• モデルの安定性の担保
:勾配爆発を抑制する
29
Layer Normalization
[Batch NormalizationとLayer Normalizationの違い]
図8) Batch Normalization([6]より引用)
図9) Layer Normalization([6]より引用)
左の二つの図は
• Batch Normalization
• Layer Normalization
それぞれの
正規化する範囲を表している
30
さいごに
深層学習の世界は動きがはげしいもんで
今回話した内容の中でも改変が
かなり加えられていたり、、、
ただその時代の移り変わりに携われると思ったら
テンション上がりますね
参考資料
1. Attention Is All You Need (Vaswaniら, 2017)
2. 自然言語処理の基礎
3. Transformerによる自然言語処理
4. Transformerのデータの流れを追ってみる
5. 作って理解するTransformer/Attention
6. バッチ正規化(Batch Normalization) とその発展型
ご清聴ありがとうございました

Mais conteúdo relacionado

Semelhante a Transformerについて解説!!(Encoder部分)

LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Yuichiro Kobayashi
 
Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02
hideki hasegawa
 

Semelhante a Transformerについて解説!!(Encoder部分) (20)

Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
プログラマのための文書推薦入門
プログラマのための文書推薦入門プログラマのための文書推薦入門
プログラマのための文書推薦入門
 
GPT-2.3_InstructGPT.pdf
GPT-2.3_InstructGPT.pdfGPT-2.3_InstructGPT.pdf
GPT-2.3_InstructGPT.pdf
 
ICASSP2020 論文読み会 資料 上乃聖
ICASSP2020 論文読み会 資料 上乃聖ICASSP2020 論文読み会 資料 上乃聖
ICASSP2020 論文読み会 資料 上乃聖
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
 
Bert(transformer,attention)
Bert(transformer,attention)Bert(transformer,attention)
Bert(transformer,attention)
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
 
Ordered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networksOrdered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networks
 
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02
 
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition 全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
 

Transformerについて解説!!(Encoder部分)