Upload
naoto-moriyama
View
380
Download
1
Embed Size (px)
Citation preview
Differentiable Neural Computers
森山 直人
自己紹介
• 森山 直人(もりやま なおと)
• もともと中国国籍 ⇒ 帰化 (国籍変更 )して日本人に
• 趣味で pythonを始める(仕事はエンジニアではない)
• 勢いでディープラーニング始める
• 機械学習は最初からディープラーニングに入ったため、統計的手法や確率論が弱い
おことわり
• すべて個人の見解による内容であり、所属会社、団体の公式見解ではありません
• 概念理解を優先しているため、一部厳密の定義は割愛しています
• 英語翻訳が不自然な箇所がありますが、ご容赦くださいませ
今日話すこと•昨年 DeepMind社( Google)より、 Differentiable Neural
Computersと題する記事の本論文である Hybrid computing using a neural network with dynamic external memoryの概念を紹介します
※以降上記技術を統一してDNCと表記します
•ただし、同論文はすでにニューラルネットワークに対する一定の理解(基礎、応用、課題)を有する前提で書かれており・・・
•そこで、ニューラルネットワークの①基礎②課題を踏まえた上で、③DNCの概要と革新性を紹介致します
アジェンダ•ニューラルネットワークの基本と問題点•リカレントニューラルネットワークの基本と問題点• DNCの概念• Neural Turing Machineとの関係• DNCの学習の流れ• DNCまとめ•今後の活用展望
※本資料はあくまで DNCの概念共有であり、厳密な定義・計算は論文を参照下さい
ニューラルネットワークのおさらい
入力層
中間層
出力層
中間層(隠れ層)をもつ全結合の有向グラフ
■強み• 単調な非線形表現を積み重なることで、複雑な非線形表現(合成関数)を獲得
• パターン認識問題が得意
■弱み• 現在のデータだけでなく、過去の情報が必要な問題は苦手
• 初期に学習された情報は忘れてしまう
変数バインディング問題
• 通常のニューラルネットワーク及びその応用( CNN等)に共通して、変数バインディング問題が存在します
• ニューラルネットワークの学習は、あくまで巨大は合成関数に含まれるパラメータのチューニングであり、学習で用いるデータは物理的に記録しないし、活用することもしない
この性質を一部では変数バインディングしないと呼ばれる(公用語ではなく、いろんな呼び方があるようです)
RNN(LSTM)のおさらい
入力層
中間層
出力層
過去のデータが必要な問題を解くために、過去のデータも伝搬する仕組みを作る
■理想• 過去の入力すべてに現在の入力を加えたネットワークを形成
■現実• LSTMの実装で、内部に過去の入力の状態(変数ではない)を保存(メモリセル)
• 逆伝搬のコストが過剰に増えるため、実質数ステップ分の学習しかできない
RNN(LSTM)の限界• RNN(LSTM)の弱点は計算量と時間のみでなく、記憶を司るメモリセルのデータ構造にも課題がある
• LSTMの学習では、メモリセルの更新は部分的でなく、全体が更新されるため、表現力の幅は限定的⇒変数バインディング問題の根本的解決とは言えない
• そこで求められるのは、①表現力の高いメモリ処理 ー必要に応じて必要な箇所のみを更新、取り出し
②多くの情報を蓄えるメモリ構造 ー大規模なデータを蓄積できるようにする
DNCの概念• 前述の述べたニューラルネットワーク及び RNN( LSTM)の変数バインディング問題を背景に、ニューラルネットワークに情報を記録する機能を構築
• 同時に、ニューラルネットワークの持つ微分可能なしくみを継続させ、学習が出来るようにさせる
• これの実現により、人間の脳の海馬( CA1,CA3)の挙動に近い情報処理を実現
※Neural turing machine• DNC以前に、 DeepMind社より外部メモリを活用した
Neural turing machineが提唱されている
• DNCは Neural turing machineの構造を更に進化させたものであり、より高度の処理を可能にした
• 以降、 DNCの構造が直感的に理解しにくい場合、一度Neural turing machineを読んでおくと理解の助けになるかもしれません
DNCの構造
• ニューラルネットワークをベーズに、外部メモリとそのメモリを処理する「ヘッド」と呼ばれる装置を取り付けた構造
• そのヘッドを訓練するために、操作履歴などの幾つかのリストと計算が含まれる
• なお、 DNCの中心的な処理はメモリの取扱いであり、それ以外は通常の LSTMと大きく変わらない
DNCの概念
※Hybrid computing using a neural network with dynamic external memory 論文より画像引用
DNCの概念
※Hybrid computing using a neural network with dynamic external memory 論文より画像引用
コントローラ部分= LSTM( 他のニューラルネットワークでも代用可 )
メモリ操作を行う「ヘッド」 メモリ本体
メモリ操作の履歴を記録するリスト
DNCの概念
メモリ 操作履歴
①通常の LSTMと同様にデータを入力し、計
算
②メモリを操作するヘッドに、操作内容を示すパラメータを
発行
③コントローラから来たパラメータに従ってメモリを
操作
④メモリ変更の履歴を記録
ヘッド
コントローラ
コントローラの出力とメモリの出力を合算して、最終出力とする
⑤メモリの内容を読み込み
⑥ コントローラの出力と合算
①〜④:メモリを記録・変更する作業④ 〜⑥:メモリ情報を使って計算する作業
DNCの概念
• 以上が DNCの基礎的概念ですが、中身の計算はとても複雑
• 通常の LSTMの各種ゲートで用いるパラメータに加え、 DNC機構で更に 30個近くの独自パラメータ・変数を持つ!
• 微分可能な性質を保ちつつ、多種な計算を経て稼働する
DNCのパラメータ①コントローラから出力されるパラメータ
読み込みキーベクトル 読み込み時にコントローラから出力されるベクトル
読み込み強さ どれだけ読み込ませるか
書き込みキーベクトル 書込み時にコントローラから出力されるベクトル
書き込む強さ どれだけ読み込ませるか
削除ベクトル 各メモリに対する削除度合い
書込みベクトル 各位置のメモリに対する書込みパラメータ
開放ゲート 使われない位置のメモリを開放する
メモリ割り当てゲート 割り当てる量を補完するパラメータ
書込みゲート 不必要な書込みを防ぐためのパラメータ
書込みモード ヘッドの動作を制御するパラメータ
DNCのパラメータ②その他のパラメータ
メモリ( N * W) t時点におけるメモリ状態
情報保持ベクトル 各メモリ位置に対する不要な開放を防ぐ
メモリ使用率ベクトル 各メモリ位置の使用率
書き込みの重みベクトル どれくらい書き込んで良いかを決める
使用順ベクトル(昇順) 各メモリ位置を最後に使われた順にソートしたリスト
書込み一致度ベクトル 各メモリ位置に対する読み込み時のそれぞれの位置の一致度
読み込み一致度ベクトル 各メモリ位置に対する書込み時のそれぞれの位置の一致度
連続書込み度 メモリ位置 iのあとにメモリ位置 jが書き込まれる度合い
優先順位ベクトル 各メモリ位置の最後に書き込まれた度合い。(よく使われるメモリ位置の優先順位を決めるために使う)
DNCのパラメータ③その他のパラメータ
順伝搬重みベクトル 順伝搬にの重みベクトル(開放ゲートとは異なります!)
逆伝搬重みベクトル 逆伝搬時の重みベクトル
書込み重みベクトル メモリ書込みに対する重み
読み込み重みベクトル メモリ読み込みに対する重み
読み込みベクトル 様々な処理を経て、最終的にメモリから読み取られる値
メモリとヘッドのイメージ
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の行列
それぞれの行を今後メモリ位置と呼
びます。
ヘッドによるメモリの読み込み
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を示す。ヘッドの数は任意で 指定できる
ヘッドによるメモリの書き込み
メモリに対する書込みは各位置のメモリに対して、削除追加の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
重み
ヘッドの重み調整
• ヘッドによるメモリの操作は前述のシンプルな流れ
• 実際の DNCの計算では、コントローラから発行した情報を元に、メモリ内の情報を修正し、最終的にメモリから情報をアウトプットする必要があります。これをMemory addressingといいます
• 以降、Memory addressingの一連の計算を経て、最終的にメモリから数値が読み出されるまでの計算を記します
Memory addressingMemory addressingは3つの処理によって構成される
① Contents base addressingコントローラから受け取ったキーとメモリの内の各位置の情報を照合し、メモリ位置の確率分布を生成
② Dynamic memory allocationメモリ内の情報を修正しながら、ヘッドの重みを調整
③ Temporal memory linkageメモリに対する操作履歴をすべて記憶させることで、時系列データや複雑なデータ構造を学習可能に
Contents base addressingコントローラから与えられたキーベクトル kとメモリ内の各ベクトルのコサイン類似度を計算し、確率分布を生成する( softmaxの計算)
※この処理は以降幾つかの場面で使われる
Dynamic memory allocation①メモリ内の各位置の情報を開放したり、書き込んだりする機能
• 各メモリ位置の使用率を記録する使用率ベクトル• 各メモリ位置を開放するための解放ゲート• メモリの情報が消されないように保護する保持ベクトル
𝝍𝑡=∏𝑖=1
𝑅
(1− 𝒇 𝑡𝑖𝒘 𝑡− 1
𝑟 ,𝑖 ¿)¿
𝒖𝑡=(𝒖𝑡 −1+𝒘 𝑡 −1𝑊 −𝒖𝑡 −1∘𝒘 𝑡 −1
𝑊 )∘𝜓𝑡
:解放ゲートと読み込み重みベクトルから保持ベクトルを計算
:直前の使用率ベクトルと書込みベクトルと保持ベクトルから、現在の使用率ベクトルを計算
Dynamic memory allocation②• を昇順にソートした解放リスト(数字が高いほど最近使用されたことを示す)
• を元に、各メモリへの書込み重みを算出
𝒂𝑡 [𝜙𝑡 [ 𝑗 ]]=(1−𝒖𝑡 [𝜙 𝑡 [ 𝑗 ] ])∏𝑖=1
𝑗− 1
𝒖𝑡 [𝜙 𝑡 [ 𝑖 ] ]
Dynamic memory allocation③• 直前のメモリとコントローラのパラメータに対して、
Contents addressingを通じて書込み確率分布を計算
)• そこから、メモリ割り当てゲート、書込みゲートを通じて書込み重みベクトルを算出
Temporal memory linkage①• Dynamic memory allocationではメモリ割り当てを行う際、変更を時系列を記録しないが、自然言語等では時系列データの処理が必要
• そこで、メモリ操作の時系列を定義する。(メモリ位置 iの直後にメモリ位置 jが書き込まれる率)
• また、同時に各メモリ位置が最後に書き込まれる率を定義
𝑷 𝑡=¿𝐿𝑡[ 𝑖 , 𝑗 ]=(1−𝒘 𝑡
𝑊 [𝑖 ]−𝑤𝑡𝑊 [ 𝑗 ] )𝐿𝑡−1 [ 𝑖 , 𝑗 ]+𝒘 𝑡
𝑊 [ 𝑖 , 𝑗 ]𝑝𝑡−1 [ 𝑗 ]
Temporal memory linkage②• はを転置することで、メモリ操作履歴の逆推移が得られる。• この性質を利用して、順伝搬の重みと逆伝搬の重みを算出
• また、メモリの読み込み重みは Contents addressingを通じて計算
𝑓 𝑡𝑖=𝐿𝑡𝒘 𝑡 −1𝑟 ,𝑖 𝑏𝑡
𝑖=𝐿𝑡⊤𝒘 𝑡 −1
𝑟 ,𝑖
)
ヘッドの動作モード
• ヘッドの動作を決めるは 3つのモードを有します
: ヘッドが逆向きに移動(逆伝搬の計算) : 読み込みキーベクトルを利用して重みを計算 :を使わず、メモリ内の情報を利用して計算
読み込みベクトルの計算
• 以上の計算を元に、メモリから読み出される値は以下
• 最後に、コントローラから出力された値とメモリの出力を計算し DNCの最終出力は以下となる
;...;
メモリ内の計算グラフ
𝒄 𝑡𝑊
𝒌𝑡𝑟 ,𝑅
𝛽𝑡𝑅
𝒌𝑡𝑊
𝛽𝑡𝑊
𝒆𝑡
𝒗 𝑡
𝑓 𝑡𝑅
𝑔𝑡𝑎
𝑔𝑡𝑊
𝜋 𝑡𝑅
𝑀 𝑡− 1
𝑀 𝑡
𝒘 𝑡 −1𝑊𝒘 𝑡 −1
𝑅
𝜓 𝑡
𝒖𝑡−1
𝝓𝑡𝒂𝑡
𝒄 𝑡𝑅
𝒇 𝑡 ,𝒃𝑡
𝑷 𝑡−1 𝐿𝑡−1
𝒘 𝑡𝑊 𝐿𝑡𝑷 𝑡
𝒖𝑡
𝑟 𝑡
※線の交差は すべて非接続
コント
ローラが
発行する
各パラメータ
直前の計算で得られた各パラメータ
𝝂𝑡𝑊 𝑟
𝑦 𝑡
メモリ内部処理
DNCまとめ
• 微分可能な性質を維持しながらも、メモリ操作関連の処理はニューラルネットワークと大きくかけ離れており、直感的な理解がしにくい
• 一方、メモリ構造により冒頭の変数バインディング問題はほぼ解消されるので、ニューラルネットワークの能力を大きく伸ばせると考えられる
今後の活用展望
• 論文内では、 DNCを活用した自然言語処理、データ構造分析、強化学習と、あらゆる領域で外部メモリが活用出来ることが紹介されている
• 今後、外部メモリ自体のデザインやその処理方法をデザインしていくことで、更に多種なタスクをニューラルネットワークを用いて、高精度で処理できることが期待できる