最終更新日:
エムスリー本社にて開催された「第7回TensorFlowと機械学習に必要な数学を基礎から学ぶ会」を取材してきました。平日の夜にも関わらず、会議室は満席で人気の高さを実感しましたね。
第7回となる本日はRNNについて、RNNの歴史と基礎から解説を頂きましたよ。
目次
浅川先生のご紹介
浅川伸一:
博士(文学) 東京女子大学情報処理センター勤務。早稲田大学在学時はピアジェの発生論的認識論に心酔する。卒業後エルマンネットの考案者ジェフ・エルマンに師事,薫陶を受ける。以来人間の高次認知機能をシミュレートすることを通して知的であるとはどういうことかを考えていると思っていた。著書に「Pythonで体験する深層学習」(コロナ社,2016),
「ディープラーニング,ビッグデータ,機械学習あるいはその心理学」(新曜社,2015)
「ニューラルネットワークの数理的基礎」「脳損傷とニューラルネットワークモデル,神経心理学への適用例」いずれも守一
雄他編
「コネクショニストモデルと心理学」(2001)北大路書房など
RNNとは?
RNN(再帰型ニューラルネットワーク)は、Neural Networkで時系列解析を行うためのもので、ある時刻tにおける隠れ層の状態を、次の時刻t+1の入力に使います。時刻t+1では、その時刻における入力+前回の履歴を時間的文脈として利用する方法です。
具体的には、長い文章の情報を記憶しておき、文章中の言葉の中で、直前の言葉を利用して次の言葉の出現率を予測することができます。この仕組みを活用して機械翻訳で活用されています。
RNNの歴史はとても古い
RNNの登場は代表的なものとして、1986年 NETtalkから。
その後、今大流行しているLSTMに続き、Word2Vecの生みの親と言われるMikolov が革命を起こし大きな変革が起こったそう。
そして、RNNの代表的なモデルについて解説へ
NETTalk
NETtalk の重要な点は、事前に言語学的な知識を一切必要とせず学習が成立した点。例えば、発音の解読では、アルファベットを流していって、前後の情報を元に真ん中の情報を学習してBackpropagationする方法。前後に依存関係があり、ウインドウ幅が長いデータに関しては扱えない。
Jodan Net
現在の最終的な位置を保持して、結果を学習するロボットのアーム制御などで活用している。出力層の情報をフィードバックして入力層に戻す方法。
Elman Net
内部状態を保持しておいて、次の出力を予測する自然言語解析などで活用されている。中間層からの情報をフィードバックして入力層に戻す方法。
BPTT(バックプロパゲーションスルータイム)
普通のBackpropagation(BP)では、時間を考慮せずにその時の入力・出力・教師信号だけでモデルを修正します。BTTTでは、それに加え過去の時間も考慮した修正を行い、時刻tの隠れ層は時刻tの入力時刻t-1の隠れ層だけでなく、時刻t-2以前の隠れ層の値も影響しているためにもっと時間を遡って修正しようという方法です。
この他に、Bengios model、Mikolovモデル、LSTMについてもわかりやすく説明をして頂きました。そして、前半の最後は、githubのソースコードを元にした「Binary addition for basic RNN」の演習が行われましたよ。
実際に試すことでどのような学習が行われているのか体験することができます。
後半はSequential mnistの演習
後半はMNISTの値をRNNで解釈する方法について
Sequential mnistという手法でmnistの画像を分断していき、28番目の出力値を元にBackpropagationしていくというやり方です。
演習がメインでしたので、実際のコードでお試し頂くことわかりやすいと思います。