20
機械学習 1イントロダクション 白浜 公章

機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

機械学習

第1回 イントロダクション

白浜 公章

Page 2: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

教材Webサイトに講義資料とコード(Python jupyter notebook形式)を公開https://www.info.kindai.ac.jp/~shirahama/courses/ml/

講義している手法の動作確認がその場で行える!

参考書• 本講義は、下記の本に基づいている

Jeremy Watt, Reza Borhani and Aggelos K. KatsaggelosMachine Learning Refined: Foundations, Algorithms, and ApplicationsCambridge University Press, 2016

著者とコンタクトをとり、コードや図を使用する許可を得ている もうすぐ第2版が出版される

目標• 機械学習の枠組み、及び現在主流となっている技術に関する基礎知識の習得• 高水準言語(Python)を用いて、機械学習モデルを実装する能力・経験の習得

成績評価合計3回のレポート(講義した手法を用いて、UCI Machine Learning Repositoryのデータを解析)

本講義について

Page 3: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

本講義では、機械学習の枠組みを抑えた後で、深層学習について深く学ぶ!

機械学習とは?

人工知能:計算機上で人間の知能を再現する技術(1956年~)

機械学習:データを統計的に解析して、予測や分類を行うモデルを学習(構築)する技術

深層学習:人間の脳の仕組みに基づく深い階層をもつモデルを学習する技術

P. Viola and M. Jones,CVPR 2001

N. Jones,Nature 2014

ルールベースアプローチの限界

計算機(GPU)の進歩大規模データの収集・整備

肌色、髪の色、眼、口の形…

Page 4: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

どうやって学習する?

多くの学習データを使えば使うほど、正確な識別が行えるようになる

データを見せる人間と同じ

学習データ

(データ本体) (ラベル)

(教師)

(学習者) (計算機)

データが属するクラス(カテゴリ)を表す

犬と猫の識別

Page 5: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

学習データをどうする?

クラスごとの特徴を見つけるこれも人間と同じ

猫クラス

犬と猫の違いは、〇 耳の形〇 鼻の大きさ(顔との比率)× 脚の数× 色…

犬クラス

Page 6: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

もう少し定量的には?

学習データを特徴空間中の点として表現するいい特徴を使えていれば、同じクラスのデータが近くに集まる

犬クラス

猫クラス

(大)鼻の大きさ(小)

耳の形

(丸い)

(尖っている)

(大きい、丸い)

(小さい、尖っている)

Page 7: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

どうやって識別する?

(大)鼻の大きさ(小)

耳の形

(丸い)

(尖っている)

モデル(図では線形モデル(直線))を学習する パラメータの最適化

y = 𝑎𝑥 + 𝑏(耳の形) (鼻の大きさ) 傾きaと切片bを求める

犬クラス

猫クラス異なるクラスのちょうど中間を通っており最適(だろう)

Page 8: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

学習した後は?

ラベルが未知のテストデータを分類する

(大)鼻の大きさ(小)

耳の形

(丸い)

(尖っている)

犬クラス

猫クラス

誤分類:学習データでは、鼻の大きさと耳の形で十分だったが、一部のテストデータには当てはまらない!• 学習データを増やす• 新たな特徴(例えば、眼の色)を導入→ モデルを再学習

Page 9: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

機械学習の枠組み (1/2)

問題設定

犬 vs. 猫

データ収集

学習データ(ラベルが既知)

テストデータ(ラベルが未知)

?

?

特徴抽出

データを特徴空間に写像

学習

正確な分類ができるようにモデルのパラメータを最適化

テスト

学習したモデルをテストデータに適用して性能評価

分類問題:ラベルが離散値(クラス)

Page 10: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

機械学習の枠組み (2/2)

問題設定

株価予測

データ収集

学習データ(ラベルが既知)

テストデータ(ラベルが未知)

特徴抽出

データを特徴空間に写像

学習

正確な予測ができるようにモデルのパラメータを最適化

テスト

学習したモデルをテストデータに適用して性能評価

回帰問題:ラベルが連続値

企業A 400

企業B 100

?企業C

?企業D

株価

株価

歳入

• 各企業を“歳入”という1つの特徴で表現

• 縦軸はラベル(株価)

株価

歳入企業Cの歳入

企業Cの株価(予測値)

回帰問題も分類問題も枠組みは同じ(ラベルが違うだけ)!

Page 11: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

特徴の重要性(1/3)

適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)

深い知識があるとき:物体の落下距離の回帰(ガリレオの落下法則)落下距離は質量に依存せず、時間(の2乗)にのみ依存する

(時間の2乗:特徴)

Page 12: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

特徴の重要性(2/3)

知識がほとんどないとき(パート1):視覚情報に基づく物体認識「人間が物体認識に使用する情報は、エッジに多く含まれている」ということは分かっている

確かに、エッジだけからでも2人の人が映っていることは分かるただし、複雑な画像に対してはエッジだけでは不十分

適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)

Page 13: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

特徴の重要性(3/3)

知識がほとんどないとき(パート2):視覚情報に基づく物体認識「脳内には小領域のエッジ検出を行う細胞(ニューロン)があり、検出されたエッジを組み合わせて、

人は物体認識を行っている」という脳科学の知見

こういうエッジを特徴として検出する(そして、さらに組み合わせる)→ 物体認識に関する現在最先端の特徴(深層学習)

適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)

Page 14: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

パラメータの最適化とは?(1/2)

コスト関数の最小化• 入力は、最適化するモデルのパラメータ(下の例では、傾きaと切片b)• 出力は、あるパラメータを使用した時のエラー率(つまり、コスト)

コストを最小にするパラメータを見つける

コスト大 → 悪いパラメータ(回帰精度が低い)

コスト最小 → 最適パラメータ(回帰精度が高い)

Page 15: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

パラメータの最適化とは?(2/2)

コスト関数の最小化• 入力は、最適化するモデルのパラメータ(下の例では、傾きと切片)• 出力は、あるパラメータを使用した時のエラー率(つまり、コスト)

コストを最小にするパラメータを見つける

コスト大 → 悪いパラメータ(分類精度が低い)

コスト最小 → 最適パラメータ(分類精度が高い)

数値最適化(数値計算法)が大事!

Page 16: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

本講義の焦点と日程

特徴学習:データから有用な特徴を抽出し、分類・回帰を行うニューラルネットワーク• 回帰のための特徴学習(8, 9, 10週目)• 分類のための特徴学習(11, 12週目)• 代表的な特徴学習手法(CNN, RNNなど) (13, 14, 15週目)

数値最適化(2週目)

知識に基づいて手動で定義した特徴• 回帰モデルの学習、テスト(3, 4週目)• 分類モデルの学習、テスト(5, 6, 7週目)

歳入

株価

鼻の大きさ

耳の形

問題設定 データ収集 特徴抽出 学習 テスト

一層だけからのシンプルなモデルを用いて、機械学習の基本的枠組みを抑える

• 特徴によるデータ表現• モデルパラメータの最適化

多層からなる複雑なモデルに発展させる

Page 17: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

Anaconda Python 3.7のインストール

僕は、 https://www.anaconda.com/download/ から、Windows用の64ビット版Anaconda Python 3.6(最新版はPython 3.7)をダウロードしインストールした。Macbook Airでも、上記サイトからPython 3.7をダウンロードし、簡単にインストールできることを確認済み!

ただし、下記の2点には注意した方がいいと思われる。• Anacondaのインストールフォルダに日本語が入っているとインストールできないので、Cの直下にフォルダを作り、そこにインストールした。プラス、ユーザ名に日本語が混じっているなら、日本語が混じっていないユーザを作り、そちらで作業すべき(後でscipyがうまく動かないことが分かり、痛い目に遭った)。

• Anacondaのパスを環境変数に設定することはNot recommendedだったが、環境変数に設定した。

Anaconda Pythonをインストールすれば、Pythonの基本的なライブラリ(jupyter-notebook、numpyなど)も併せてインストールされる。

インストールが完了すれば、ターミナルでjupyter-notebook

と実行すれば、jupyter-notebookが起動する。Webブラウザに以下のような画面が表示されるはず。

インストール済みの人は次のスライドへ

Page 18: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

Autograd(自動で微分を計算してくれるライブラリ)のインストールAnaconda Promptを起動し、下記のコマンドを実行して、autogradをインストールする

• python -m pip install –upgrade pip• pip install autograd

本講義で使用する補助ライブラリのイントールとテスト1. 講義のWebページに公開されている下記の2つのファイルをダウンロードする

• 1_test.ipynb• mlrefined_libraries.zip

2. mlrefined_libraires.zipを、1_test.ipynbと同じフォルダに解凍・配置する。

3. Jupyter Notebookで、1_test.ipynbを開き、実行できることを確認する。うまく行けば、右のようなグラフが表示されるはず。

本講義用の設定

Page 19: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

jupyter-notebookを使ったPythonプログラミング

Pythonやjupyter-notebookの使い方に関するWebページは、数多く公開されている。徐々にで構わないので、各自で勉強し、jupyter-notebookを使ったPythonプログラミングに慣れておくこと!

例えば、下記のWebページを挙げておくが、探せば色々と見つかる。自分で内容を読み、理解し、納得したWebページを参照すること!(jupyter-notebookの使い方)

https://pythondatascience.plavox.info/python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/jupyter-notebook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

https://bizinfolog.com/python-machine-learning/how-to-use-jupyter-notebook/

(Pythonの全般的な使い方)http://lang.sist.chukyo-u.ac.jp/classes/PythonProbStat/Guide2Python.htmlhttps://www.python-izm.com/basic/

(numpyという非常に重要な計算ライブラリの使い方)http://www.kamishima.net/mlmpyja/nbayes1/ndarray.html

メモ1. jupyter-notebookで” IOPub data rate exceeded”というエラーが出たとき

jupyter-notebookで使用するメモリが不足しているで、増やしてやるhttps://aotamasaki.hatenablog.com/entry/2018/04/08/123146https://stackoverflow.com/questions/43288550/iopub-data-rate-exceeded-when-viewing-image-in-jupyter-notebook

2. jupyter-notebookで作成したコードの拡張子は.ipynbであるが、Safariを用いて、Web上の.ipynbファイルをダウンロードすると、最後に”.txt”が追加されることがあるので、そのときは”.txt”を削除する

レポート課題では必須!

Page 20: 機械学習 1回イントロダクションshirahama/courses/ml/slides/slides_1.pdf · ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装

おさえておくべき事項

1. Pythonに関すること• パッケージのimport• 変数の型は不要(typeで確認)• インデントでコードを書く• print• 内包標記• 関数(複数の返り値も簡単)

2. numpyというパッケージは非常に重要• ベクトル・行列の定義• ベクトル・行列のサイズの確認• ブロードキャスティングによる計算• テキストファイルの読み込み(loadtxt, genfromtxtなど)

3. jupyter-notebookでは、”Code”モードだけでなく、”Markdown”モードも抑えておく• 簡単にメモ書きができる:https://qiita.com/tbpgr/items/989c6badefff69377da7• Latexと同じ記法で数式が書ける:https://qiita.com/PlanetMeron/items/63ac58898541cbe81ada