35
Differentiable Neural Computers 森森 森森

Differentiable neural conputers

Embed Size (px)

Citation preview

Page 1: Differentiable neural conputers

Differentiable Neural Computers

森山 直人

Page 2: Differentiable neural conputers

自己紹介

• 森山 直人(もりやま なおと)

• もともと中国国籍 ⇒ 帰化 (国籍変更 )して日本人に

• 趣味で pythonを始める(仕事はエンジニアではない)

• 勢いでディープラーニング始める

• 機械学習は最初からディープラーニングに入ったため、統計的手法や確率論が弱い

Page 3: Differentiable neural conputers

おことわり

• すべて個人の見解による内容であり、所属会社、団体の公式見解ではありません

• 概念理解を優先しているため、一部厳密の定義は割愛しています

• 英語翻訳が不自然な箇所がありますが、ご容赦くださいませ

Page 4: Differentiable neural conputers

今日話すこと•昨年 DeepMind社( Google)より、 Differentiable Neural

Computersと題する記事の本論文である Hybrid computing using a neural network with dynamic external memoryの概念を紹介します

※以降上記技術を統一してDNCと表記します

•ただし、同論文はすでにニューラルネットワークに対する一定の理解(基礎、応用、課題)を有する前提で書かれており・・・

•そこで、ニューラルネットワークの①基礎②課題を踏まえた上で、③DNCの概要と革新性を紹介致します

Page 5: Differentiable neural conputers

アジェンダ•ニューラルネットワークの基本と問題点•リカレントニューラルネットワークの基本と問題点• DNCの概念• Neural Turing Machineとの関係• DNCの学習の流れ• DNCまとめ•今後の活用展望

※本資料はあくまで DNCの概念共有であり、厳密な定義・計算は論文を参照下さい

Page 6: Differentiable neural conputers

ニューラルネットワークのおさらい

入力層

中間層

出力層

中間層(隠れ層)をもつ全結合の有向グラフ

■強み• 単調な非線形表現を積み重なることで、複雑な非線形表現(合成関数)を獲得

• パターン認識問題が得意

■弱み• 現在のデータだけでなく、過去の情報が必要な問題は苦手

• 初期に学習された情報は忘れてしまう

Page 7: Differentiable neural conputers

変数バインディング問題

• 通常のニューラルネットワーク及びその応用( CNN等)に共通して、変数バインディング問題が存在します

• ニューラルネットワークの学習は、あくまで巨大は合成関数に含まれるパラメータのチューニングであり、学習で用いるデータは物理的に記録しないし、活用することもしない

この性質を一部では変数バインディングしないと呼ばれる(公用語ではなく、いろんな呼び方があるようです)

Page 8: Differentiable neural conputers

RNN(LSTM)のおさらい

入力層

中間層

出力層

過去のデータが必要な問題を解くために、過去のデータも伝搬する仕組みを作る

■理想• 過去の入力すべてに現在の入力を加えたネットワークを形成

■現実• LSTMの実装で、内部に過去の入力の状態(変数ではない)を保存(メモリセル)

• 逆伝搬のコストが過剰に増えるため、実質数ステップ分の学習しかできない

Page 9: Differentiable neural conputers

RNN(LSTM)の限界• RNN(LSTM)の弱点は計算量と時間のみでなく、記憶を司るメモリセルのデータ構造にも課題がある

• LSTMの学習では、メモリセルの更新は部分的でなく、全体が更新されるため、表現力の幅は限定的⇒変数バインディング問題の根本的解決とは言えない

• そこで求められるのは、①表現力の高いメモリ処理  ー必要に応じて必要な箇所のみを更新、取り出し

②多くの情報を蓄えるメモリ構造  ー大規模なデータを蓄積できるようにする

Page 10: Differentiable neural conputers

DNCの概念• 前述の述べたニューラルネットワーク及び RNN( LSTM)の変数バインディング問題を背景に、ニューラルネットワークに情報を記録する機能を構築

• 同時に、ニューラルネットワークの持つ微分可能なしくみを継続させ、学習が出来るようにさせる

• これの実現により、人間の脳の海馬( CA1,CA3)の挙動に近い情報処理を実現

Page 11: Differentiable neural conputers

※Neural turing machine• DNC以前に、 DeepMind社より外部メモリを活用した

Neural turing machineが提唱されている

• DNCは Neural turing machineの構造を更に進化させたものであり、より高度の処理を可能にした

• 以降、 DNCの構造が直感的に理解しにくい場合、一度Neural turing machineを読んでおくと理解の助けになるかもしれません

Page 12: Differentiable neural conputers

DNCの構造

• ニューラルネットワークをベーズに、外部メモリとそのメモリを処理する「ヘッド」と呼ばれる装置を取り付けた構造

• そのヘッドを訓練するために、操作履歴などの幾つかのリストと計算が含まれる

• なお、 DNCの中心的な処理はメモリの取扱いであり、それ以外は通常の LSTMと大きく変わらない

Page 13: Differentiable neural conputers

DNCの概念

※Hybrid computing using a neural network with dynamic external memory 論文より画像引用

Page 14: Differentiable neural conputers

DNCの概念

※Hybrid computing using a neural network with dynamic external memory 論文より画像引用

コントローラ部分= LSTM( 他のニューラルネットワークでも代用可 )

メモリ操作を行う「ヘッド」 メモリ本体

メモリ操作の履歴を記録するリスト

Page 15: Differentiable neural conputers

DNCの概念

メモリ 操作履歴

①通常の LSTMと同様にデータを入力し、計

②メモリを操作するヘッドに、操作内容を示すパラメータを

発行

③コントローラから来たパラメータに従ってメモリを

操作

④メモリ変更の履歴を記録

ヘッド

コントローラ

コントローラの出力とメモリの出力を合算して、最終出力とする

⑤メモリの内容を読み込み

⑥ コントローラの出力と合算

①〜④:メモリを記録・変更する作業④ 〜⑥:メモリ情報を使って計算する作業

Page 16: Differentiable neural conputers

DNCの概念

• 以上が DNCの基礎的概念ですが、中身の計算はとても複雑

• 通常の LSTMの各種ゲートで用いるパラメータに加え、 DNC機構で更に 30個近くの独自パラメータ・変数を持つ!

• 微分可能な性質を保ちつつ、多種な計算を経て稼働する

Page 17: Differentiable neural conputers

DNCのパラメータ①コントローラから出力されるパラメータ

読み込みキーベクトル 読み込み時にコントローラから出力されるベクトル

読み込み強さ どれだけ読み込ませるか

書き込みキーベクトル 書込み時にコントローラから出力されるベクトル

書き込む強さ どれだけ読み込ませるか

削除ベクトル 各メモリに対する削除度合い

書込みベクトル 各位置のメモリに対する書込みパラメータ

開放ゲート 使われない位置のメモリを開放する

メモリ割り当てゲート 割り当てる量を補完するパラメータ

書込みゲート 不必要な書込みを防ぐためのパラメータ

書込みモード ヘッドの動作を制御するパラメータ

Page 18: Differentiable neural conputers

DNCのパラメータ②その他のパラメータ

メモリ( N * W) t時点におけるメモリ状態

情報保持ベクトル 各メモリ位置に対する不要な開放を防ぐ

メモリ使用率ベクトル 各メモリ位置の使用率

書き込みの重みベクトル どれくらい書き込んで良いかを決める

使用順ベクトル(昇順) 各メモリ位置を最後に使われた順にソートしたリスト

書込み一致度ベクトル 各メモリ位置に対する読み込み時のそれぞれの位置の一致度

読み込み一致度ベクトル 各メモリ位置に対する書込み時のそれぞれの位置の一致度

連続書込み度 メモリ位置 iのあとにメモリ位置 jが書き込まれる度合い

優先順位ベクトル 各メモリ位置の最後に書き込まれた度合い。(よく使われるメモリ位置の優先順位を決めるために使う)

Page 19: Differentiable neural conputers

DNCのパラメータ③その他のパラメータ

順伝搬重みベクトル 順伝搬にの重みベクトル(開放ゲートとは異なります!)

逆伝搬重みベクトル 逆伝搬時の重みベクトル

書込み重みベクトル メモリ書込みに対する重み

読み込み重みベクトル メモリ読み込みに対する重み

読み込みベクトル 様々な処理を経て、最終的にメモリから読み取られる値

Page 20: Differentiable neural conputers

メモリとヘッドのイメージ

2 1 2 7 4 020

4 0 0 2 1 311

2 4 4 1 0 022

3 3 0 0 0 054

・・・

0.2

0.3

0.1

0.1

・・・

ヘッド メモリ

②メモリ位置 N

①各メモリのサイズ W

③時刻 tにおける各メモリの重み

N*Wの行列

それぞれの行を今後メモリ位置と呼

びます。

Page 21: Differentiable neural conputers

ヘッドによるメモリの読み込み

2 1 2 7 4 020

4 0 0 2 1 311

2 4 4 1 0 022

3 3 0 0 0 054

・・・

0.2

0.3

0.1

0.3

・・・

ヘッド メモリ

位置 N

ベクトルサイズ W

重み

• コントローラが使う情報をメモリから算出する

• 時刻 tにおける重みを各メモリ掛け合わせて、を算出

※r, iはヘッドの IDを示す。ヘッドの数は任意で 指定できる

Page 22: Differentiable neural conputers

ヘッドによるメモリの書き込み

メモリに対する書込みは各位置のメモリに対して、削除追加の2ステップで計算される

2 1 2 7 4 020

4 0 0 2 1 311

2 4 4 1 0 022

3 3 0 0 0 054

・・・

0.2

0.3

0.1

0.3

・・・

ヘッド メモリ

位置 N

ベクトルサイズ W

重み

Page 23: Differentiable neural conputers

ヘッドの重み調整

• ヘッドによるメモリの操作は前述のシンプルな流れ

• 実際の DNCの計算では、コントローラから発行した情報を元に、メモリ内の情報を修正し、最終的にメモリから情報をアウトプットする必要があります。これをMemory addressingといいます

• 以降、Memory addressingの一連の計算を経て、最終的にメモリから数値が読み出されるまでの計算を記します

Page 24: Differentiable neural conputers

Memory addressingMemory addressingは3つの処理によって構成される

① Contents base addressingコントローラから受け取ったキーとメモリの内の各位置の情報を照合し、メモリ位置の確率分布を生成

② Dynamic memory allocationメモリ内の情報を修正しながら、ヘッドの重みを調整

③ Temporal memory linkageメモリに対する操作履歴をすべて記憶させることで、時系列データや複雑なデータ構造を学習可能に

Page 25: Differentiable neural conputers

Contents base addressingコントローラから与えられたキーベクトル kとメモリ内の各ベクトルのコサイン類似度を計算し、確率分布を生成する( softmaxの計算)

※この処理は以降幾つかの場面で使われる

Page 26: Differentiable neural conputers

Dynamic memory allocation①メモリ内の各位置の情報を開放したり、書き込んだりする機能

• 各メモリ位置の使用率を記録する使用率ベクトル• 各メモリ位置を開放するための解放ゲート• メモリの情報が消されないように保護する保持ベクトル

𝝍𝑡=∏𝑖=1

𝑅

(1− 𝒇 𝑡𝑖𝒘 𝑡− 1

𝑟 ,𝑖 ¿)¿

𝒖𝑡=(𝒖𝑡 −1+𝒘 𝑡 −1𝑊 −𝒖𝑡 −1∘𝒘 𝑡 −1

𝑊 )∘𝜓𝑡

:解放ゲートと読み込み重みベクトルから保持ベクトルを計算

:直前の使用率ベクトルと書込みベクトルと保持ベクトルから、現在の使用率ベクトルを計算

Page 27: Differentiable neural conputers

Dynamic memory allocation②• を昇順にソートした解放リスト(数字が高いほど最近使用されたことを示す)

• を元に、各メモリへの書込み重みを算出

𝒂𝑡 [𝜙𝑡 [ 𝑗 ]]=(1−𝒖𝑡 [𝜙 𝑡 [ 𝑗 ] ])∏𝑖=1

𝑗− 1

𝒖𝑡 [𝜙 𝑡 [ 𝑖 ] ]

Page 28: Differentiable neural conputers

Dynamic memory allocation③• 直前のメモリとコントローラのパラメータに対して、

Contents addressingを通じて書込み確率分布を計算

)• そこから、メモリ割り当てゲート、書込みゲートを通じて書込み重みベクトルを算出

Page 29: Differentiable neural conputers

Temporal memory linkage①• Dynamic memory allocationではメモリ割り当てを行う際、変更を時系列を記録しないが、自然言語等では時系列データの処理が必要

• そこで、メモリ操作の時系列を定義する。(メモリ位置 iの直後にメモリ位置 jが書き込まれる率)

• また、同時に各メモリ位置が最後に書き込まれる率を定義

𝑷 𝑡=¿𝐿𝑡[ 𝑖 , 𝑗 ]=(1−𝒘 𝑡

𝑊 [𝑖 ]−𝑤𝑡𝑊 [ 𝑗 ] )𝐿𝑡−1 [ 𝑖 , 𝑗 ]+𝒘 𝑡

𝑊 [ 𝑖 , 𝑗 ]𝑝𝑡−1 [ 𝑗 ]

Page 30: Differentiable neural conputers

Temporal memory linkage②• はを転置することで、メモリ操作履歴の逆推移が得られる。• この性質を利用して、順伝搬の重みと逆伝搬の重みを算出

• また、メモリの読み込み重みは Contents addressingを通じて計算

𝑓 𝑡𝑖=𝐿𝑡𝒘 𝑡 −1𝑟 ,𝑖 𝑏𝑡

𝑖=𝐿𝑡⊤𝒘 𝑡 −1

𝑟 ,𝑖

)

Page 31: Differentiable neural conputers

ヘッドの動作モード

• ヘッドの動作を決めるは 3つのモードを有します

: ヘッドが逆向きに移動(逆伝搬の計算) : 読み込みキーベクトルを利用して重みを計算 :を使わず、メモリ内の情報を利用して計算

Page 32: Differentiable neural conputers

読み込みベクトルの計算

• 以上の計算を元に、メモリから読み出される値は以下

• 最後に、コントローラから出力された値とメモリの出力を計算し DNCの最終出力は以下となる

;...;

Page 33: Differentiable neural conputers

メモリ内の計算グラフ

𝒄 𝑡𝑊

𝒌𝑡𝑟 ,𝑅

𝛽𝑡𝑅

𝒌𝑡𝑊

𝛽𝑡𝑊

𝒆𝑡

𝒗 𝑡

𝑓 𝑡𝑅

𝑔𝑡𝑎

𝑔𝑡𝑊

𝜋 𝑡𝑅

𝑀 𝑡− 1

𝑀 𝑡

𝒘 𝑡 −1𝑊𝒘 𝑡 −1

𝑅

𝜓 𝑡

𝒖𝑡−1

𝝓𝑡𝒂𝑡

𝒄 𝑡𝑅

𝒇 𝑡 ,𝒃𝑡

𝑷 𝑡−1 𝐿𝑡−1

𝒘 𝑡𝑊 𝐿𝑡𝑷 𝑡

𝒖𝑡

𝑟 𝑡

※線の交差は すべて非接続

コント

ローラが

発行する

各パラメータ

直前の計算で得られた各パラメータ

𝝂𝑡𝑊 𝑟

𝑦 𝑡

メモリ内部処理

Page 34: Differentiable neural conputers

DNCまとめ

• 微分可能な性質を維持しながらも、メモリ操作関連の処理はニューラルネットワークと大きくかけ離れており、直感的な理解がしにくい

• 一方、メモリ構造により冒頭の変数バインディング問題はほぼ解消されるので、ニューラルネットワークの能力を大きく伸ばせると考えられる

Page 35: Differentiable neural conputers

今後の活用展望

• 論文内では、 DNCを活用した自然言語処理、データ構造分析、強化学習と、あらゆる領域で外部メモリが活用出来ることが紹介されている

• 今後、外部メモリ自体のデザインやその処理方法をデザインしていくことで、更に多種なタスクをニューラルネットワークを用いて、高精度で処理できることが期待できる