これはなに

 @img2cap fileという形式で画像を投げつけると説明文をつけ加えて返信するだけのTwitter bot.

しくみ

 CNN + LSTM.
 以下の論文や実装を参考にした.裏ではChainerが動いている.

 はじめは論文通りの活性化関数と勾配法を試してみたが,dsanno氏のいうようにSGDよりAdamの方が高速.MomentumSGDと比べてもみたが即Adam最高! という気分にさせられた.AdamがそもそもAdaGradとRMSPropのいいとこどりらしいので,その両者は試していない.なおネットワーク構成は論文のまま.
 データセットに含まれているのは写真8万枚とその説明文だけ.よってTwitterの各位がいくらイラストを投げつけようと無駄な話で,その手のニーズに対応するにはニコニコ静画のデータセットあたりを使う必要がありそう.これには画像とそのタグ,コメントを学習したモデルが含まれているそうだが,説明文の生成というタスクに向けてどう転移学習させるか目処は立っていない.
 当然ながら学習データと実際に各位が投げつけてくるデータの分布は全く異なるし,困ったものだ.

謝辞

 お遊びにGPU環境を貸してくれた@georgioush, @dasoran両氏に感謝.

 読書メモ.

はじめに

 人間の脳を模したニューラルネットの手法,深層学習ディープラーニングがめざましい成果を挙げている–といった謳い文句をよく目にする.だが機械学習の専門書を紐解いても出てくるのはロジスティック回帰のお化けばかり.
 われらがPRMLのニューラルネットを扱う章にはこうある.

しかしながら,パターン認識という実際的な応用の観点からは,生物学的な現実性などは全く不要な制約である.
                        – C.M.ビショップ『パターン認識と機械学習 上』 (p.226)

 では,機械学習の文脈で言うところのニューラルネットと脳はどれほど異なっているのだろうか?

ニューラルネットと脳の違い

 結論から言えば全然違うわけだが,ざっくり以下の三点から整理できる(と思う):

  • ニューロンのモデル
  • ネットワーク構造
  • 微分計算の手法

ニューロンのモデル

 現在広く普及している多層パーセプトロンは,単純な差分方程式であるMcCulloch-Pittsモデルをベースに,層を重ねたとき微分できるような活性化関数を組み合わせている.だがそれ以外にも膜電位が変動するメカニズムを考慮した:

  • Hodgkin-Huxleyモデル
  • FitzHugh-Nagumoモデル
  • Izhikevichモデル

などが提案されている–というようなことは機械学習の道具としてニューラルネットを扱っている本にはあまり書かれていない.ひとまず手元にあった:

はモデル名に言及しておらず,McCulloch-Pittsモデルを紹介していたのは:

だけだった.
 ちなみにこの中だと機械学習マジで何もわからんって人はまずサンプルコードを動かしながら『ITエンジニアのための機械学習理論入門』を読むとよい.深層学習については紫色の本が好み.青色の本は数式が追いにくい(どっちもどっちだが)上,深層学習以前と以後でどのような変遷があったのか不明瞭で,『進化計算と深層学習』は概論のみ.『イラストで学ぶディープラーニング』は読みやすく,汎化性能を向上させる方法も載っていて実践的ではあるが,RNNに触れられていないのが惜しい.
 さて,それではニューロンのモデルが複雑であれば脳に近いのかというと,どうやらそういうわけでもないらしい.たとえば複雑かつイオンコンダクタンスの挙動が緻密なHodgkin-Huxleyモデルは,ヤリイカの軸索のニューロンをモデル化したものだが,これはヒトの大脳皮質とはタイプが異なるようだ.
 しかし,McCulloch-Pittsモデルには,STDP (Spike Timing Dependent Plasticity, スパイク時刻依存シナプス可塑性) を表現できていないという問題点がある.STDPはニューロンの発火タイミングに応じて重みを更新する規則で,脳はこれにより時系列を学習しているとされる.
 こういったことを把握するためにいくつか神経科学の本を読んでみた.だいたいの書籍がまず最初にニューロンのモデルを紹介し,それからニューロンの同期に章を割き,つづいて脳の任意の部位の詳説という体裁をとっている.

など.全部読んだ感想としては『脳の計算論』が最も明快かつ簡潔で,STDPにも詳しく,この記事で触れている範囲のことはほぼカバーしている.
 Izhikevichモデルの考案者も『Dynamical Systems in Neuroscience: The Geometry of Excitability and Bursting』という本を書いているのだが,これは難しそう.
 本腰を入れて学ぶには「シナプス可塑性の初心者へ 推薦論文リスト」を消化すべきなのだろう.

ネットワーク構造

 パーセプトロンは小脳に,BESOMは大脳皮質に,畳み込みニューラルネットは受容野に,TD学習は大脳基底核に似ていると言われている.ではどこが.
 小脳についてはさきほど挙げた『脳の計算理論』がよい.この著者は小脳による運動の内部モデル獲得というテーマの大家だそうで,公開されている無料のPDFでその足跡が追える.Hodgkin-Huxleyモデルの解説も丁寧.あわせて“現代の小脳パーセプトロン仮説”も読みたい.
 大脳皮質についてはBESOMの人の「大脳皮質と deep learning の類似点と相違点」がとにかくわかりやすい.やはり正則化が重要なようだが,それについては「脳とネットワーク/The Swingy Brain:まとめてスパースコーディング - livedoor Blog(ブログ)」に挙げられている論文を読むとよさそう.
 さらなる部位との関連については,「全脳アーキテクチャ解明に向けて」から辿れる資料が親切だった.特に「海馬神経回路の機能ダイナミクス」で触れられている内容は元論文の古さとは裏腹にあまり書籍では見ない.

微分計算の手法

 みんな大好き誤差逆伝播法は脳では使われていない.じゃあどうすればいいかというと:

がある.後者2つは深層学習の大家であるBengioらの研究で,ここでSTDPが重要となってくるらしい.生物学的な妥当な深層学習まであと何年だろうか.

おわりに

 機械学習のことは多少わかるけど(計算論的)神経科学については何から勉強すればいいのかもわからないというところから,騙し騙しとはいえ論文を読める程度になるにはこのあたりを読むとよいのではないかと思います.
 なお,このブログに貼られているAmazonリンクはいずれも素のリンクです.ご安心ください.アフィリエイトリンクを貼りまくって小銭を稼ごうと画策しましたが審査に落ちました.

 本稿は慶應義塾大学SFC村井&徳田研 Advent Calendar 2015の19日目である.

TL;DR:

 村井研・徳田研の卒論・修論・博論アーカイブから過去の論文タイトルを収集し,RNNLM(Recurrent Neural Network Language Model, 再帰型ニューラルネット言語モデル)[1]を用いて論文タイトルを自動生成する.

手順

  1. 論文アーカイブを雑にスクレイピング.
  2. 簡単のため英語タイトルを削る.データサイズは540行・16294字.
  3. MeCabの-Owakatiオプションで分かち書き.単語数は6272と少ない.
  4. RNNLMで学習,出力.

 生成した論文タイトルは次の通り.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
改変適応機環境におけるインターネット化の設計と実装
暮らし計算発見を利用したUDL機器
インターネットを用いた機器プローブ体系のVoDについて開発な攻撃運用手法
自律計算ネットワークの行動に-移動システムに関する研究
衛星情報を用いたビジュアライゼーション定義アーキテクチャ表をする検出ユビキタスノードのファイル構成に関する研究
あしあと適応セキュリティネットワークを用いた負荷議事取り入れたセンサNEMOMANET解決
ユーザエンティティに適した仮想な通信接近による制御対象の設計と実装
蓄積学校利用性のための再作業に関する持続
型連携ネットワークのインターネットに基づく遠隔コードの向けたデジタル機構の構築
アプリケーション:型と時間特定を用いた利用型路準拠相関の構築
自律電話教育における異種品質空間支援システムの設計と実装
位置AV端末著作授業特殊トポロジ型し分析高速構築
広域を利用した次応用におけるレイヤーな授業に関する研究プロシステムに関する研究
次制御対するカメラを利用したAd型間屋外パブリック構築
協調:不sネットワークにおけるOSストリーミングの考慮機器コミュニケーション配信システムの設計と実装
センサ環境におけるデバイスソフトウェア文字通信システム
無線作業めぐるにおけるパケットIP発信・支援機構
ELA上環境に応じたしたコンピュータ測定に関する研究
インターネット型プラットホームの遠隔パケットとシステム
無線コントロールセンサを考慮する参加参加サービスの研究
移動者における位置適応オブジェクト手法の研究
インターネットグルーピングの回覧性をシステムした経路消耗性の実現
自己情報を用いた実を量子よる協調表行動流通
デジタル前遠隔しるしの情報共有支援機構
ネットワークト可視ネットワークを車的基盤」関数の分析
環境Computing通信DVB携帯性に関する移動同期利用の設計と実装
マルチパスFunction無線センサノードを用いた技術マルチ支援支援促進に関する研究
スマート世代ネットワークにおける相互ブリッジ家電システムの設計と実装
インターネット情報のための興味無支援システムの構築
オペレーティング型IP環境のプロファイリング的な信頼に関する研究
実方向自動ポロジにおける同期機器性における研究
センサ-抽出生成を支援情報登録抽出機構の構築
アドホックOSにおけるOS環境のGlass性基盤機構の構築
DV地アプリケーションの者による最適いアルゴリズム
商上のための選択なMobile効率システムの構築
ユビキタス世代環境における効率Wireless情報のMarkit
系列演奏位置スレッドサービス二マッチングマルチプロアクティブモデルの構築
パケット適応付け利用を考慮したネットワークブログモデルの設計と実装
TranS情報環境におけるグループホスト同期への安全履歴と分散
の情報対象でのMediatorコラボレーションに関する研究
類似Allシステム
情報グループを利用するデジタル制御動画像配送システムの構築
RFIDを利用したネットワークのプラットフォーム転送に関する研究
周辺上セキュリティにおけるコンテキスト者基無線の提案に関する研究
Link型服行動RCSにおける効率しない機構
クラシック型車載インターネットを解決した分散音声なりすましシステム
Dynamic特徴解析に基づく仮想制御機構の設計と実装
多段CSMAにおける多様な解析管理機構の設計と実装
移動機:を用いた-コンテンツシステムの構築
技術センサ環境におけるホーム化による経路サーバ
アプリケーション回線に基づく薦環境におけるする作成への行動利用に関する研究
インターネットを用いたしたな動画ルールに関する研究
機器協調利用Efficientのネットワーク解決のエンド映像構築
計算情報を利用した家電抽象の迷い連携への構築
関連情報教育における動的メールイベント収集の研究
通知におけるデータベース方式購買によるした状態時間グループに関する研究
コンテキスト:6のためのための設計と実装
電子ネットワークのための提案と実装
自己電話を利用したオブジェクト分散型授業属性制御機構の実現
ネットワークの抽出化環境の向上圧縮システムの構築
Networks対戦ネットワークにおける家庭テリトリー手法の構築
広バイト依存患者のための収集及び積極システム
IPコンテキスト精度点のデータベース的と-発見環境動画像モデル行動-
通信作業システムの含む属性センサノード付け可能メディアの提案と開発
情報世代環境時による最適視点環境機構の設計と実装
協調蓄積モバイルバッテリ支援Shumu機器型設置インシデントIrma保護量
分散回線にセンサデータ適応をマッチングと基準化に関する研究
環境さ時複数用方式と審議に関する研究
自律リンク環境におけるインターネット・属性品質
オブジェクトしにおけるインタフェース技法化推薦機構の研究
インターネットにおける光を用いた最適遠隔支援環境の構築
モーバイルs利用とへの実現自動手法の設計と実装
インターネットに適した時端末型TCP型データ基準の内
インターネットを用いた受信・辞書収集
DOS的利用環境におけるbased配信システムの構築
i:と利用した情報モーダルの作成に関する研究
APIの情報におけるソフトウェアするをシステムの自律
インターネットを用いたセル内回避手法アプリケーションFunction選択制御機構
マルチ:ユーザ時のLooking支援競合の参加情報に関する研究
マルチネットワークによる動的リモコンアーキテクチャの分析に関する研究
インターネット:文字を含むと対策軽減地理ファイルの構築
アプリケーションのデジタル行動環境における負荷教育の設計と実装
移動制御型メディア取り入れたにおける自律トポロジモデルの提案
日本回線時におけるセンサのアーキテクチャ
『世代sionを支援情報ユーザの実現
Mobileの行動空間に基づくするコンポーネントシステムの設計と構築
キットライブラリのアドレス利用を支援するアプリケーションの行動に関する研究
間:環境における認証検出の考察
鍵盤を用いた基盤経路トポロジ支援手法の研究
RFIDネットワークを用いたとユーザ
自律型機的な支援レイヤー手法の設計と実装
アドホックを用いたデジタル最適暗号システムの研究
WWW人IPvシステムの動的2を化フローインフォメーション配送化手法
次的機タフェース6システムの実現
IPレイヤーネットワークにおけるグループ取得遠隔システムに関する研究
二通信ユニバーサルにおける複数共有再についての研究
Tapirus上の情報的実現あるの構築
環境上における仮想指機構の構築
インターネットにおけるRFID経路エンドノードデータベース付けモデルの設計と実装
2回線学習への効率的型環境の提案と構築
...

 これはRNNLMが生成した論文タイトルを100件無作為抽出したもの.全リストはgistに置いている.この程度のデータサイズでRNNLMの性能を云々するのはいささか危うい気がするが,論文タイトルの末尾はえてして「~の構築」「~の研究」「~の実現」になるというルールを獲得できている,ということだろうか.
 同じデータセットから,ありがちな2単語プリフィックスのマルコフ連鎖で生成した論文タイトルは次の通り.

1
2
3
4
5
6
7
8
9
10
11
注目した二点間接続基盤ソフトウエアの構築インターネット
地域における高等教育協力手法の研究ホームネットワークにおける多様
かつスケーラブルな識別子管理システムゲームコンソールに対応する管理
運用基盤分析に関する研究ポリシ経路制御に関する研究大
任意の物理的量子ビットに対する効率的な情報閲覧
脳疲労検知システムの提案次世代インターネット経路制御を用い
鍵交換機構の実装と評価初等中等教育におけるWWW
プロセスデザイン片方向ブロードキャストメディアを用いたユビキタスコンピューティング環境に適し
連携システムの設計と実装exPhoto:周辺機器と撮影
に関する研究分散環境におけるプロアクティブ制御方式に関する研究アドホック
...

 パッと見でRNNLMが生成した論文タイトルの方がより自然に思える.で,RNNLMって何なの?

RNNLM

 読んで字のごとくRNNLMはRNNの言語モデルへの応用である.
 RNNは内部に有向閉路をもつニューラルネット.系列データの各時刻$t$につき1つの入力$x^t$をとり1つの出力$y^t$を返す.ふつう順伝播型ニューラルネットは入力1つをとり1つの入力を与える写像を表現するが,RNNは任意の系列–すなわち過去のすべての入力から任意の系列への写像を表現する.
 これは時刻$t-1$の隠れ層の出力を,時刻$t$の隠れ層の入力に与えることで実現される.

 文章は系列データであり,文章に含まれる各単語は直前の単語の並びに依存している.そこで,1990年のエルマンネット[2]以来,RNNを用いた文章の分析が試みられてきた–近頃「RNNは深層学習の一種」というような言辞を見かけるが,RNN$\in$深層学習ではない
 RNNLMと既存手法との相違点は,単語を潜在空間に写像して単語の意味を獲得しようとしているところだ.
 上図において隠れ層のベクトルは単語の潜在ベクトルとその履歴より$\begin{split}s(t) =& f(Uw(t) + Ws(t-1))\end{split}$となる.次の単語の確率は$\begin{split}y(t) =& g(Vs(t))\end{split}$となる.
 ここで活性化関数$f(z)$は標準シグモイド関数で,$g(z)$はソフトマックス関数$\dfrac {e^{zm}} {\Sigma _{k}e^{zm}}$である.
 学習では確率的勾配降下法を用いて重み$U$, $W$, $V$を更新していくが,このときRNNLMは各層を時間方向に展開し,最後の時刻$t$から誤差逆伝播計算をおこなう(BPTT, Backpropagation through time法).
 ここにおいてRNNは多層の順伝播型ニューラルネットのようにみなせる.

 BPTT法において,ある時刻$t$における出力層の誤差は正解ベクトル$d(t)$から出力$y(t)$を引いた出力誤差$e_{o}(t)$と,時刻$t+1$から伝播してきた誤差の和となる.ここでたとえば$V(t+1) = V(t) + s(t)e_{o}(t)^t\alpha - V(t)\beta$$\alpha$は学習率であり,各層で行列の勾配に掛かる.$\beta$はL2正則化の係数.
 このBPTT法で長い系列を扱うとき勾配が消失してしまう問題[3]があり,解決策としてLSTM(Long Short-Term Memory, 長・短期記憶)[4]が提案されているが,割愛する.
 なお今回のパラメータは次の通り.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
last probability of validation data: -441.610349
number of finished iterations: 14
current position in training data: 0
current probability of training data: -441.576456
save after processing # words: 0
# of training words: 6272
input layer size: 1295
hidden layer size: 200
compression layer size: 0
output layer size: 1096
direct connections: 0
direct order: 3
bptt: 6
bptt block: 10
vocabulary size: 1095
class size: 1
old classes: 0
independent sentences mode: 1
starting learning rate: 0.100000
current learning rate: 0.000195
learning rate decrease: 1

おわりに

 恥知らずのクソ野郎なので何番煎じともわからない記事を書いてしまった.元ネタはNLP論文ネタ一覧
 このほか青空文庫やなろう小説[5]をRNNに学習させてはいるが,LSTM込みでもいまだ人間が見て自然に思える文章の生成は難しく思える.
 いずれは論文タイトルばかりか論文の内容も自動生成して知の欺瞞をもう一発カマしたいのだが.SFC自体が知の欺瞞っぽいところはさておき.
 物語の自動生成なら円城塔がなんとかしてくれるだろう.

参考文献