• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "第1回 イントロダクション"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

機械学習

1 回 イントロダクション

白浜 公章

(2)

教材

Web

サイトに講義資料とコード(

Python jupyter notebook

形式)を公開

https://www.info.kindai.ac.jp/~shirahama/courses/ml/

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

参考書

本講義は、下記の本に基づいている

Jeremy Watt, Reza Borhani and Aggelos K. Katsaggelos

Machine Learning Refined: Foundations, Algorithms, and Applications Cambridge University Press, 2016

著者とコンタクトをとり、コードや図を使用する許可を得ている

もうすぐ第

2

版が出版される

目標

機械学習の枠組み、及び現在主流となっている技術に関する基礎知識の習得

高水準言語(

Python

)を用いて、機械学習モデルを実装する能力・経験の習得

成績評価

合計

3

回のレポート(講義した手法を用いて、

UCI Machine Learning Repository

のデータを解析)

本講義について

(3)

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

機械学習とは?

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

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

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

P. Viola and M. Jones, CVPR 2001

N. Jones, Nature 2014

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

計算機(

GPU

)の進歩

大規模データの収集・整備

肌色、髪の色、

眼、口の形

(4)

どうやって学習する?

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

人間と同じ

学習データ

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

猫 犬

(教師)

(学習者) (計算機)

データが属するクラス

(カテゴリ)を表す

犬と猫の識別

(5)

学習データをどうする?

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

猫クラス

犬と猫の違いは、

〇 耳の形

〇 鼻の大きさ(顔との比率)

× 脚の数

× 色

犬クラス

(6)

もう少し定量的には?

学習データを特徴空間中の点として表現する

いい特徴を使えていれば、同じクラスのデータが近くに集まる

犬クラス 猫クラス

(大)

鼻の大きさ

(小)

耳の形 ( 丸い ) ( 尖って い る)

(大きい、丸い)

(小さい、尖っている)

(7)

どうやって識別する?

(大)

鼻の大きさ

(小)

耳の形 ( 丸い ) ( 尖って い る)

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

(耳の形) (鼻の大きさ) 傾き

a

と切片

b

を求める

犬クラス 猫クラス

異なるクラスのちょうど中間

を通っており最適(だろう)

(8)

学習した後は?

ラベルが未知の

テストデータを分類する

(大)

鼻の大きさ

(小)

耳の形 ( 丸い ) ( 尖ってい る)

犬クラス 猫クラス

誤分類:学習データでは、鼻の大きさと耳の形で十分 だったが、一部のテストデータには当てはまらない!

学習データを増やす

新たな特徴(例えば、眼の色)を導入

モデルを再学習

(9)

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

問題設定

vs.

データ収集

学習データ

(ラベルが既知)

テストデータ

(ラベルが未知)

?

?

特徴抽出

データを特徴 空間に写像

学習

正確な分類ができる ようにモデルの

パラメータを最適化

テスト

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

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

(10)

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

問題設定

株価予測

データ収集

学習データ

(ラベルが既知)

テストデータ

(ラベルが未知)

特徴抽出

データを特徴 空間に写像

学習

正確な予測ができる ようにモデルの

パラメータを最適化

テスト

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

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

企業

A 400

企業

B 100

企業

C ?

企業

D ?

株価

株価

歳入

各企業を“歳入”という

1

つの特徴で表現

縦軸はラベル(株価)

株価

企業C

歳入

の歳入 企業C

の株価

(予測値)

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

(11)

特徴の重要性( 1/3 )

適切な特徴をデザインすることが非常に重要

対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能

ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

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

深い知識があるとき:物体の落下距離の回帰(ガリレオの落下法則)

落下距離は質量に依存せず、時間(の

2

乗)にのみ依存する

(時間の2乗:特徴)

(12)

特徴の重要性( 2/3 )

知識がほとんどないとき(パート

1

):視覚情報に基づく物体認識

「人間が物体認識に使用する情報は、エッジに多く含まれている」ということは分かっている

確かに、エッジだけからでも

2

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

適切な特徴をデザインすることが非常に重要

対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能

ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

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

(13)

特徴の重要性( 3/3 )

知識がほとんどないとき(パート

2

):視覚情報に基づく物体認識

「脳内には小領域のエッジ検出を行う細胞(ニューロン)があり、検出されたエッジを組み合わせて、

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

こういうエッジを特徴として検出する

(そして、さらに組み合わせる)

物体認識に関する現在最先端の特徴

(深層学習)

適切な特徴をデザインすることが非常に重要

対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能

ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない

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

(14)

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

コスト関数の最小化

入力は、最適化するモデルのパラメータ(下の例では、傾き

a

と切片

b

出力は、あるパラメータを使用した時のエラー率(つまり、コスト)

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

コスト大

悪いパラメータ

(回帰精度が低い)

コスト最小

最適パラメータ

(回帰精度が高い)

(15)

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

コスト関数の最小化

入力は、最適化するモデルのパラメータ(下の例では、傾きと切片)

出力は、あるパラメータを使用した時のエラー率(つまり、コスト)

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

コスト大

悪いパラメータ

(分類精度が低い)

コスト最小

最適パラメータ

(分類精度が高い)

数値最適化(数値

計算法)が大事!

(16)

本講義の焦点と日程

特徴学習:データから有用な特徴を抽出し、分類・回帰を行うニューラルネットワーク

回帰のための特徴学習(

8, 9, 10

週目)

分類のための特徴学習(

11, 12

週目)

代表的な特徴学習手法(

CNN, RNN

など) (

13, 14, 15

週目)

数値最適化(

2

週目)

知識に基づいて手動で定義した特徴

回帰モデルの学習、テスト(

3, 4

週目)

分類モデルの学習、テスト(

5, 6, 7

週目)

歳入 株価

鼻の大きさ

耳の形

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

一層だけからのシンプルなモデルを用いて、

機械学習の基本的枠組みを抑える

特徴によるデータ表現

モデルパラメータの最適化

多層からなる複雑な

モデルに発展させる

(17)

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

ブラウザに以下のような画面が表示されるはず。

インストール済みの

人は次のスライドへ

(18)

 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

を開き、

実行できることを確認する。うまく行けば、

右のようなグラフが表示されるはず。

本講義用の設定

(19)

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.html https://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/123146

https://stackoverflow.com/questions/43288550/iopub-data-rate-exceeded-when-viewing-image-in-jupyter-notebook

2. jupyter-notebook

で作成したコードの拡張子は

.ipynb

であるが、

Safari

を用いて、

Web

上の

.ipynb

ファイルをダウンロードすると、最後に

”.txt”

が追加されることがあるので、そのときは

”.txt”

を削除する

レポート課題では必須!

(20)

おさえておくべき事項

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

参照

関連したドキュメント

〜3.8%の溶液が涙液と等張であり,30%以上 では著しい高張のため,長時間接触していると

作品研究についてであるが、小林の死後の一時期、特に彼が文筆活動の主な拠点としていた雑誌『新

攻撃者は安定して攻撃を成功させるためにメモリ空間 の固定領域に配置された ROPgadget コードを用いようとす る.2.4 節で示した ASLR が機能している場合は困難とな

サーバー費用は、Amazon Web Services, Inc.が提供しているAmazon Web Servicesのサーバー利用料とな

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

編﹁新しき命﹂の最後の一節である︒この作品は弥生子が次男︵茂吉

ダウンロードしたファイルを 解凍して自動作成ツール (StartPro2018.exe) を起動します。.

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB