Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[第2版] Python機械学習プログラミング 第2章

15 views

Published on

社内勉強会で使用した資料です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

[第2版] Python機械学習プログラミング 第2章

  1. 1. Python機械学習プログラミング 読み会 第2章 分類問題—単純な機械学習のアルゴリズムのトレーニング 1 [第2版] 基盤 江口春紀
  2. 2. 目次 ● 人工ニューロン — 機械学習の前史 ● パーセプトロンの学習アルゴリズムをPythonで実装する ● Irisデータセットでのパーセプトロンモデルのトレーニング ● ADALINEと学習の収束 ● 勾配降下法によるコスト関数の最小化 ● 大規模な機械学習と確率的勾配降下法 2
  3. 3. 3 人工ニューロン — 機械学習の前史
  4. 4. 人工ニューロン — 機械学習の前史 ● MCPニューロン ● ニューロンは脳内の神経細胞で化学信号や電気信号の処理・伝達に関わっている。 ● 1943年にWarren McCullochとWalter Pittsが発表した、簡略化した脳細胞の概念。 ● Frank RosenblattがMCPニューロンモデルに基づくパーセプトロンの学習規則に 関する概念を発表 4
  5. 5. 人工ニューロンの正式な定義 5 決定関数φ(z)の出力 クラス判別の使用例
  6. 6. パーセプトロンの学習規則 ● パーセプトロンモデル ● 脳内の1つのニューロンの働きを模倣していて、要素還元主義的なアプローチである。 6 ● Rosenblattのパーセプトロンの初期の学習規則 1. 重みを0または値の小さい乱数で初期化する。 2. トレーニングサンプル ごとに次の手順を実行する。 1. 出力値 を計算する。 2. 重みを更新する。
  7. 7. パーセプトロンの学習規則 7 正解クラス 予測クラス● パーセプトロンモデルがクラスラベルを 正しく予測した場合 ● パーセプトロンモデルがクラスラベルを 間違えて予測した場合 目的とするクラスの方向に 重みが向かうように調整される
  8. 8. パーセプトロンの学習規則 8 パーセプトロンの収束は 必ず保証されるわけではない
  9. 9. パーセプトロンの学習規則 ● パーセプトロンの基本概念 9
  10. 10. 10 パーセプトロンの学習アルゴリズムを Pythonで実装する
  11. 11. パーセプトロンの学習アルゴリズムをPythonで実装する ● この節でやること ● 前節で説明した、Rosenblattのパーセプトロンの学習規則を Pythonで 実装しIrisデータセットに適用する。 ● オブジェクト指向のパーセプトロンAPIの概要 ● パーセプトロンのインターフェイスを Pythonのクラスとして定義する。 fitメソッドで学習を行い、 predictメソッドで予測を行う。 11
  12. 12. パーセプトロンの学習アルゴリズムをPythonで実装する ● 重みの乱数初期化 ● 平均0.0、標準偏差0.01の正規分布を使用 ● 重みが0で初期化されていると学習率の影響を受けるのは、 重みベクトルの大きさだけ となる。(ベクトルの向きは変わらない) 12
  13. 13. 13 Irisデータセットでの パーセプトロンモデルのトレーニング
  14. 14. Irisデータセットでのパーセプトロンモデルのトレーニング ● 実装内容 ● Irisデータセットから、SetosaとVersicolorの2クラスを使用。 多クラス分類の場合は一対全 (One-versus-All)の手法がある。 ● 「がく片の長さ」と「花びらの長さ」の 2つの特徴量を使用。 14 UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/index.php
  15. 15. Irisデータセットでのパーセプトロンモデルのトレーニング ● 結果 ● SetosaとVersicolorを完全に分類することができた。 ● 6Epochsで学習が収束した。 15
  16. 16. 16 ADALINEと学習の収束
  17. 17. ADALINEと学習の収束 ● ADALINE ● Bernard Widrowと学生のTedd Hoffが、 パーセプトロンアルゴリズムの発表された数年後に発表した。 ● 連続値のコスト関数を定義して、最小化していくもので、 機械学習アルゴリズムの土台となっている。 17
  18. 18. 18 勾配降下法によるコスト関数の最小化
  19. 19. 勾配降下法によるコスト関数の最小化 ● 目的関数(最小化したいコスト関数) ● ADALINEでは、重みの学習に用いるコスト関数 Jを定義する。 それらの重みは、活性化関数の出力と正解ラベルとの誤差平方和 (Sum-ofSquared Error) として学習される。 ● 連続値の線形活性化関数 ● 単位ステップ関数とは違い、コスト関数が微分可能である。 ● 凸関数なので、勾配降下法を用いてコスト関数を最小化する重みを見つけることができる。 19
  20. 20. 勾配降下法によるコスト関数の最小化 ● 重みの更新 20
  21. 21. 勾配降下法によるコスト関数の最小化 21 重みの更新にステップ関数の 出力を使っている 何もしていない ADALINE パーセプトロン
  22. 22. 勾配降下法によるコスト関数の最小化 ● 結果(2つの学習率を使って比較) ● 学習率が大きい左は 発散してしまっている。 ● 学習率が小さいと収束に向かっているが、収束するためには Epoch数が足りていない。 22
  23. 23. 特徴量のスケーリングを通じて勾配降下法を改善する ● 標準化(Standardization) ● このスケーリング手法はデータに標準正規分布の特性を与える。 ● 各特徴量の平均をずらし、中心が 0になるようにして、標準偏差を 1にする。 23
  24. 24. 特徴量のスケーリングを通じて勾配降下法を改善する ● 標準化適応後の結果 ● 全てのサンプルが正しく分類された。 ● 誤差平方根が0になるわけではない。 24
  25. 25. 25 大規模な機械学習と確率的勾配降下法
  26. 26. 大規模な機械学習と確率的勾配降下法 ● バッチ勾配降下法 ● トレーニングデータセット全体から計算されたコスト勾配を使って、 コスト関数を最小化する。 ● 1ステップごとにトレーニングデータ全体を再評価する必要があるので、 計算コストが高くなる可能性がある。 ● 確率的勾配降下法 ● トレーニングサンプルごとに重みの更新を行う。 ● 重みの更新頻度が高いので収束が速くなる。 ● Epochごとにデータをランダムに並び替えて循環を避ける必要がある。 ● オンライン学習ができる。 26
  27. 27. 大規模な機械学習と確率的勾配降下法 27 AdalineSGD AdalineBGD
  28. 28. 大規模な機械学習と確率的勾配降下法 ● AdalineSGDの結果 ● 平均コストの減少が速い。 28
  29. 29. まとめ ● パーセプトロンの実装 ● 二値分類 ● ADALINEの実装 ● 勾配降下法(バッチ勾配降下法・確率的勾配降下法 ) ● 特徴量のスケーリング 29

×