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
15
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
17
深層学習時代の自然言語処理ビジネス @DLLAB 言語・音声ナイト
unnonouno
0
38
ベンチャー企業で言葉を扱うロボットの研究開発をする @東京大学 電子情報学特論I
unnonouno
0
34
PFNにおけるセミナー活動 @NLP2018 言語処理研究者・技術者の育成と未来への連携WS
unnonouno
0
9
進化するChainer @JSAI2017
unnonouno
0
17
予測型戦略を知るための機械学習チュートリアル @BigData Conference 2017 Spring
unnonouno
0
11
深層学習フレームワーク Chainerとその進化
unnonouno
0
16
深層学習による機械とのコミュニケーション @DeNA TechCon 2017
unnonouno
0
24
最先端NLP勉強会 “Learning Language Games through Interaction” @第8回最先端NLP勉強会
unnonouno
0
12
Other Decks in Technology
See All in Technology
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
120
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.3k
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
420
テストを軸にした生き残り術
kworkdev
PRO
0
210
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.1k
Android Audio: Beyond Winning On It
atsushieno
0
850
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
220
KotlinConf 2025_イベントレポート
sony
1
140
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
250
20250913_JAWS_sysad_kobe
takuyay0ne
2
220
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
170
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
250
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Visualization
eitanlees
148
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Designing for humans not robots
tammielis
253
25k
How STYLIGHT went responsive
nonsquared
100
5.8k
Bash Introduction
62gerente
615
210k
Designing Experiences People Love
moore
142
24k
Become a Pro
speakerdeck
PRO
29
5.5k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
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