Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最新AI技術「カプセルネットワーク」「転移学習」「QRNN」をKerasでサクっと実装する

piacerex
June 30, 2018

 最新AI技術「カプセルネットワーク」「転移学習」「QRNN」をKerasでサクっと実装する

3つの最新AI技術「カプセルネットワーク」「転移学習」「QRNN」について、概要の解説を行い、Kerasで実装してみました

piacerex

June 30, 2018
Tweet

More Decks by piacerex

Other Decks in Technology

Transcript

  1. 1 プログラマ歴36年 / XPer歴18年 / 福岡 技術顧問 (3社) AIジョブカレ 福岡代表

    / enPiT (文科省 社会人IT育成) 講師 IT企業2社経営 。 森 正和 |> 。 Elixirコミュニティ「fukuoka.ex」 福岡 理学部 / IAI Fukuoka / 「通常の3倍」福岡 主催 「量子コンピュータ by Blueqat」 / 「OpenQL」 福岡代表 福岡Elixirプログラマ / 重力プログラマ my favotite technology & implements. Twitter/Qiita/Github @piacere_ex
  2. 最近、8週連続Qiitaトップ獲得 & キラーOSSリリース fukuoka.ex、取材受けます(インタビュー掲載) 福岡でのElixir 大型案件始動 福岡でブームに&Elixirを求めて移住してくる第1号が確定w 高島市長と会見 感謝状…届くか? 福岡でのElixirプロダクション

    採用事例が100件突破 季節外れのAdvent Calendarで Qiita Elixirカテゴリを4~6月 ジャック (新人や転職組を狙う) Elixir Advent Calendarの 本家を福岡勢で完全制圧する 高島市長を 登壇に呼ぶ 野心を振り返る 忘年会バージョン fukuoka.ex 世界へ打って出る Elixir移住者 インタビュー ZEAM α版リリース? (Elixir Conf間に合うかな?) fukuoka.exによる Elixir本を出版 &出版記念パーティ 世界レベルのElixir オープンソースをリリース fukuoka.exを50人規模 で開催 in GMOペパボ 福岡でElixir conf級 のイベントを開催する fukuoka.exを100人 規模で開催 @ LINE Elixirで洗練されたモダン UIのキラーOSSをリリース Udemy Elixir 講座リリース fukuoka.ex、2回目の取材 来年の展望・野望を語る
  3. 19 1. AIの歴史とディープラーニング 2. 現在、主流のディープラーニング手法 3. 「カプセルネットワーク」とは? 4. カプセルネットワークを実装する 5.

    「転移学習」とは? 6. 転移学習を実装する 7. 「QRNN」とは? 8. QRNNを実装する 9. 最新AI技術のまとめ 目次
  4. 22 AI研究・開発は、デジタルコンピュータの登場とほぼ同じ位、長い 歴史をもっています これまで、2度の「AI冬の時期」があり、現在は、第3次ブームの 真っ最中です 1.AIの歴史とディープラーニング ? 2度目の「AIの冬」に、大学で ニューラルネットワークとマイクロ カーネルOSの研究・開発を

    並行して行っていました パソコンを始めて触ったのは、 小学校4年生の頃でした 大学の頃に触れた各種技術が、 ディープラーニングやビッグデータ分析、 Elixir+Pythonデータサイエンス、 宇宙データ分析等、福岡で行って いる様々な活動へと繋がっています の第1回 から再掲
  5. 29 2.現在、主流のディープラーニング手法 現在、主流となっているディープラーニング手法には、「CNN」 「RNN」「AE」の3つがあります ➢ CNN (Convolutional Neural Network) •

    複数用意した空間フィルタで畳込演算 (Convolution) を行い、各フィルタ結果から取捨選択 (プーリング) ことを 繰り返すことで、特徴を抽出できる ➢ RNN (Recurrent Neural Network) • 従来のNNのフィードフォワード構造に加え、フィードバック 構造も持たせることで、現在データだけで無く、過去データ からの影響も含めた、時系列としての特徴を抽出できる ➢ AE (Auto Encoder) • 次元削減時の圧縮法を教師なし学習することで、抽象 的な特徴を抽出できる (最近、データ生成で復活)
  6. 32 3. 「カプセルネットワーク」とは? 2度の「AIの冬」の間もAI研究を続け、2012年にディープラーニ ングをヒットさせた「AIの父」、ジェフ・ヒントン博士 (70歳!) が 編み出した、ニューラルネットワークを超えると言われるAI新技術 半年前の2017年10月に論文を発表し、ニューラルネットワーク の最高精度に匹敵しつつ、誤答率が最低時のNNの半分にまで

    減少できる、という研究成果を発表しています 最大の違いは、ニューラルネットワークが特徴を「全特徴の量」で 捉えていたのに対し、カプセルネットワークは特徴を「各特徴毎の ベクトル」で捉え、更に「各特徴の間にある関係性」も捉えます 現在、Google Brain PJの研究者 とトロント大学教授を兼務している
  7. 43 (事前準備) Kerasをpipでインストールします 【macOSのみ】matplotlibを動かすための設定ファイルを以下 コマンドで作成し、Anacondaからターミナルを起動し直します # pip install pandas #

    pip install sklearn # pip install pydot # pip install image # pip install matplotlib # pip install theano # pip install jupyter # mkdir ~/.matplotlib # echo backend : TkAgg > ~/.matplotlib/matplotlibrc
  8. 47 5. 「転移学習」とは? 転移学習の実現には、以下3つのアプローチがあります ① 学習済みモデルの出力層のみ別ドメインに適応 • ドメイン間のタスクに共通点がある場合、入力層や中間 層・隠れ層の重みは固定し、出力層だけを別ドメインで 学習させることで、共通する特徴の抽出が可能となります

    ② ドメイン非固有の特徴のみに限定 • 「表現学習」と呼ばれる、汎用的な特徴や、分散を学習 することで、ドメインに依存しない部分に限定して学習し、 ドメイン非固有の特徴を抽出します (AEはこの一種) ③ ドメインの違いを予め認識させて選り分ける • ドメイン間の変換を事前に学習させ、ドメインの間にある 違いを認識し、ドメイン固有と非固有を判別することで、 各々の特徴を抽出できます (≒学習の仕方を学習する)
  9. 51 7. 「QRNN」とは? 2016年11月、SalesForce研究所のジェームズ・ブラッドベリー らが発表した、RNNの計算時間を改善するための手法です RNNでメジャーな「LSTM (Long Short-Term Memory) は、

    現在の出力を得るために、「過去の出力値」と「媒介変数の値」 の両方が必要なため、並列計算が行えず、計算に時間がかかる という問題点を持っています QRNNは、CNNの持つ並列計算能力を部分的に利用すること で、この時系列データ学習を高速化し、時間短縮もしくは単位 時間あたりの精度向上が実現できます
  10. 53 8.QRNNを実装する QRNNの利用時実装は、とても簡単で、RNN LSTMで書かれ ているコードのLSTMクラスを、QRNNクラスに入れ替えたら完了 です QRNNクラスは、以下からダウンロードします https://github.com/DingKe/nn_playground/blob/master/qrnn/qrnn.py model =

    Sequential() model.add( LSTM( 300, return_sequences = False ) ) model.add( Dense( 1, activation = ‘linear’ ) ) model.compile( loss = 'mean_squared_error, optimizer = 'adam' ) model = Sequential() model.add( QRNN(64, window_size = 60, dropout = 0 ) ) model.add( Dense( 1, activation = ‘linear’ ) ) model.compile( loss = 'mean_squared_error ', optimizer = 'adam' )
  11. 54 8.QRNNを実装する ダウンロードしたコードの内部実装は、CNNで使うconv2d()が 出てきます def preprocess_input(self, inputs, training=None): if self.window_size

    > 1: inputs = K.temporal_padding(inputs, (self.window_size-1, 0)) inputs = K.expand_dims(inputs, 2) # add a dummy dimension output = K.conv2d(inputs, self.kernel, strides=self.strides, padding='valid‘, data_format='channels_last')
  12. 57 9.最新AI技術のまとめ 今回、ご紹介した最新AI手法をまとめます ➢ カプセルネットワーク • 少ないデータでも、高精度かつ耐久性の高い予測が可能 であり、NN/DLを超える、高い汎化能力を発揮する • 実証が少ないが、仕組みが合理的で、トライの価値あり

    ➢ 転移学習 • 少ないデータのドメインも、大量データで学習済みのモデル があれば予測を行え、高い汎化能力があると言える • 「学習の仕方を学習する」ことが可能なため、将来的には、 より少ないデータからの高精度学習に応用が期待できる ➢ QRNN • 時系列データ分析は、ビジネス領域で最も重要なデータ 分析課題で、QRNNは、その効率改善に実用できる