Slide 1

Slide 1 text

17day TECH INTERNSHIP 機械学習 クックパッド株式会社 研究開発部 菊田 遥平 2017/08/15

Slide 2

Slide 2 text

時間割 時間 内容 09:30 - 10:30 【講義】機械学習とは何か? 10:40 - 12:00 【実習】機械学習初歩 12:00 - 13:00 ランチ 13:00 - 14:30 【講義】ディープラーニング(画像分析) 14:40 - 16:20 【実習】画像分析 16:30 - 17:50 発展的課題への挑戦 17:50 - 18:00 本日のまとめ 18:00 - 18:30 日報・質問 各トピックの間には10分間の休憩を挟みます 2 / 133

Slide 3

Slide 3 text

講師紹介 & 分析環境構築 3 / 133

Slide 4

Slide 4 text

講師紹介 ● 名前 菊田 遥平(きくた ようへい) ● 所属 研究開発部 ● 肩書 リサーチサイエンティスト 博士(理学) ● 専門 画像分析、推薦アルゴリズム ● 好きな食べ物 焼き餃子、寿司、Dr Pepper @yohei_kikuta 4 / 133

Slide 5

Slide 5 text

ポアソン分布が好き! ● world cup ゴール数のポアソン分布分析 (1930 ~ 1982) Ref: https://github.com/yoheikikuta/worldcup_poisson_distrib 5 / 133

Slide 6

Slide 6 text

ポアソン分布が好き! ● world cup ゴール数のポアソン分布分析 (1986 ~ 2014) Ref: https://github.com/yoheikikuta/worldcup_poisson_distrib http://www.goldmansachs.com/our-thinking/outlook/world-cup-and-economics-2014-folder/world-cup-economics-report.pdf なども面白い 6 / 133

Slide 7

Slide 7 text

分析環境の構築 ● Docker 環境を構築 Docker for Mac をインストール 以下から stable 版をインストール https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac (Androidエミュレータが干渉する可能性があるのでその場合は落とす) Memory を 4.0 GB 程度に設定して Apply & Restart ● Hello from Docker (動作チェック) $ docker run --rm hello-world ● 分析環境の構築 以下のレポジトリを clone https://github.com/cookpad/cookpad-internship-2017-summer $ cd cookpad-internship-2017-summer/ml $ bash run.sh このシェルスクリプトで環境構築が実施される 標準出力に http://0.0.0.0:8888/?token=xxxx のように表示される これをブラウザのアドレスバーにコピペすることで jupyter notebook が起動 7 / 133

Slide 8

Slide 8 text

Docker コンテナでの作業 ● Docker とは何かについては詳しくは説明しない ホストマシンのプロセスとしてコンテナと呼ばれる仮想化環境を構築 コンテナプロセス起動時に必要な docker image というファイルシステムを使用 Dockerfile というファイルで docker image を build 機械学習という観点では Dockerfile があれば分析環境が容易に再現できるため有用 興味のある人は https://www.docker.com/what-docker などを参考のこと ● コンテナを停止する (前頁の run.sh を走らせた後の話) jupyter notebook を立ち上げている terminal で Ctrl + c をするとコンテナが停止 ● コンテナを再起動して jupyter notebook を使う コンテナを再起動 $ docker start cookpad-intern-ml jupyter notebook のプロセスに対応する URL を取得 $ docker exec -it cookpad-intern-ml jupyter notebook list これで http://0.0.0.0:8888/?token=xxxx が取得できるので、ブラウザにコピペ ● 詳しいチートシートは例えば以下 https://github.com/wsargent/docker-cheat-sheet 8 / 133

Slide 9

Slide 9 text

【講義】 機械学習とは何か? 9 / 133

Slide 10

Slide 10 text

機械学習の事例 10 / 133

Slide 11

Slide 11 text

事例:画像認識 Ref: https://arxiv.org/abs/1112.6209 大量の画像(画像に何が写っているかという情報なし)を学習することで、人の顔や猫の顔 に特に強く反応するノードが自動的に出現した 11 / 133

Slide 12

Slide 12 text

事例:質問応答 Ref: http://watson2016.com/ 自然言語で出題された質問に対し、データから答えを推測する様々なアルゴリズムを駆使 し、クイズ番組で人間を上回った 12 / 133

Slide 13

Slide 13 text

事例:機械翻訳 Ref: http://arxiv.org/pdf/1707.01310v1 Ref: https://github.com/yoheikikuta/arxiv_summary_translation In typical reinforcement learning (RL), the environment is assumed given and the goal of the learning is to identify an optimal policy for the agent taking actions through its interactions with the environment. In this paper, we extend this setting by considering the environment is not given, but controllable and learnable through its interaction with the agent at the same time. Theoretically, we find a dual Markov decision process (MDP) w.r.t. the environment to that w.r.t. the agent, and solving the dual MDP-policy pair yields a policy gradient solution to optimizing the parametrized environment. Furthermore, environments with non-differentiable parameters are addressed by a proposed general generative framework. Experiments on a Maze generation task show the effectiveness of generating diverse and challenging Mazes against agents with various settings. 典型的な強化学習( RL)では、環境が与えられていると仮定され、学習の目標は、エージェントが環境との相互作用を通じて行動をとるための 最適なポリシーを特定することである。本論文では、環境を与えないでエージェントとの対話を通じて同時に制御可能で学習可能であることを 考慮して、この設定を拡張する。理論的には、エージェントに対する環境ではマルコフ決定プロセス( MDP)が2つあり、デュアルMDPポリシー ペアを解決すると、パラメータ化された環境を最適化するためのポリシー勾配ソリューションが得られます。さらに、非微分可能なパラメータを 有する環境は、提案された一般的な生成フレームワークによって対処される。迷路生成タスクの実験では、さまざまな設定のエージェントに対 して多様で挑戦的な迷路を生成する効果が示されます。 代表的な強化学習( RL)で、環境が与えられたと学習の目標は、環境との相互作用を介して行動を取るエージェントに最適なポリシーを識別す ることであると仮定されます。本稿では、環境を考慮して、この設定を拡張するには与えられていないが、同時に薬剤との相互作用を介して制 御可能と学習可能。理論的には、我々は二重のマルコフ決定過程( MDP)はそのWRTエージェントに環境を WRT見つけ、およびデュアル MDP-ポリシーのペアを解くと、パラメータ化環境を最適化するための方策勾配ソリューションを生み出します。また、非微分パラメータを持つ環 境では、提案された一般的な生成的枠組みによって対処されます。迷路生成タスクの実験は、様々な設定を持つエージェントに対して多様か つ挑戦的な迷路を生成するの有効性を示します。 元の文章 従来手法での翻訳 ニューラル機械翻訳での翻訳 与えられた自然言語を他の自然言語に翻訳することも、対となる文章を大量に学習すること で、人間に近いレベルの翻訳ができるようになってきている 13 / 133

Slide 14

Slide 14 text

事例:ゲーム操作 Ref: https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf 碁のような全ての場合を尽くすのが原理的に不可能な複雑なゲームにおいても、機械同士 を戦わせるなどの学習を駆使して人間のトッププロに勝てるほどになった 14 / 133

Slide 15

Slide 15 text

事例:電力節約 Ref: https://deepmind.com/blog/deepmind-ai-reduces-google-data-centre-cooling-bill-40/ 機械学習を駆使して電力消費量を抑えるように効率的にデータセンターの冷却を実施するこ とで、従来と比べて 40% ものコスト削減に成功した 15 / 133

Slide 16

Slide 16 text

事例:画像生成 Ref: https://arxiv.org/abs/1703.10717 ランダムなノイズから画像を生成する機械と画像が生成されたものか本物かを判断する機 械とを対立的構造で学習をすることで、機械で現実的な画像を生成可能となった 16 / 133

Slide 17

Slide 17 text

事例:自動着色 Ref: https://github.com/pfnet/PaintsChainer Ref: https://en.wikipedia.org/wiki/Erwin_Schr%C3%B6dinger 前頁と同様の構造で学習することで、白黒画像を自動的に着色できるようにもなる (下の例は本来は線画を着色するサービスに白黒写真を適用している) 17 / 133

Slide 18

Slide 18 text

事例:行動学習 Ref: https://www.youtube.com/watch?v=hx_bgoTF7bs 機械に明示的な行動をプログラムせずとも、行動の結果として報酬が与えられるという条件 下で学習をすることで、適切な行動を選択できるようになる 18 / 133

Slide 19

Slide 19 text

19 / 133

Slide 20

Slide 20 text

疑問 そもそも機械学習とは何だろうか? 20 / 133

Slide 21

Slide 21 text

疑問 機械学習は確かに強力な事例が満載だが... ● 機械学習の定義は? ● 以下の用語の違いを説明できるか? ○ 機械学習(Machine Learning: ML) ○ 人工知能(Artificail Intelligence: AI) ○ ディープラーニング(Deep Learning: DL) ● 機械学習で扱える問題にはどのようなものがあるのか? 21 / 133

Slide 22

Slide 22 text

機械学習の定義 22 / 133

Slide 23

Slide 23 text

機械学習の定義 Def: A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E. Ref: Mitchell, T. (1997). Machine Learning. McGraw Hill. p. 2 23 / 133

Slide 24

Slide 24 text

AI, ML, DL, その他 包含関係(以下の図で面積や位置は何も反映していない) Computer Science AI (Artificial Intelligence) ML (Machine Learning) DL (Deep Learning) Statistics 24 / 133

Slide 25

Slide 25 text

AI, ML, DL, その他 Ref: https://www.nisargdave.com/single-post/2016/10/05/Multidisciplinary-Data-Science Ref: http://blogs.sas.com/content/subconsciousmusings/2014/08/22/looking-backwards-looking-forwards-sas-data-mining-and-machine-learning/ 25 / 133

Slide 26

Slide 26 text

機械学習が対象とする問題 26 / 133

Slide 27

Slide 27 text

機械学習で扱える問題 機械学習を用いることで、以下のような問題を解くことができる ● Regression (回帰) ● Time Series Analysis (時系列分析) ● Classification (分類) ● Learning to Rank (ランキング学習) ● Game Play and Robot Action (ゲームやロボットの自動操作) ● Pattern Mining (パターン発見) ● Clustering (クラスタリング) ● Optimization (最適化) ● Generation (生成) ● ... 27 / 133

Slide 28

Slide 28 text

機械学習で扱える問題 ● Regression (回帰) 説明変数と目的変数の回帰を推定・予測 ex.) 店舗の売上予測、広告費用の効果予測 目的変数 説明変数 28 / 133

Slide 29

Slide 29 text

機械学習で扱える問題 ● Time Series Analysis (時系列分析) 回帰分析と似ているが時間発展を陽に考慮 ex.) 株価予測、電力消費量予測 目的変数 時間 29 / 133

Slide 30

Slide 30 text

機械学習で扱える問題 ● Learning to Rank (ランキング学習) 与えられたアイテムに対して順位を推定・予測 ex.) 情報検索 A B C A A B B C C A B B B A C C C A Score(A) Score(B) Score(C) f(A) > f(B) f(A) > f(C) f(B) > f(C) P A,B,C P B,A,C P B,C,A > > > > Ranking: A → B → C 30 / 133 . . .

Slide 31

Slide 31 text

機械学習で扱える問題 ● Classification (分類) どのデータ点がどのクラスに所属するかを推定・予測 ex.) 料理・非料理分類、スパム判定 : class1 : class2 : class3 変数1 変数2 31 / 133

Slide 32

Slide 32 text

機械学習で扱える問題 ● Game Play and Robot action (ゲームやロボットの自動操作) 明示的なルールを与えずにゲームやロボットの操作を学習 ex.) 将棋や碁を打つ、ロボットがネジを締める 32 / 133

Slide 33

Slide 33 text

機械学習で扱える問題 ● Pattern Mining (パターン発見) データの中に存在するパターンを発見 ex.) 共起情報に基づく推薦、ユーザの典型的行動パターンの発見 33 / 133

Slide 34

Slide 34 text

機械学習で扱える問題 ● Clustering (クラスタリング) データをいくつかの特定の塊にグルーピング ex.) 顧客セグメント、ニュース記事を似ているものにまとめる ∂ ∂ 34 / 133

Slide 35

Slide 35 text

機械学習で扱える問題 ∂ ∂ ∂ ∂ ● Clustering (クラスタリング) データをいくつかの特定の塊にグルーピング ex.) 顧客セグメント、ニュース記事を似ているものにまとめる 35 / 133

Slide 36

Slide 36 text

機械学習で扱える問題 ● Optimization (最適化) ある条件下での最適(もしくは良い)解を発見 ex.) 無料道路のみを使うカーナビの経路探索 36 / 133

Slide 37

Slide 37 text

機械学習で扱える問題 ● Generation (生成) 学習したモデルに基づきデータを生成 ex.) 画像生成、自動着色、スタイル変換 Ref: https://github.com/artcg/BEGAN f θ (z) p(z) ^ 37 / 133

Slide 38

Slide 38 text

機械学習の学習アルゴリズム 38 / 133

Slide 39

Slide 39 text

学習アルゴリズム 機械学習の学習アルゴリズムは以下の4つに大別される ● Supervised learning (教師あり学習) 我々がターゲットとする問題の 80% がこれに相当 ● Unsupervised learning (教師なし学習) 我々がターゲットとする問題の 15% がこれに相当 ● Semi-supervised learning (半教師あり学習) ● Reinforcement learning (強化学習) 39 / 133

Slide 40

Slide 40 text

学習アルゴリズム ● Supervised Learning (教師あり学習) 目的関数 J(予測, 答え) を最小化するようにモデルを学習 Ref: http://yann.lecun.com/exdb/mnist/ 学習過程 Predictor Predictor’ Predictor’’ 3 1 4 5 7 4 予測 答え 予測と答えを比較してフィードバック 40 / 133

Slide 41

Slide 41 text

学習アルゴリズム ● Unsupervised Learning (教師なし学習) ある与えられた指標に基づきデータ構造を推定 学習 F 1 > F 2 > F 3 ある指標 データを4つのグループに分けるということは所与の条件として、 定めた指標を小さくするように学習をしていくことできれいに分けられる 41 / 133

Slide 42

Slide 42 text

学習アルゴリズム ● Semisupervised Learning (半教師あり学習) 一部答えのないデータも活用する教師あり学習 No color : unlabeled ラベルがついていない データを使わずに 分類をした結果 42 / 133

Slide 43

Slide 43 text

学習アルゴリズム ● Semisupervised Learning (半教師あり学習) 一部答えのないデータも活用する教師あり学習 何らかの方法で ラベルが付与できれば 分類境界が変更 43 / 133

Slide 44

Slide 44 text

学習アルゴリズム ● Reinforcement Learning (強化学習) 報酬を最大化するようにエージェントが自動的に行動を学習 44 / 133

Slide 45

Slide 45 text

機械学習をどう活用するか 45 / 133

Slide 46

Slide 46 text

機械学習の活用 ● (機械学習に関する幾許かの知識) ● 問題の設計 ● データの収集 ● モデルの学習 ● モデルの評価 ● モデルをプロダクトにデプロイ ( もしくは問題を諦める ) ● 継続してモデルを改善 様々なトライ&エラー 46 / 133

Slide 47

Slide 47 text

機械学習の活用 ● (機械学習に関する幾許かの知識) 無からは無しか生まれない 発展著しい機械学習の話題をキャッチアップする必要がある 情報源の例: ○ Reddit machine learning (機械学習に関する話題の掲示板) https://www.reddit.com/r/MachineLearning/ ○ GitXiv (論文と実装がセットで紹介) http://www.gitxiv.com/ ○ arXiv (最先端の論文) https://arxiv.org/ ○ SNS (主にtwitter) オススメアカウント: https://twitter.com/yohei_kikuta 47 / 133

Slide 48

Slide 48 text

機械学習の活用 ● 問題の設計 興味ある問題に機械学習を適用するために最重要となる部分 ○ 基本的には一般的なプロジェクトと同様 ○ 重要になるのは成功が保証されていないという観点 ■ 様々な場合で試していくつかが成功すれば御の字 ■ 進捗共有の方法を設定(issue や notebook のまとめ方など) ■ いつ諦めるのかという期限を設ける ○ 機械学習の役割を同定 ■ モデルの入力 ■ モデルの出力 ○ 可能な限り機械学習に依存する部分を切り出す ■ 依存性の切り分け、効果的な役割分担 48 / 133

Slide 49

Slide 49 text

機械学習の活用 ● データの収集 機械学習のモデルにとってはデータ量こそが最重要 “Shut up and collect more data” 49 / 133

Slide 50

Slide 50 text

機械学習の活用 ● モデルの学習 モデルとは入力空間を出力空間に写像する関数 f θ : x → y where x ∈ input, y ∈ output and θ is parameter パラメタ θ は以下のようにして定める ○ 教師あり学習の場合はモデル出力と答えの差を最小化するもの ○ 教師なし学習の場合は人間の感覚で決定 モデルは非常に多様なものだが、まず次のものから試すとよい ○ 構造化データには Xgboost(もしくは LightGBM) https://github.com/dmlc/xgboost https://github.com/Microsoft/LightGBM ○ 画像やテキストのような非構造化データには Deep Learning https://github.com/fchollet/keras https://github.com/tensorflow/tensorflow 50 / 133

Slide 51

Slide 51 text

機械学習の活用 ● モデルの評価 “モデルがどれくらい優れているか” を定量的に定める必要有 評価関数自体が研究対象になるほど深いものだが最低限は以下 (滑らかな関数はモデルの学習時に用いられることが多い) ○ 回帰の場合 平均二乗誤差 (1/n) Σ i ( f(x i ) - y answer, i )2 ○ 分類の場合 Accuracy : (TP+TN) / (TP+FP+FN+TN) Precision : TP / (TP+FP) Recall : TP / (TP+FN) Area Under the Curve (AUC): https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve Multiclass logloss: https://www.kaggle.com/wiki/Metrics 教師なしの場合は人間の感覚で決定することも多い ex.) 分けられたクラスタが感覚とマッチしているか Binary classification answer Positive Negative model Positive TP FP Negative FN TN 51 / 133

Slide 52

Slide 52 text

機械学習の活用 ● モデルをプロダクトにデプロイ ( もしくは問題を諦める ) 自信満々のモデルをデプロイして成果を出そう! 問題を諦めるという意思決定も時には重要 ● 継続してモデルを改善 自信満々のモデルは往々にして大した成果は出ない そこで継続的にモデルを改善する仕組みが重要となる 更にデータは dynamical な対象なのでアップデートが必要 モデル自体も次々と新しく強力なものが登場するのでそれを試す 52 / 133

Slide 53

Slide 53 text

機械学習の形式的な議論 53 / 133

Slide 54

Slide 54 text

機械学習の形式的な議論 ● No Free Lunch Theorem 事前知識なしには全てのモデルの平均性能は同じになる → 問題に応じた事前知識やモデルの設定が重要 54 / 133

Slide 55

Slide 55 text

機械学習の形式的な議論 ● Ugly duckling theorem 全特徴量を同等に扱うと任意の2つの対象の類似度が同じになる → 問題に応じた特徴量の設計が必要 55 / 133

Slide 56

Slide 56 text

機械学習を学ぶための情報 56 / 133

Slide 57

Slide 57 text

“経験者”への最短経路 ● 使用言語 ○ Python (https://www.python.org/) ● 分析環境 ○ Docker (https://www.docker.com/) ○ cpu & gpu (nvidia-docker - https://github.com/NVIDIA/nvidia-docker) ○ Jupyter notebook ( http://jupyter.org/ ) ● データの取扱 ○ Numpy (http://www.numpy.org/), Pandas (http://pandas.pydata.org/) ○ (データの可視化) ■ seaborn (https://seaborn.pydata.org/) ■ Bokeh (http://bokeh.pydata.org/en/latest/) ● 構造化データの分析 ○ Xgboost (https://xgboost.readthedocs.io/en/latest/) もしくは LightGBM (https://github.com/Microsoft/LightGBM) ○ regression, classification, learning to rank ● 画像やテキストのような非構造化データの分析 ○ Deep Learning using Keras (https://keras.io/) with TensorFlow backend 57 / 133

Slide 58

Slide 58 text

機械学習を学ぶために ● 書籍 ○ フリーライブラリで学ぶ機械学習入門: THE BEST ML BOOK IN THE WORLD(冗談) http://www.shuwasystem.co.jp/products/7980html/4961.html ○ データ解析のための統計モデリング入門: 統計モデリングの基礎、Rを使用 https://www.iwanami.co.jp/book/b257893.html ○ はじめてのパターン認識: 様々な機械学習モデルの数学的基礎 http://www.morikita.co.jp/books/book/2235 ○ Python Machine Learning: 機械学習の基礎を豊富なPythonコードと共に学べる https://www.packtpub.com/big-data-and-business-intelligence/python-machine-learning https://github.com/rasbt/python-machine-learning-book (support page) ○ Introduction to Machine Learning with Python: Pythonを用いた機械学習を基礎から学べる http://shop.oreilly.com/product/0636920030515.do https://github.com/amueller/introduction_to_ml_with_python (support page) ○ Hands-On Machine Learning With Scikit-Learn and TensorFlow: DLを含む様々なモデルを試せる http://shop.oreilly.com/product/0636920052289.do https://github.com/ageron/handson-ml (support page) ○ Machine Learning: 機械学習に関する形式的な議論 https://www.mhprofessional.com/9780070428072-usa-machine-learning ○ Pattern Recognition and Machine Learning: 機械学習(特にベイジアン)を理論的に学ぶための傑作 http://www.springer.com/br/book/9780387310732 最近はサポートページが充実しているものも多いので、まず始めるにはこれらから着手するのが良い 数学的にかっちりした議論に興味がある人はもう少し古典的な統計の本を読むのが良さそう (講師は現代的な機械学習を数学的にきちんと定式化して議論するという本を知らない) 58 / 133

Slide 59

Slide 59 text

機械学習を学ぶために ● ウェブ情報 ○ Stanford Computer Science lectures: スタンフォード大の Computer Science の講義は質が高い http://exploredegrees.stanford.edu/schoolofengineering/computerscience/ ■ CS229: machine learning http://cs229.stanford.edu/materials.html ■ CS224n: natural language processing with DL http://web.stanford.edu/class/cs224n/ ■ CS231n: convolutional neural networks for visual recognition (2017年の講義も20170811に公開) http://cs231n.stanford.edu/ ○ ML tutorials using the jupyter notebook: notebook で完結する形でチュートリアルが実施できる ■ jupyter notebook: jupyter notebook の基本的な使い方 https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks#introductory-tutorials ■ Data-Analysis-and-Machine-Learning-Projects: 一つの notebook でよくまとめられている https://github.com/rhiever/Data-Analysis-and-Machine-Learning-Projects/blob/master/example-data-scie nce-notebook/Example%20Machine%20Learning%20Notebook.ipynb ■ LearnDataScience: 基本的な機械学習のモデルを jupyetr notebook で学べる https://github.com/nborwankar/LearnDataScience ■ jupyter notebooks: 主要なライブラリの使い方などが例を通じて学べる https://github.com/jdwittenauer/ipython-notebooks ○ Tutorials of libraries: scikit-learn や pandas のチュートリアルは機械学習を学ぶ上で有用 ■ scikit-learn http://scikit-learn.org/stable/tutorial/index.html ■ pandas https://pandas.pydata.org/pandas-docs/stable/tutorials.html 59 / 133

Slide 60

Slide 60 text

機械学習を学ぶために ● Online courses, Video lectures ○ Cousera Machine Learning: Andrew Ng 氏による有名な講義。Matlab (Octave) を用いた課題有 https://www.coursera.org/learn/machine-learning/ ○ Applied Data Science with Python Specialization: Pythonを使った機械学習のコース。20170811の時点で ⅘ コースが公開済 https://www.coursera.org/specializations/data-science-python ○ DataCamp Introduction to Machine Learning: Rを使った機械学習の導入のコース https://www.datacamp.com/courses/introduction-to-machine-learning-with-r ○ Caltech machine learning lecture: Lectures of Caltech ML course https://www.youtube.com/playlist?list=PLD63A284B7615313A ○ Stanford Machine Learning lecture: Lectures of Stanford ML course https://www.youtube.com/playlist?list=PLA89DCFA6ADACE599 ○ MIT Machine Learning lecture: Lectures of MIT ML course https://www.youtube.com/playlist?list=PLnvKubj2-I2LhIibS8TOGC42xsD3-liux オンラインコースや講義のウェブ公開などが充実しているので、レベルに合ったものを選ぶのが良い 特に大学の公開講義は内容がしっかりしてるので、じっくり勉強したい場合はとても有用 60 / 133

Slide 61

Slide 61 text

機械学習を学ぶために ● See more ○ Awesome machine learning: 機械学習関連の優れたレポジトリのリスト https://github.com/josephmisiti/awesome-machine-learning ○ Cousera machine learning https://www.coursera.org/courses?languages=en&query=machine+learning ○ Udacity machine learning https://www.udacity.com/courses/machine-learning ○ DataCamp machine learning https://www.datacamp.com/courses/topic:machine_learning ● Researches ○ arXiv: 最新の論文がチェックできる。昨今は Computer Science 界隈でも利用者が増えている https://arxiv.org/ ○ gitxiv: arXiv + GitHub のようなサイトで、論文とそれを実装したレポジトリがセットで公開 http://www.gitxiv.com/ ○ Reddit machine learning: 最先端の論文の議論もなされる掲示板 https://www.reddit.com/r/MachineLearning/ ● Competitions ○ kaggle: データ分析のコンペティションをホストしている。腕磨きに最適 https://www.kaggle.com/ ○ KDD (http://www.kdd.org/kdd2017/) のような学会でも付随してデータ分析のコンペティションが開催 ウェブに繋がりさえすれば、最先端の研究や実装、機械学習の最新テクニックを学ぶ環境は整っている 61 / 133

Slide 62

Slide 62 text

代表的な学会 種類 国際学会 国内学会 理論 Neural Information Processing Systems (NIPS): https://nips.cc/ Information-Based Induction Sciences and Machine Learning (IBISML): http://ibisml.org/ データマイニング Advances in Knowledge Discovery and Data Mining (KDD): http://www.kdd.org/kdd2017/ レコメンド Recommender Systems (RECSYS): https://recsys.acm.org/ 画像分析 Conference on Computer Vision and Pattern Recognition (CVPR): http://cvpr2017.thecvf.com/ Computer Vision and Image Media (CVIM): http://cvim.ipsj.or.jp/ Meeting on Image Recognition and Understanding (MIRU): http://cvim.ipsj.or.jp/MIRU2017/ 自然言語処理 Association for Computational Linguistics (ACL): http://acl2017.org/ The Association for Natural Language Processing http://www.anlp.jp/ 人工知能 International Joint Conference on Artificial Intelligence (IJCAI): https://ijcai-17.org/ The Japanese Society For Artificial Intelligence (JSAI): https://www.ai-gakkai.or.jp/ この他にも学会はたくさんある e.g., http://lipn.univ-paris13.fr/~bennani/CSRank.html 62 / 133

Slide 63

Slide 63 text

【実習】 機械学習初歩 63 / 133

Slide 64

Slide 64 text

分析の準備 ● 分析環境の構築 (まだしてなければ) https://github.com/cookpad/cookpad-internship-2017-summer を clone $ cd cookpad-internship-2017-summer/ml $ bash run.sh このシェルスクリプトでデータ準備から環境構築までを実施 標準出力に http://0.0.0.0:8888/?token=xxxx のように表示される これをブラウザのアドレスバーにコピペすることで jupyter notebook が起動 ● /notebooks 以下に分析用の notebook が格納されていて、ここでは以下を使う ・/notebooks/basic.ipynb ・/notebooks/recipe_classification_text.ipynb 64 / 133

Slide 65

Slide 65 text

【講義】 ディープラーニング (画像分析) 65 / 133

Slide 66

Slide 66 text

はじめに Deep Learning (DL) は応用範囲が広いため全てをカバーするのは困難 ● 今日話すこと ○ DLの定義 ○ Convolutional Neural Networks (CNN) の基礎と最近の発展 ○ CNNで何ができるか ● 今日話さないこと ○ DLの歴史 ○ CNN以外のモデル(Recurrent Neural Networks など) ○ 様々なDLライブラリの具体的な使い方や比較 66 / 133

Slide 67

Slide 67 text

ディープラーニングの定義 67 / 133

Slide 68

Slide 68 text

DLの定義 Deep Learning 隠れ層が2層以上の Neural Networks (NN) (機械) 学習 過去10年位で適切に重みを 学習するために様々な要素が進展 ● 大量のデータ ● Rectified Linear Unit (ReLU) ● 最適化手法の発展 ● ドロップアウトやバッチ正規化 ● 事前学習 . . . . . . . . . . . . 68 / 133

Slide 69

Slide 69 text

NNとは何か? NNは生物の脳を模倣したモデルの一種 (最近のモデルは脳とは乖離しているので Artificial NN とも呼ぶ) Ref: http://www.bordalierinstitute.com/target1.html 69 / 133

Slide 70

Slide 70 text

NNとは何か? 基本的な構成要素はパーセプトロン 和 + 閾値 重み i 重み 1 重み n 入力 n 入力 i 入力 1 出力 閾値 入力信号 の和 活性化 関数 sigmoid func. step func. ● 構造 単純な入力の線形結合と活性化関数 ● Pros. 単純ではあるが ”学習可能”(データから重みを更新可) ● Cons. 線形分離不可能問題を解くことができない . . . . . . 70 / 133

Slide 71

Slide 71 text

NNとは何か Multi Layer Perceptron (MLP) はパーセプトロンを積み重ねたもの 隠れ層 重み ● 構造 Hierarchically stacked perceptrons ● Pros. 十分な数のノードがあれば任意の関数を近似可能(万能性定理) 層を積み重ねることで入力と出力の複雑な関係性を表現可能 ● Cons. パラメタ数が多くなるため学習が難しい 入力層 出力層 . . . . . . . . . . . . 71 / 133

Slide 72

Slide 72 text

可視化 http://playground.tensorflow.org/ を用いたデモ 72 / 133

Slide 73

Slide 73 text

Back propagation Back propagation はニューラルネットワークの学習方法の一種 入力層 出力層 予測と答えの差を最小化するために誤差信号を出力層から伝播 伝播する方向は予測をする際の過程と逆方向 → 入力層に近い部分では信号が弱くなりがち(勾配消失問題) prediction back propagation *線の太さは信号の強さを表現 . . . . . . . . . . . . 73 / 133

Slide 74

Slide 74 text

勾配消失問題の解決 ● 大量のデータ データサイズは性能向上に重要 (https://arxiv.org/abs/1707.02968) GPUにより大量のデータ処理も可能になっている ● Rectified Linear Unit (ReLU) ReLU のみが新しい発見だと主張する人もいる 閾値以上で一定の勾配を返す関数なので消失を防げる ● 洗練された最適化手法 SGD (with momentum), RMSprop, Adam, ... optimizer自体も学習 (https://arxiv.org/abs/1606.04474) ● ドロップアウトやバッチ正規化 汎化性能を向上させるための様々な発展 DLの汎化性能は最近の話題の1つ (https://arxiv.org/abs/1611.03530) ● 事前学習 教師なし事前学習は自然言語処理などで使用 教師あり事前学習はImageNetで学習したものを画像分析でよく使用 一定 勾配 74 / 133

Slide 75

Slide 75 text

DLの定義 Deep Learning 隠れ層が2層以上の Neural Networks (NN) (機械) 学習 過去10年位で適切に重みを 学習するために様々な要素が進展 ● 大量のデータ ● Rectified Linear Unit (ReLU) ● 最適化手法の発展 ● ドロップアウトやバッチ正規化 ● 事前学習 . . . . . . . . . . . . 75 / 133

Slide 76

Slide 76 text

ディープラーニングの特徴 76 / 133

Slide 77

Slide 77 text

DLの特徴 ● 大量のパラメタを大量のデータを用いて学習 (パラメタの数)>(データの数)となる場合も多い なぜこれでうまくいくのかということは現在も盛んに議論 ● 分散表現 高い表現能力 ● 階層的かつ自動的な特徴量の抽出 単純なものから複雑なものへと段階的に特徴量を抽出 人力で特徴量を作らなくてもよいというパラダイムシフト ● 特定のタスクに関して非常に高い性能 ある種のタスクに関しては人間よりも高い性能を発揮 77 / 133

Slide 78

Slide 78 text

DLの特徴 ● 大量のパラメタを大量のデータを用いて学習 (パラメタの数)>(データの数)となる場合も多い Ref: https://arxiv.org/abs/1512.03385 ~ 20,000,000 !!! 78 / 133

Slide 79

Slide 79 text

DLの特徴 ● 分散表現 モデルの表現力(データ空間を分割する能力)が指数的に上昇 ex.) 3次元のバイナリ変数の場合 シンボリック表現 (1,1,1) 分散表現 (0,0,1) (0,1,1) (1,0,1) (1,0,0) (0,1,0) (1,1,0) i j k i,j,k = {0,1} 3 patterns 23 patterns 79 / 133

Slide 80

Slide 80 text

. . . DLの特徴 ● 階層的かつ自動的な特徴量の抽出 単純なものから複雑なものへと段階的に特徴量を抽出 複雑なオブジェクト(顔)は単純なパーツ(目,鼻,...)から構成 Ref: http://www.cs.toronto.edu/~rgrosse/icml09-cdbn.pdf . . . . . . . . . 80 / 133

Slide 81

Slide 81 text

DLの特徴 ● 階層的かつ自動的な特徴量の抽出 Ref: http://rinuboney.github.io/2015/10/18/theoretical-motivations-deep-learning.html 従来手法: 専門家が人手で 特徴量を作成 DL: 階層的に自動的に 特徴量を作成 81 / 133

Slide 82

Slide 82 text

DLの特徴 ● 特定のタスクに関して非常に高い性能 画像分析:ImageNet Large Scale Visual Recognition Competition Ref: http://www.image-net.org/challenges/LSVRC/ 82 / 133

Slide 83

Slide 83 text

DLの特徴 ● 特定のタスクに関して非常に高い性能 音声認識:ノイズのない状況では人間を上回る性能 Ref: https://arxiv.org/abs/1512.02595 83 / 133

Slide 84

Slide 84 text

DLの特徴 ● 特定のタスクに関して非常に高い性能 翻訳:人間に比肩する能力 Ref: https://research.googleblog.com/2016/09/a-neural-network-for-machine.html https://arxiv.org/pdf/1609.08144.pdf 84 / 133

Slide 85

Slide 85 text

DLの特徴 ● 特定のタスクに関して非常に高い性能 ゲーム操作:多くのゲームで人間を上回る性能 Ref: https://www.nature.com/nature/journal/v518/n7540/full/nature14236.html 85 / 133

Slide 86

Slide 86 text

具体的なモデル Convolutional Neural Networks 86 / 133

Slide 87

Slide 87 text

具体的なDLのモデル 高い性能を発揮するには目的に応じた特別な構成のモデルが必要 ● Convolutional Neural Network (CNN) ○ 画像分析でよく使われるモデル ○ 画像中のオブジェクトに対する幾何学的変換に対してロバスト ○ ex.) 画像中の異なる場所に位置する同一のオブジェクトを認識 ● Recurrent Neural Network (RNN) ○ 自然言語処理でよく使われるモデル ○ 時間順序性のあるデータに対して有用 ○ ex.) “私” の次に “が” や “は” が来やすいことを予測可能 87 / 133

Slide 88

Slide 88 text

具体的なDLのモデル 高い性能を発揮するには目的に応じた特別な構成のモデルが必要 今回は CNN のみを取り扱う ● Convolutional Neural Network (CNN) ○ 画像分析でよく使われるモデル ○ 画像中のオブジェクトに対する幾何学的変換に対してロバスト ○ ex.) 画像中の異なる場所に位置する同一のオブジェクトを認識 ● Recurrent Neural Network (RNN) ○ 自然言語処理でよく使われるモデル ○ 時間順序性のあるデータに対して有用 ○ ex.) “私” の次に “が” や “は” が来やすいことを予測可能 88 / 133

Slide 89

Slide 89 text

DLとCNNの論文数推移 Ref: https://arxiv.org/ on 20170810 *これは非常に限定的なカウントであることに注意 89 / 133

Slide 90

Slide 90 text

CNNのモチベーション 画像分析の場合を例に考える 異なる位置にある同一のオブジェクトは同じものであると認識したい 人間の目には同じオブジェクトが写っているがデータとしては異なる このような状況をうまく取り扱えるモデルを構築したい → 並進移動や回転やスケーリング等の幾何学的変換に対してロバスト 同じオブジェクトだが 異なる位置に存在 90 / 133

Slide 91

Slide 91 text

CNNの基礎 AlexNet (https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) Convolution (H,W,C) → (H’,W’,C’) conv. の後に ReLU を適用 Pooling (H,W,C) → (H’,W’,C) Dense (Fully Connected) (D) → (D’) dense の前に特徴量を一次 元化 (H,W,C) → (D) データの次元は次のように表現: (H,W,C) = (Height, Width, Channel) Softmax (D) → (D) 確率値を 返す関数 91 / 133

Slide 92

Slide 92 text

Convolution Convolution はある種の特徴量抽出として機能 Convolution それ自体は単なる数学的演算で行列の積として表現可 ex.) 3*3 convolution の演算 1 2 1 2 4 2 1 2 1 * = 1 2 1 2 4 2 1 2 1 1 2 1 2 4 2 1 2 1 1 2 1 2 4 2 1 2 1 92 / 133

Slide 93

Slide 93 text

Convolution Convolution はある種の特徴量抽出として機能 Convolution それ自体は単なる数学的演算で行列の積として表現可 ex.) Sobel フィルタを用いたエッジ検出 従来手法ではフィルタの重みを人手で設計する必要があったが、 CNN では重みは back propagation で “学習” することが可能 ● 複数チャネルで様々な特徴を自動的に抽出可能 ただし1つのチャネルに関しては同一の重みを使用 (shared weight) ● 並進移動不変性とパラメタ数削減が実現 * -1 0 1 -2 0 2 -1 0 1 -1 -2 -1 0 0 0 1 2 1 93 / 133 自乗和平方根

Slide 94

Slide 94 text

Pooling Pooling は feature map を圧縮する働きを担う 最もよく使われる max pooling は与えられた領域の最大値を取得 (その他にも average pooling などがある ) 1 2 9 2 -2 5 4 2 4 3 -3 -1 4 3 0 1 この演算によって以下が実現 ● “小さな” 幾何学的変換に対してロバストになる 層を積み重ねることで不変性は強固になる ● feature map のサイズを削減 2*2 filters with stride 2 5 9 4 1 94 / 133

Slide 95

Slide 95 text

Dense Dense layer は元々の MLP における層と同じで全てのノードを接続 Dense layer は Fully Connected (FC) layer とも呼ばれる 現代的な CNN では出力層に近い部分でのみ使用されることが多い 重みのパラメタ数が dim(in)*dim(out) となるため大きくなりがち → パラメタ数を減らすためにも多用はしたくない 95 / 133 . . . . . .

Slide 96

Slide 96 text

Softmax Softmax は次で定義される関数: f(x i ) = exp(x i ) / Σ j exp(x j ) この関数は [0,1] の実数値を返すもので確率値として解釈可能 f(x i ) ∈ [0,1] Σ i f(x i ) = 1 この softmax を出力とすることで DL を classifier として扱える (multiclass では softmax を使わずに sigmoid を使ったりもする) 96 / 133

Slide 97

Slide 97 text

CNNの発展 97 / 133

Slide 98

Slide 98 text

1980 Neocognitoron: http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf 1998 LeNet-5: http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf 2012 AlexNet: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks 2013 Network in Network: https://arxiv.org/abs/1312.4400 2014 VGG: https://arxiv.org/abs/1409.1556 2015 Inception(V3): https://arxiv.org/abs/1512.00567 2015 ResNet: https://arxiv.org/abs/1512.03385 2016 SqueezeNet: https://arxiv.org/abs/1602.07360 2016 ENet: https://arxiv.org/abs/1606.02147 2016 Densely Connected Convolutional Networks: https://arxiv.org/abs/1608.06993 2017 Deep Complex Networks: https://arxiv.org/abs/1705.09792 CNNの進化 98 / 133

Slide 99

Slide 99 text

Neocognitron ● CNNのプロトタイプ CNNの基本的な要素 を数多く含んでいる ● 階層的な構造 ○ S-cells (convolution) 特徴抽出 ○ C-cells (avg. pooling) 変換に対する不変性 ● 自己組織化的な学習 back propagation ではない学習方法 Ref: http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf 99 / 133

Slide 100

Slide 100 text

LeNet-5 ● Convolution 特徴抽出 ● Subsampling (avg. pooling) 位置不変性、サイズ削減 ● 非線型性 sigmoid, tanh 2 8 -2 3 1 7 2 1 -1 2 9 2 -2 0 3 3 4.5 2 -0.5 4.25 Ref: http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf 100 / 133

Slide 101

Slide 101 text

AlexNet ● ReLU 勾配消失を防ぐ ● Max pooling avg. より高性能 ● GPU comp. 計算速度向上 ● Dropout 汎化性能向上 1 2 9 2 -2 5 4 2 4 3 -3 -1 4 3 0 1 5 9 4 1 Ref: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks 101 / 133

Slide 102

Slide 102 text

Network In Network ● MLP after conv. feature maps の効率 的組み合わせを学習 ● Global Average Pooling 1 feature map が1クラスの 出力に対応 (no dense) ● 小さなモデル 29 [MB] for ImageNet model MLP softmax Ref: https://arxiv.org/abs/1312.4400 102 / 133

Slide 103

Slide 103 text

VGG ● 基本的な構成要素を用いた深いモデル ○ convolution ○ pooling ○ activation (ReLU) ○ Dense ○ softmax ● 小さめの convolution の積み重ね ○ 3*3 spatial convolutions ● パラメタ数が非常に多い ○ 浅い層でチャネル数が多い ○ Dense layer が多い Ref: https://arxiv.org/abs/1409.1556 103 / 133

Slide 104

Slide 104 text

InceptionV3 ● Inception module ○ parallel ops. and concatenation 効率的に異なる特徴を抽出 ○ 基本的には 3*3 convolution これは VGG を踏襲 ○ 1*1 convolution チャネル数を減らして計算効率化 ● Global Average Pooling and Dense ○ 精度とモデルサイズのバランス ● 分類問題で高い性能を発揮! Ref: https://arxiv.org/abs/1512.00567 104 / 133

Slide 105

Slide 105 text

ResNet ● Residual structure ○ shortcut (by-pass) connection 勾配消失を防ぐ ○ 1*1 convolution チャネル数を減らして計算効率化 ● 非常に深いモデル ○ 全 152 layer ○ 1000 layer 以上も構築可能! Ref: https://arxiv.org/abs/1512.03385 105 / 133

Slide 106

Slide 106 text

SqueezeNet ● Fire module チャネル数を絞って計 算を効率化 ● Deep compression 重みスパース化 重み量子化 Huffman符号化 ● 小さなモデル データを 6 bit で扱え ば 0.47 [MB] Ref: https://arxiv.org/abs/1602.07360 106 / 133

Slide 107

Slide 107 text

ENet ● Realtime segmentation model ○ 浅い層での downsampling ○ 非対称な encoder-decoder 構造 ○ PReLU ○ small model ~ 1[MB] ● Encoder 部分は CNN として扱える ○ Global Max Pooling を使う input 3 × 512 × 512 encoder decoder Ref: https://arxiv.org/abs/1606.02147 107 / 133

Slide 108

Slide 108 text

● Dense block ○ 前方向の skip connections ○ 入力近くと出力近くの layer の connection を含むモデルは効率 的に学習可能とされている ● Growth rate ○ feature maps の数を制限してモ デルサイズをコントロール DenseNet Ref: https://arxiv.org/abs/1608.06993 108 / 133

Slide 109

Slide 109 text

Deep Complex Networks ● 複素構造 ○ convolution ○ batch normalization ● 複素数を使うことによる利点 ○ 生物学的 & 信号処理的側面 発火率や相対タイミングを表現可能 ○ パラメタ数的に効率的 2(depth) 分だけ実数値と比べて効率的 Ref: https://arxiv.org/abs/1705.09792 109 / 133

Slide 110

Slide 110 text

各モデルの比較 Ref: https://arxiv.org/pdf/1605.07678.pdf DenseNet-161 (k=48) SqueezeNet 110 / 133

Slide 111

Slide 111 text

CNNの具体的な応用例 111 / 133

Slide 112

Slide 112 text

Classification 一枚の画像に対してその画像がどのクラスに属するのかを分類する 112 / 133

Slide 113

Slide 113 text

Classification 画像をパッチに分割すればパッチ毎に分類をしてヒートマップを作成することも可能 113 / 133

Slide 114

Slide 114 text

Ref: https://arxiv.org/abs/1703.06870 Semantic Segmentation 画像をピクセル毎に分類してクラスごとに画像を塗りつぶす 114 / 133

Slide 115

Slide 115 text

Object detection 画像中のオブジェクトを識別して矩形で切り出し、どのクラスに属するかを分類 115 / 133

Slide 116

Slide 116 text

Style Transfer 画像を特定のスタイルに変換(下の例は色が鮮やかになるような変換) 116 / 133

Slide 117

Slide 117 text

Regression 画像をインプットにして回帰分析をする(下の例では魅力度のスコアを算出) 117 / 133

Slide 118

Slide 118 text

Ref: http://demos.algorithmia.com/colorize-photos/ Colorization 白黒の画像を自動的に着色する 118 / 133

Slide 119

Slide 119 text

Ref: http://im2recipe.csail.mit.edu/ Image to Text 画像とテキストを同じ特徴量空間に射影して対応付ける (下の例では画像をクエリとして対応するレシピのテキストを検索) 119 / 133

Slide 120

Slide 120 text

Ref: https://github.com/paucarre/tiefvision Similarity Computation 画像を低次元の特徴量化して、類似度を算出 120 / 133

Slide 121

Slide 121 text

Ref: https://arxiv.org/abs/1707.02921 Super Resolution 画像を美しく拡大する 121 / 133

Slide 122

Slide 122 text

Ref: https://arxiv.org/abs/1704.00028 Image Generation ノイズから画像を生成する 122 / 133

Slide 123

Slide 123 text

Ref: https://arxiv.org/abs/1605.03170 Pose Estimation 画像中の人の関節点を推定して姿勢を求める 123 / 133

Slide 124

Slide 124 text

画像分析の最近の話題 124 / 133

Slide 125

Slide 125 text

最近の話題 ● Adversarial training を用いた画像生成 より現実に近い画像を生成するために様々な GAN の亜種が登場 ● 各種 style transfer 様々な観点に基づき画像変換(プロ風画像に変換、昼夜変換、etc) ● DLにおける汎化性能の再考 (パラメタ数) > (データ数) となるDLの汎化性能はなぜ高いのか? ● DLの誤判別を引き起こすような adversarial perturbations DLのロバスト性の理解、人間とDLの認識の違いを理解 ● モバイルをはじめとするIoT機器への実装 MobileNetのような軽量のモデルをIoT機器へ搭載 ● Pose estimations, Video analyses, 3D analyses 単純な分類からより高度な分析へ ● ... 125 / 133

Slide 126

Slide 126 text

ディープラーニングの 各種フレームワーク 126 / 133

Slide 127

Slide 127 text

Frameworks https://github.com/tensorflow/tensorflow 66,374 32,505 https://github.com/torch/torch7 https://github.com/chainer/chainer 7,175 2,129 2,775 737 https://github.com/BVLC/caffe 19,558 11,996 https://github.com/dmlc/mxnet 10,705 3,998 https://github.com/Theano/Theano 6,753 2,258 https://github.com/Microsoft/CNTK 12,021 3,084 Framework GitHub repository Stars Forks Languages Python C++ Python Lua Python Python C++ Python, R Julia, Scala Python C++ Python C++ Features The best total ability Good RNN modeling cap. High speed Dynamical comp. graph Flexible Dynamical comp. graph Often used in img. recognition Low level treatment Imperative & Symbolic Multi platforms & devices On 2017/0810 support support support 127 / 133

Slide 128

Slide 128 text

【実習】 画像分析 128 / 133

Slide 129

Slide 129 text

分析の準備 ● 分析環境の構築 (まだしてなければ) https://github.com/cookpad/cookpad-internship-2017-summer を clone $ cd cookpad-internship-2017-summer/ml $ bash run.sh このシェルスクリプトでデータ準備から環境構築までを実施 標準出力に http://0.0.0.0:8888/?token=xxxx のように表示される これをブラウザのアドレスバーにコピペすることで jupyter notebook が起動 ● /notebooks 以下に分析用の notebook が格納されていて、ここでは以下を使用 ・/notebooks/recipe_classification_image.ipynb ・/notebooks/object_detection/object_detection.ipynb 129 / 133

Slide 130

Slide 130 text

【実習】 発展的課題への挑戦 130 / 133

Slide 131

Slide 131 text

課題リスト ● 実習で使用した notebook の末尾にある課題に挑戦 それぞれが独立した問題なので好きなものを解いてよい ● repository の advanced_challenges.md にある課題に挑戦 いくつか問題を準備したので好きなものを解いてよい ● 自分でオリジナルの課題を設定して挑戦 機械学習に関連することならばどんなものでもよい 131 / 133

Slide 132

Slide 132 text

まとめ 132 / 133

Slide 133

Slide 133 text

まとめ ● 機械学習の理解 機械学習の定義とどのような場面で使うことができるかを理解 ● 機械学習の初歩を理解する実習 Xgboost を用いたテキストデータでのレシピ分類を実装 ● ディープラーニングの基礎を理解 画像分析で使われる CNN の基礎と最近の発展を理解 ● 画像分析の実習 Keras with TensorFlow backend でレシピ分類を実装 ● 発展的課題への取り組み 各々が自分の興味のあるタスクにチャレンジ 133 / 133