機械学習 1回イントロダクションshirahama/courses/ml/2018/slides/slides_1.pdf株価...
TRANSCRIPT
機械学習
第1回 イントロダクション
白浜 公章
❑ 教材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(著者ともコンタクトをとり、コードや図を使用できる許可を得ている)
• 講義の一部は、下記の本を参考にしている斎藤 康毅ゼロから作るDeep Learning:Pythonで学ぶディープラーニングの理論と実装オライリー・ジャパン,2016
❑ 目標• 機械学習の枠組み、及び現在主流となっている技術に関する基礎知識の習得• 高水準言語(Python)を用いて、機械学習モデルを実装する能力・経験の習得
❑ 成績評価合計3回のレポート(講義した手法を用いて、UCI Machine Learning Repositoryのデータを解析)
本講義について
本講義では、機械学習の枠組みを抑えた後で、深層学習について深く学ぶ!
機械学習とは?
人工知能:計算機上で人間の知能を再現する技術(1956年~)
機械学習:データを統計的に解析して、予測や分類を行うモデルを学習(構築)する技術
深層学習:人間の脳の仕組みに基づく深い階層をもつモデルを学習する技術
P. Viola and M. Jones,CVPR 2001
N. Jones,Nature 2014
ルールベースアプローチの限界
計算機(GPU)の進歩大規模データの収集・整備
肌色、髪の色、眼、口の形…
どうやって学習する?
多くの学習データを使えば使うほど、正確な識別が行えるようになる
データを見せる人間と同じ
学習データ
(データ本体) (ラベル)
猫
犬
猫
犬
(教師)
(学習者) (計算機)
データが属するクラス(カテゴリ)を表す
犬と猫の識別
学習データをどうする?
クラスごとの特徴を見つけるこれも人間と同じ
猫クラス
犬と猫の違いは、〇 耳の形〇 鼻の大きさ(顔との比率)× 脚の数× 色…
犬クラス
もう少し定量的には?
学習データを特徴空間中の点として表現するいい特徴を使えていれば、同じクラスのデータが近くに集まる
犬クラス
猫クラス
(大)鼻の大きさ(小)
耳の形
(丸い)
(尖っている)
(大きい、丸い)
(小さい、尖っている)
どうやって識別する?
(大)鼻の大きさ(小)
耳の形
(丸い)
(尖っている)
モデル(図では線形モデル(直線))を学習する パラメータの最適化
y = 𝑎𝑥 + 𝑏(耳の形) (鼻の大きさ) 傾きaと切片bを求める
犬クラス
猫クラス異なるクラスのちょうど中間を通っており最適(だろう)
学習した後は?
ラベルが未知のテストデータを分類する
(大)鼻の大きさ(小)
耳の形
(丸い)
(尖っている)
犬クラス
猫クラス
誤分類:学習データでは、鼻の大きさと耳の形で十分だったが、一部のテストデータには当てはまらない!• 学習データを増やす• 新たな特徴(例えば、眼の色)を導入→ モデルを再学習
機械学習の枠組み (1/2)
問題設定
犬 vs. 猫
データ収集
学習データ(ラベルが既知)
テストデータ(ラベルが未知)
犬
猫
?
?
特徴抽出
データを特徴空間に写像
学習
正確な分類ができるようにモデルのパラメータを最適化
テスト
学習したモデルをテストデータに適用して性能評価
分類問題:ラベルが離散値(クラス)
機械学習の枠組み (2/2)
問題設定
株価予測
データ収集
学習データ(ラベルが既知)
テストデータ(ラベルが未知)
特徴抽出
データを特徴空間に写像
学習
正確な予測ができるようにモデルのパラメータを最適化
テスト
学習したモデルをテストデータに適用して性能評価
回帰問題:ラベルが連続値
企業A 400
企業B 100
?企業C
?企業D
株価
株価
歳入
• 各企業を“歳入”という1つの特徴で表現
• 縦軸はラベル(株価)
株価
歳入企業Cの歳入
企業Cの株価(予測値)
回帰問題も分類問題も枠組みは同じ(ラベルが違うだけ)!
特徴の重要性(1/3)
適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない
どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)
❑ 深い知識があるとき:物体の落下距離の回帰(ガリレオの落下法則)落下距離は質量に依存せず、時間(の2乗)にのみ依存する
(時間の2乗:特徴)
特徴の重要性(2/3)
❑ 知識がほとんどないとき(パート1):視覚情報に基づく物体認識「人間が物体認識に使用する情報は、エッジに多く含まれている」ということは分かっている
確かに、エッジだけからでも2人の人が映っていることは分かるただし、複雑な画像に対してはエッジだけでは不十分
適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない
どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)
特徴の重要性(3/3)
❑ 知識がほとんどないとき(パート2):視覚情報に基づく物体認識「脳内には小領域のエッジ検出を行う細胞(ニューロン)があり、検出されたエッジを組み合わせて、
人は物体認識を行っている」という神経科学の知見
こういうエッジを特徴として検出する(そして、さらに組み合わせる)→ 物体認識に関する現在最先端の特徴(深層学習)
適切な特徴をデザインすることが非常に重要• 対象問題に関して深い知識があれば、適切な特徴をデザインでき、高精度を達成可能• ただし、多くの場合、対象問題について少ししか知識がない、もしくは全くない
どうやって有用な特徴を自動抽出(し高精度を達成)するか → 特徴学習(重要!)
パラメータの最適化とは?(1/2)
コスト関数の最小化• 入力は、最適化するモデルのパラメータ(下の例では、傾きaと切片b)• 出力は、あるパラメータを使用した時のエラー率(つまり、コスト)
コストを最小にするパラメータを見つける
❑ コスト大 → 悪いパラメータ(回帰精度が低い)
❑ コスト最小 → 最適パラメータ(回帰精度が高い)
パラメータの最適化とは?(2/2)
コスト関数の最小化• 入力は、最適化するモデルのパラメータ(下の例では、傾きと切片)• 出力は、あるパラメータを使用した時のエラー率(つまり、コスト)
コストを最小にするパラメータを見つける
❑ コスト大 → 悪いパラメータ(分類精度が低い)
❑ コスト最小 → 最適パラメータ(分類精度が高い)
数値最適化(数値計算法)が大事!
本講義の焦点と日程
特徴学習:データから有用な特徴を抽出し、分類・回帰を行うニューラルネットワーク• 回帰のための特徴学習(7, 8, 9週目)• 分類のための特徴学習(10, 11週目)• 代表的な特徴学習手法(畳み込みニューラルネットワーク) (12, 13, 14週目)
数値最適化(2週目)
知識に基づいて手動で定義した特徴• 回帰モデルの学習、テスト(3, 4週目)• 分類モデルの学習、テスト(5, 6週目)
歳入
株価
鼻の大きさ
耳の形
問題設定 データ収集 特徴抽出 学習 テスト
最新技術の紹介(15週目)
一層だけからのシンプルなモデルを用いて、機械学習の基本的枠組みを抑える
• 特徴によるデータ表現• モデルパラメータの最適化
多層からなる複雑なモデルに発展させる
以下に、僕が行った方法を書いておきます。僕は、https://www.anaconda.com/download/
から、Windows用の64ビット版Anaconda Python 3.6をダウロードし、インストールしました。ただし、下記の2点に注意しました。• Anacondaのインストールフォルダに日本語が入っているとインストールできないので、Cの直下にフォルダを作り、そこにインストールしました。プラス、ユーザ名に日本語が混じっているなら、日本語が混じっていないユーザを作り、そっちで作業すべきです(後でscipyがうまく動かないことが分かり、痛い目にあいました)。
• Anacondaのパスを環境変数に設定することはNot recommendedでしたが、環境変数に設定しました。
Anacondaをインストール後は、Anaconda Promptを起動し、下記でpip(アップデート用コマンド)を更新して、
python -m pip install –upgrade pipautograd(次週以降のコード内で使用する)というライブラリをインストールしました。
pip install autograd
Anaconda Python 3とautogradのインストールが完了したら、講義のWebページに公開されている• 1_test.ipynb• mlrefined_libraries.zipをダウンロードし、後者を前者と同じフォルダに解凍・配置して下さい。その後、Jupyter Notebookで、1_test.ipynbを開き、実行できることを確認して下さい。うまく行けば、右のようなグラフが表示されるはずです。
Anaconda Python 3のインストール