前回のお話
はじめに
-
本章で扱うもの
- 初期の機械学習アルゴリズム
- パーセプトロン
- ADALINE
- 初期の機械学習アルゴリズム
-
学習内容
- 機械学習アルゴリズムに対する直感を養う
- データの読み込み、処理、可視化
- 線形分類のアルゴリズムをPythonで実装
-
サンプルコード
- python-machine-learning-book/code/ch02/ch02.ipynb
- なお以下のまとめでは、コード、数式は記載しておりません。申し訳ございません。
2.1 人工ニューロン
- 歴史
- McCulloch-Pittsニューロン(1943)
- 生物学上の脳の仕組みを解明することを目的
- 簡略化された脳細胞に関する初めての概念
- パーセプトロンの学習規則に関する最初の概念(1957)
- Frank Rosenblatt
- 最適な重み係数を自動的に学習したのち、入力信号と掛け合わせ、ニューロンが発火するかどうかを判断するもの
- 二値分類タスク
- McCulloch-Pittsニューロン(1943)
- キーワード
- 総入力
- 活性化関数
- 学習規則
- 重みを0または値の小さい乱数で初期化する
- トレーニングサンプルごとに以下の手順を実行する
- 出力値 yを計算する
- 重みを更新する
- パーセプトロンの収束可能性
- 条件
- 線形分離可能か
- 学習率が十分小さいか
- 収束しない場合
- エポック、誤分類の最大数を設定
- 条件
2.2 パーセプトロンの学習アルゴリズムをPythonで実装する
- テキスト参照
2.3 Irisデータセットでのパーセプトロンモデルのトレーニング
- Irisデータでの2値分類
- 多クラス分類の場合は一対全(One-vs-all)の手法
- テキスト参照
2.4 ADALINEと学習の収束
- パーセプトロンアルゴリズムの改良
- コスト関数の定義とその最小化に関する概念を具体的に示す
- パーセプトロンとの違い
- 重みの更新方法
- 線形活性化関数に基づいて重み更新
- 量子化器
- クラスラベルの予測
- モデル誤差の計算と重みの更新に用いるもの
- パーセプトロン
- 二値のクラスラベル
- ADALINE
- 線形活性化関数からの連続値の出力
- パーセプトロン
- 重みの更新方法
2.5 勾配降下法によるコスト関数の最小化
- 目的関数
- 教師あり機械学習のアルゴリズムを構成する主な要素の1つ
- 学習過程で最適化される
- コスト関数
- 重みの学習に用いる
- 誤差平方和
- この連続値の線形活性化関数の利点
- 微分可能
- 凸関数
- 勾配降下法
2.5.1 ADALINEをPythonで実装する
- テキスト参照
- 学習率
- 大きすぎる
- 誤差平方和が増えて行く
- 小さすぎる
- 収束するのに相当な数のエポックが必要
- 大きすぎる
- 標準化
- 特徴量のスケーリング手法の1つ
- 各特徴量の平均を0に
- 標準偏差を1にする
2.6 大規模な機械学習と確率的勾配降下法
- バッチ勾配降下法
- トレーニングデータセット全体
- データセットが大きすぎると計算コストがかなりつく
- 確率的勾配降下法(逐次的勾配降下法、オンライン勾配降下法)
- 1つのデータサンプルに基づく
- 浅い極小値をより抜け出しやすい
- データをランダムに並び替える
- 新しいデータが届いた時にその場でモデルがトレーニングできる(オンライン学習)
- ミニバッチ学習
- トレーニングデータの一部(例えば50)にバッチ勾配降下法を適用するもの