Slide 1

Slide 1 text

2018/06/30(Sat) PyCon Kyushu 2018 最新AI技術「カプセルネットワーク」 「転移学習」「QRNN」を Kerasでサクっと実装する 2018/06/26 ver0.5作成 2018/06/30 ver0.9作成

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

35年間、プログラマ続けてて、「重力プログラマ」がコア 先日、UnityでGPU使った天体シミュレータ開発着手

Slide 4

Slide 4 text

最近、「はやぶさ2」開発者の村田博士と仲良くなった

Slide 5

Slide 5 text

4 2018/3/16 福岡 理学部 四限目 「重力と宇宙を愛する全ての人に」

Slide 6

Slide 6 text

福岡宇宙ベンチャーQPS研究所、大西社長参戦!

Slide 7

Slide 7 text

静岡県から、天体研究しているJKもキターッ!

Slide 8

Slide 8 text

国内No.1 AIスクールの福岡代表&講師やっています AI権威の松尾研出身で「詳解ディープラーニング」著者、 巣籠さん監修のAI学校を現役のエンジニアが講義中 https://www.aijobcolle.com/

Slide 9

Slide 9 text

「福岡 理学部」は、数学・物理が苦手でも楽しめます LINE Fukuoka、Fusic、 ベガ・コーポレーション、TechJIN といった、福岡の数学・物理に 強いエンジニアが、仕事に関係 有る無しにこだわらず、好きな 分野で好き勝手にLTしまくるw 科学なら何でもOKという集まり (宇宙も扱います) https://fukuoka-science.connpass.com/event/75947/

Slide 10

Slide 10 text

ジョブスみたいに1円から、技術顧問のご相談どうぞ 「幸せなトップエンジニア」を揃えたい企業向け、PJ推進 支援、技術者評価基準策定、Elixir導入・運用支援 他にも、以下福岡の代表企業をゲリラ的支援しています カラビナテクノロジー株式会社 地元の中小企業のIT化から、 大規模流通SI開発まで手広く カバーする、福岡ITの急先鋒 有限会社デライトシステムズ 販売管理の自社パッケージ提供と AWS/GCPの高性能Web システム開発に定評がある 株式会社Fusic 顧客とのコミュニケーションを重視し、 堅実なシステム開発を手掛ける 福岡を代表するIT企業

Slide 11

Slide 11 text

10 2018/6/22 福岡Elixirコミュニティ fukuoka.ex MeetUp #11 ~ DB/データサイエンスにコネクトするElixir ~

Slide 12

Slide 12 text

福岡Elixirコミュニティ「fukuoka.ex」とは? 2017年6月発足 先週fukuoka.ex#11で1周年

Slide 13

Slide 13 text

1年で、福岡で関数型言語「Elixir」、だいぶ広めました 1年間、隔月(偶数月)MeetUp+毎月もくもく会 国内・海外含め、fukuoka.exでしか手に入らない 情報やノウハウ、研究成果が毎回、満載 ナント、スポンサー付きましたw 企業でも無いコミュニティに スポンサー付く時代なんですね 福岡でElixir採用企業、増殖中 今年度、20社採用、目指します

Slide 14

Slide 14 text

「実際に動くコード」でライブデモしたり、もくもくしたり… 地味に女子率、高し(^o^)

Slide 15

Slide 15 text

MeetUpは、2ヶ月に1回の隔月開催 (偶数月の末) 告知から数時間で満席 次回#14は8末 前回MeetUpは、 福岡でのElixir プロダクション採用 事例を紹介 国内・海外含め、 fukuoka.exでしか 得られない尖り具合 https://techjin.connpass.com/event/79311/

Slide 16

Slide 16 text

もくもく会は、毎月開催しています 仕事終わりにほろ酔い、くつろぎつつ、Elixir/Phoenix でプログラミングを嗜んでみませんか?

Slide 17

Slide 17 text

最近、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回目の取材 来年の展望・野望を語る

Slide 18

Slide 18 text

fukoka.exアドバイザーズがインタビュー受けました 全3回、夏頃に全国パブリックメディアでの第2段も決定 http://dame.engineer/archives/391#post-391

Slide 19

Slide 19 text

18 本編ここから

Slide 20

Slide 20 text

19 1. AIの歴史とディープラーニング 2. 現在、主流のディープラーニング手法 3. 「カプセルネットワーク」とは? 4. カプセルネットワークを実装する 5. 「転移学習」とは? 6. 転移学習を実装する 7. 「QRNN」とは? 8. QRNNを実装する 9. 最新AI技術のまとめ 目次

Slide 21

Slide 21 text

20 1.AIの歴史とディープラーニング の第1回 、第3回 から再掲

Slide 22

Slide 22 text

21 AI研究・開発は、デジタルコンピュータの登場とほぼ同じ位、長い 歴史をもっています これまで、2度の「AI冬の時期」があり、現在は、第3次ブームの 真っ最中です 1.AIの歴史とディープラーニング ? の第1回 から再掲

Slide 23

Slide 23 text

22 AI研究・開発は、デジタルコンピュータの登場とほぼ同じ位、長い 歴史をもっています これまで、2度の「AI冬の時期」があり、現在は、第3次ブームの 真っ最中です 1.AIの歴史とディープラーニング ? 2度目の「AIの冬」に、大学で ニューラルネットワークとマイクロ カーネルOSの研究・開発を 並行して行っていました パソコンを始めて触ったのは、 小学校4年生の頃でした 大学の頃に触れた各種技術が、 ディープラーニングやビッグデータ分析、 Elixir+Pythonデータサイエンス、 宇宙データ分析等、福岡で行って いる様々な活動へと繋がっています の第1回 から再掲

Slide 24

Slide 24 text

23 1.AIの歴史とディープラーニング 当初、期待されていた、「人間のように自律的に思考するAI」は、 今もまだ実現できていませんが、各ブームでの副次的な成果は、 様々なコンピューティングや生活に影響を及ぼしています 以下のうち、AIブームで生み出されたものは、どれでしょう? ◼ 自然言語処理 ◼ 機械翻訳 ◼ 音声認識 ◼ オブジェクト指向プログラミング ◼ 関数型プログラミング ◼ リレーショナルDB ◼ インターネット(TCP/IP) ◼ 証券市場(電子取引) の第1回 から再掲

Slide 25

Slide 25 text

24 1.AIの歴史とディープラーニング 第3次AIブームの立役者は、「ディープラーニング」です 一言で言えば、「期待する値に限りなく近い値を回答できるよう、 膨大なパターンをマシンに分類してもらう」というアルゴリズムです ディープラーニングが革新的なのは、「データが持つ特徴を、人手 を介在させずとも自動抽出できる」という点です の第1回 から再掲

Slide 26

Slide 26 text

25 「ディープラーニング」は、「ディープニューラルネットワーク」にて学習 する手法なので、まずは「ニューラルネットワーク」から始めます ニューラルネットワークは、人の脳内神経細胞である「ニューロン」 の脳内ネットワークをコンピュータの「人工ニューロン」で模したもの であり、ニューロン間の情報伝達により、物事を認識したり、情報 処理する人間の脳に似た機能をエミュレーションします 1.AIの歴史とディープラーニング 脳内ニューロンのネットワーク 入 力 信 号 出 力 信 号 ニューラルネットワーク 入 力 信 号 出 力 信 号 の第3回 から再掲

Slide 27

Slide 27 text

26 1.AIの歴史とディープラーニング ニューラルネットワーク内の単一のニューロンは、以下の通りです x1~xnの各入力の強弱により、出力yが有効な出力を行う ケースと、行わないケースが分かれますが、有効な出力を行った 場合に「ニューロンが活性化」したと表現します ニューラルネットワークとしての出力は、この単一ニューロンの組み 合わせによって決まります 入力x1 出力y 入力x2 入力xn … … の第3回 から再掲

Slide 28

Slide 28 text

27 1.AIの歴史とディープラーニング 「ディープラーニング」とは、このニューラルネットワークを多層構造 に構成したもので学習・推論することを指します 「データが持つ特徴を、自動抽出」できる点(≒人手が不要) が、ディープラーニングの革新的なポイントです の第3回 から再掲

Slide 29

Slide 29 text

28 2.現在、主流のディープラーニング手法

Slide 30

Slide 30 text

29 2.現在、主流のディープラーニング手法 現在、主流となっているディープラーニング手法には、「CNN」 「RNN」「AE」の3つがあります ➢ CNN (Convolutional Neural Network) • 複数用意した空間フィルタで畳込演算 (Convolution) を行い、各フィルタ結果から取捨選択 (プーリング) ことを 繰り返すことで、特徴を抽出できる ➢ RNN (Recurrent Neural Network) • 従来のNNのフィードフォワード構造に加え、フィードバック 構造も持たせることで、現在データだけで無く、過去データ からの影響も含めた、時系列としての特徴を抽出できる ➢ AE (Auto Encoder) • 次元削減時の圧縮法を教師なし学習することで、抽象 的な特徴を抽出できる (最近、データ生成で復活)

Slide 31

Slide 31 text

30 2.現在、主流のディープラーニング手法 AI・ML手法は、2012年以降、2次関数的成長を遂げており、 その火種が、「arXiv」という名の論文サイトで、従来の論文発表 は研究者主体でしたが、arXivではエンジニアも論文を出します 現代におけるムーアの法則と Google I/O 2018で紹介

Slide 32

Slide 32 text

31 3. 「カプセルネットワーク」とは?

Slide 33

Slide 33 text

32 3. 「カプセルネットワーク」とは? 2度の「AIの冬」の間もAI研究を続け、2012年にディープラーニ ングをヒットさせた「AIの父」、ジェフ・ヒントン博士 (70歳!) が 編み出した、ニューラルネットワークを超えると言われるAI新技術 半年前の2017年10月に論文を発表し、ニューラルネットワーク の最高精度に匹敵しつつ、誤答率が最低時のNNの半分にまで 減少できる、という研究成果を発表しています 最大の違いは、ニューラルネットワークが特徴を「全特徴の量」で 捉えていたのに対し、カプセルネットワークは特徴を「各特徴毎の ベクトル」で捉え、更に「各特徴の間にある関係性」も捉えます 現在、Google Brain PJの研究者 とトロント大学教授を兼務している

Slide 34

Slide 34 text

33 3. 「カプセルネットワーク」とは? カプセルネットワークは、各特徴を個別に判定し、更に各特徴間 の関係性も加味できるため、以下のような、全体としては見た目 が異なっている (回転も含む) が、各パーツの相対的な位置は 変わらない対象を「空間一致する」ものとして判別できます また学習時も、CNNでは必須だった、各パーツが微妙に違ったり、 回転させたバリエーションが不要となるため、高効率を実現します

Slide 35

Slide 35 text

34 3. 「カプセルネットワーク」とは?

Slide 36

Slide 36 text

35 3. 「カプセルネットワーク」とは? 「各特徴の間にある関係性」は、squash関数により、ベクトルの 情報量をキープしたまま、圧縮できていることで実現されています 従来のCNNでは、「マックス・プーリング」と呼ばれる、「特徴量の 最大値だけ残し、残りは切り捨てる」操作が、活性化関数にて 行われているため、情報量が消失し、関係性は判別不可でした

Slide 37

Slide 37 text

36 4.カプセルネットワークを実装する

Slide 38

Slide 38 text

37 (事前準備) Kerasは、TensorFlowをコアとして動作するラッパーライブラリで、 本来、数学を用いて、ニューラルネットワークやディープラーニング を構築する必要があるところの大部分を代行してくれます Kerasを使わず、TensorFlowそのままでコーディングした場合、 「学習」部分を数式に相当するコードで書くこととなります※ が、 Kerasを使った場合は、数式を一切使わずとも、「学習」部分が コーディングできるのが、最大の特徴です ※Kerasで省略される「学習」における数式については、末尾に付録として掲載しています https://keras.io/ja/ の第3回 から再掲

Slide 39

Slide 39 text

38 (事前準備) 「Anaconda」は、数学系、科学系、データ分析系のPython パッケージを、一括でインストールでき、かつ複数の環境も管理で きるアプリで、Kerasも簡単にインストールできます の第3回 から再掲

Slide 40

Slide 40 text

39 (事前準備) Anacondaは、以下URLからダウンロードします (ここでは、Windwos版とmacOS版について説明します) https://www.anaconda.com/download/ の第3回 から再掲

Slide 41

Slide 41 text

40 (事前準備) 「Environments」クリック後、「Create」ボタンから、Python 環境を作成します 【macOSのみ】Pythonを「3.5」にしてください の第3回 から再掲

Slide 42

Slide 42 text

41 (事前準備) Anacondaから、ターミナルを起動します このとき、誤って「root」から起動しないよう、ご注意ください の第3回 から再掲

Slide 43

Slide 43 text

42 (事前準備) Kerasをpipでインストールします PythonコマンドでREPLが起動し、Kerasがエラー無くimport できれば、インストールは成功です exit()と打てば、Pythonを抜けて、ターミナルに戻ります もしエラーが出たときは、前ページをやり直してください # python >>> import keras Using TensorFlow backend. >>> >>> exit() # # pip install tensorflow-gpu # pip install keras の第3回 から再掲

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

44 4.カプセルネットワークを実装する デモ (スミマセン、会場でしか お見せしません)

Slide 46

Slide 46 text

45 5. 「転移学習」とは?

Slide 47

Slide 47 text

46 5. 「転移学習」とは? あるドメインで学習させたモデルを、別のドメインに適応させること で、少ないデータしか手に入らないドメインの予測であっても可能 とする学習手法です AI界のパイオニア、Andrew Ngが発表した、ビジネスにおける 機械学習の発展予測において、最初は「教師あり学習」が活躍 したが、次に躍進するのは、 「教師なし学習」や「強化学習」で 無く、 「転移学習」と述べています

Slide 48

Slide 48 text

47 5. 「転移学習」とは? 転移学習の実現には、以下3つのアプローチがあります ① 学習済みモデルの出力層のみ別ドメインに適応 • ドメイン間のタスクに共通点がある場合、入力層や中間 層・隠れ層の重みは固定し、出力層だけを別ドメインで 学習させることで、共通する特徴の抽出が可能となります ② ドメイン非固有の特徴のみに限定 • 「表現学習」と呼ばれる、汎用的な特徴や、分散を学習 することで、ドメインに依存しない部分に限定して学習し、 ドメイン非固有の特徴を抽出します (AEはこの一種) ③ ドメインの違いを予め認識させて選り分ける • ドメイン間の変換を事前に学習させ、ドメインの間にある 違いを認識し、ドメイン固有と非固有を判別することで、 各々の特徴を抽出できます (≒学習の仕方を学習する)

Slide 49

Slide 49 text

48 6.転移学習を実装する

Slide 50

Slide 50 text

49 6.転移学習を実装する CPUだと、丸2日かかる転移学習も、GPU (GeForce 1060 相当)で行えば、わずか30分で終わる デモ (スミマセン、会場でしか お見せしません)

Slide 51

Slide 51 text

50 7. 「QRNN」とは?

Slide 52

Slide 52 text

51 7. 「QRNN」とは? 2016年11月、SalesForce研究所のジェームズ・ブラッドベリー らが発表した、RNNの計算時間を改善するための手法です RNNでメジャーな「LSTM (Long Short-Term Memory) は、 現在の出力を得るために、「過去の出力値」と「媒介変数の値」 の両方が必要なため、並列計算が行えず、計算に時間がかかる という問題点を持っています QRNNは、CNNの持つ並列計算能力を部分的に利用すること で、この時系列データ学習を高速化し、時間短縮もしくは単位 時間あたりの精度向上が実現できます

Slide 53

Slide 53 text

52 8.QRNNを実装する

Slide 54

Slide 54 text

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' )

Slide 55

Slide 55 text

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')

Slide 56

Slide 56 text

55 8.QRNNを実装する QRNNは、約30,000件のデータでは、RNN LSTMと比べ、 35%程度、実行時間が速く、精度も高いという結果が出ました 過去データが、より大量にある場合、並列処理が威力を発揮し、 より大きな性能差が出る可能性があります

Slide 57

Slide 57 text

56 9.最新AI技術のまとめ

Slide 58

Slide 58 text

57 9.最新AI技術のまとめ 今回、ご紹介した最新AI手法をまとめます ➢ カプセルネットワーク • 少ないデータでも、高精度かつ耐久性の高い予測が可能 であり、NN/DLを超える、高い汎化能力を発揮する • 実証が少ないが、仕組みが合理的で、トライの価値あり ➢ 転移学習 • 少ないデータのドメインも、大量データで学習済みのモデル があれば予測を行え、高い汎化能力があると言える • 「学習の仕方を学習する」ことが可能なため、将来的には、 より少ないデータからの高精度学習に応用が期待できる ➢ QRNN • 時系列データ分析は、ビジネス領域で最も重要なデータ 分析課題で、QRNNは、その効率改善に実用できる

Slide 59

Slide 59 text

58 9.最新AI技術のまとめ 「arXiv」では、誰でも閲覧し、利用できる論文が、2次関数的 に増え続けており、まさに日進月歩の発展が、無料で手に入る 状況で、いつまでもAI・MLを「知らない」「入門で止まっている」 「自分に関係無い」と言ってられない状況が、そこまで来ています

Slide 60

Slide 60 text

59 こんな流れを受けて…

Slide 61

Slide 61 text

①AI入門が終わった方向けのAI・MLコミュ、本日発足 昨年7月に発足した「福岡x人工知能x…」のミッションは、 「AI・MLに入門する人を増やし、仕事の中でAI・ML の開発ができる人を増やしていく」ということでした 実際に1年活動してみて、プログラミング会などの 手を動かすイベントも行いましたが、入門後、実務に 結びつかない実態が浮き彫りになってきました…そこで、 Institute for Advanced Intelligence Fukuoka 「IAI Fukuoka」 ≒ 「居合い福岡 (イアイフクオカ)」 という、すぐに実務に結びつくAI・Mlの開発・研究 を「もくもく会」主体で推進していくようなコミュニティ、 本日、発足します (開催はconnpassにて)

Slide 62

Slide 62 text

②AI・MLに欠かせない前処理をOSSで無償提供 AI・MLには、前処理 (データクレンジング、変換・集計・加工) が 欠かせませんが、Elixir+Phoenix+Vue.jsで開発したOSS 「Esuna」を使えば、GUI上でデータ処理を設定でき、後続の AI・MLへとスムースにデータを流せます (ツールを無償で提供)

Slide 63

Slide 63 text

③Elixirで、scikit-learn/Keras相当を実装中 性能・開発効率が抜群で、福岡で流行りつつある関数型言語 「Elixir」にて、GPU活用を始めています 半年後にはscikit-learn相当、1年以内には、GPU対応済み のKeras相当をリリースできると思います 北九大、京大の方と共に Elixir GPU活用の共同研究 論文も書いてます

Slide 64

Slide 64 text

63 最後に AI・ML以外

Slide 65

Slide 65 text

7/20(金)、「重力と宇宙」イベント2回目、開催決定!! 3/16第1回開催の天体研究JK/福岡から人工衛星 飛ばすベンチャーに続き、宇宙法JDがキエフから来日!

Slide 66

Slide 66 text

「キエフ」ってどこ?宇宙法JD(≒宇宙少女)って何者?

Slide 67

Slide 67 text

8/24(金)、fukuoka.ex#13をLINEで開催! 国内・海外含め、fukuoka.exでしか手に入らない 情報やノウハウ、研究成果が毎回、満載 福岡でElixir採用企業、増殖中 今年度、20社採用、目指します connpass「fukuoka.ex」にメンバー登録したらメールお知らせ

Slide 68

Slide 68 text

67 ご清聴ありがとうございます