Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NIPS2015読み会 End-To-End Memory Networks
Search
Yuya Unno
January 20, 2016
Technology
0
7
NIPS2015読み会 End-To-End Memory Networks
Yuya Unno
January 20, 2016
Tweet
Share
More Decks by Yuya Unno
See All by Yuya Unno
深層学習で切り拓くパーソナルロボットの未来 @東京大学 先端技術セミナー 工学最前線
unnonouno
0
12
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
23
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
16
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
4
進化するChainer @JSAI2017
unnonouno
0
7
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
3
深層学習フレームワーク Chainerとその進化
unnonouno
0
7
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
17
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
3
Other Decks in Technology
See All in Technology
Deno Queue を使って OGP画像の遅延作成をやってみる
toranoana
1
100
汎用ポリシー言語Rego + OPAと認可・検証事例の紹介 / Introduction Rego & OPA for authorization and validation
mizutani
1
200
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
16
6.7k
知識と実践を紡ぐGenAI / Connecting Knowledge and experience with GenAI
aki_moon
2
190
【リラン】AIの光と闇?失敗しないために知っておきたいAIリスクとその対応 ①政府の動き編
tkhresk
0
140
生成AIと産業向けソフトウェアの自動生成 〜 ハノーバーメッセ2024より〜
kioto
2
450
日本が誇るイタリアのダンスミュージック!? ユーロビートって何??
minorun365
PRO
2
240
QA経験のないエンジニアリング マネージャーがQAのカジュアル面談に出て 苦労していること・気づいたこと / scrum fest niigata 2024
yoshikiiida
2
690
エムスリーQAチーム紹介資料 / Introduction of M3 QA Team
m3_engineering
1
340
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
0
180
開発スピードの維持向上を支える、テスト設計の 漸進的進化への取り組み / Continuous Test Design Development for Speed of Product Development
ropqa
0
190
データベース05: SQL(2/3) 結合質問
trycycle
0
120
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
67
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
The Brand Is Dead. Long Live the Brand.
mthomps
49
31k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
Learning to Love Humans: Emotional Interface Design
aarron
268
39k
A better future with KSS
kneath
231
16k
Statistics for Hackers
jakevdp
790
220k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
4 Signs Your Business is Dying
shpigford
176
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Docker and Python
trallard
35
2.7k
Infographics Made Easy
chrislema
238
18k
Transcript
NIPS2015読み会 End-To-End Memory Networks S. Sukhbaatar, A. Szlam, J. Weston,
R. Fergus Preferred Infrastructure 海野 裕也(@unnonouno) 図はすべて元論文から引用 2016/01/20 NIPS2015読み会@ドワンゴ
Memory networks l 2013年年辺りからFacebookが取り組んでいる テーマ l ⾃自然⽂文で与えられた事実を記憶し、質問に対し て⾃自然に答えるフレームワークを考えている l 今回の話は、全体の仕組みをend-to-endで学習
する 2
これ、1年年前の 論論⽂文だよね 3
4
今⽇日話すわけ l 春にChainerで再実装した時、ちゃんと動かな かった l 年年末に作りなおしたら、ちゃんと動いた(デー タ読むところのバグだった) l トータルで300⾏行行くらい l
Chainer上での対応を交えながら解説 5
対象のタスク:bAbI task l ⼈人が部屋の中を⾏行行動した事実が書かれていて、途中途中 で簡単な質問をされる l 極めて⼈人⼯工的なタスクで、語彙も⾮非常に限られている (177語彙) 6
定式化 l ⼊入⼒力力 l 知識識源: {x 1 , x 2
, … , x n } l 質問: q l それぞれ⾃自然⽂文(任意⻑⾧長の単語列列=整数列列) l 出⼒力力 l 質問への回答: a (単⼀一の単語=整数) l パラメータ l 埋め込みベクトル⾏行行列列: A, B, C (d x V次元) l 回答⽤用⾏行行列列: W (V x d次元) l d: 埋め込みベクトルの次元数、V: 語彙数 7
⼿手法概要 8
⽂文のエンコード l 埋め込みベクトルの和にするだけ l F .sum(model.A(x), axis=1) 9 語彙数 V
次 元 数 n 1 3 2 5 1 x= 単語ID ∑ =
検索索⽤用の「記憶」を作る l ⼊入⼒力力⽂文x i を埋め込みベクトルAで、先の要領領でベクトル m i に直す 10 1
3 2 5 1 x1 = 4 3 1 7 x2 = 1 3 4 8 9 x3 = 呍 呍 呍 m1 m2 m3 m4 ・・・ A
クエリのエンコード l クエリは別の埋め込みBで、同様にエンコードしてuに する 11 B 3 4 1 7
9 q = u =
記憶の重要度度を計算する l 各m i とuの内積を取って、Softmaxにかけて、⽂文の重要 度度をはかり、p i とする(Attention) l p
= F .softmax(F .batch_matmul(m, u)) 12 m1 m2 m3 m4 u p1 p2 p3 p4 pi = softmax(mi Tu)
回答⽤用の「記憶」を作る 各⽂文x i は埋め込みCを使って別のベクトルc i を作る 13 1 3 2
5 1 x1 = 4 3 1 7 x2 = 1 3 4 8 9 x3 = 呍 呍 呍 c1 c2 c3 c4 ・・・ C
回答⽤用の知識識をまとめる l c i をp i で重みづけして線形和を取ってoとする l o =
F .batch_matmul(F .swapaxes(c ,2, 1), p) 14 p1 p2 p3 p4 c1 c2 c3 c4 x ∑ = o
回答を⽣生成する l もとの質問uとoを⾜足して、できたベクトルをWにかけて 答えを得る l loss = F .softmax_cross_entropy(model.W(u +
o), a) 15 o u + W
おさらい l 知識識源x i はAを使ってm i に、Cを使ってciに l 質問qはBを使ってuに l
m i とuの内積とsoftmaxを取って、各知識識に対す る重みp i に l c i をp i で重み付き和を取ってoに l o + uをWにかけて、期待する答えaとの softmax cross entropyをlossとする 16
これって何しているんだろう? 17 類似ベクトルで 検索索している雰囲気 BoWでベク トル化 答え情報が 埋め込まれる? 答えを選択?
多層化 l 先の処理理の出⼒力力を、次の 層の⼊入⼒力力に使う l 何回も使う l 複数の⽂文からしか帰結で きないことを回答でき る?
18
ここから細かい⼯工夫が沢⼭山 19
重みに対する制約 l Adjacent l 上位階層との重みベクトルを共通にする l A k+t = C
k l B = A 1 l これは重みp i の計算のときに、qもxも同じエン コードをすることを⾔言っている l Layer-wise l A 1 = A 2 = … l C 1 = C 2 = … 20 基本、こちらを使う
時間に対する調整(temporal encoding) l 新しい知識識を選んで欲しいので、時刻に対して重みをつ ける l さらっと書いてあるが、これがないと新しい情報が重要 ということがわからないので、根本的に⼤大事な(そして 雑な)⼯工夫 21
時刻に応じたベクトルを⾜足す x 1 = Sam walks into the kitchen x 2 = Sam walks into the bedroom q = Where is Sam?
20種類の異異なる種類の質問への正解率率率 22 ※多層化は3段、Adjacent制約 ※数字は小さいほうがよい ヒントを使った学習なので スコアが良良い
単語の位置に対する調整(position encoding) l 流流⽯石に単なる埋め込みベクトルの総和は気が引ける l ⽂文中の位置に応じて重みをかえる 23 単語ごとの重み 位置に基づいて計算
PEの効果 24
さらに⾊色々・・・ l Linear start (LS) l 学習初期の段階ではsoftmax層を抜いて、学 習を早める l Random noise
(RN) l 学習時に10%の空の記憶をいれる l 正則化の効果がある? 25
最終結果 26 だいぶ良良くなった!
⾔言語モデルによる実験(おまけ?) l ⽂文の代わりに全部⽂文字だと思う(単⼀一の埋め込 みベクトル) l 質問は定数ベクトル l 回答は次の単語 l 感覚的には何⽂文字前の単語の、どういう情報を
使って次を予測するか学習する 27
結果だけ 28
所感 l 事実を覚えて回答する、という記憶・質問・回 答の⼀一連のプロセスをend-to-endにやるという、 ⽅方向性を⽰示したのがポイント l タスク⾃自体は依然としてトイタスクだが、徐々 に現実のタスクに近づけていくと思われる l ヒューリスティックは極めて多く、⼯工夫のしど
ころは多い 29
まとめ l 複数の⽂文からなる事実から、質問に答えるタス クを、end-to-endで学習する⼿手法を提案した l 単語の埋め込み、⽂文のエンコード、各事実に対 するattention、回答の⽣生成までを単⼀一のネット ワークにする l トイタスクだが、平均エラー率率率6%程度度まで達成
した l ヒューリスティックは極めて多い 30