:::: MENU ::::

「機械学習入門 ボルツマン機械学習から深層学習まで」読了

機械学習とはなんぞや?という疑問を解決するために、
どのような課題に対してどのように使っていけるのかを、
数式やコードなしでストーリー仕立てに解説してくれている入門本。


機械学習入門 ボルツマン機械学習から深層学習まで

技術色が濃い分野でこういう入門本は結構貴重。
他の本では難しく書いていることも、わかりやすく説明してくれていて、とっつきやすく読みやすかった。
他人に教える時にもかなり使えそう。

だが、読みやすいからこそ頭に残らない気がしたので、
思い出せるように個人的なインデックスを残す。

第1章 何も知らない鏡

  • データからパターンを学習
  • 判定する関数を作成
  • 新しいデータのなにかを判定・識別

機械学習とは概ねこんなものだよというお話。

第 2 章 美しさの秘訣

  • 定量的データが必要
  • 特徴量の数値化
  • ベクトル
    • 数字をまとめたもの、行列
    • 本著の例では個人をキーにして、その人の顔情報が行列として値が格納されている
  • 順問題 : 入力 -> 関数 -> ?
    • 関数が用意されているので計算すればよい問題、たいてい答えは一つ
  • 逆問題 : 入力 -> ? -> 出力
    • 期待する出力をする関数を作成する問題、関数の可能性は多数
    • 可能な限り多くの入力に対応する関数を見つけ出すのが今回のゴール
  • 散布図での表現と一次関数
  • 最適化問題
    • 多くのデータに適合する関数を見つけ出すためにパラメータを調整すること
  • (特徴量 A × 重み A) + (特徴量 B × 重み B) + (特徴量 C × 重み C) = 美しさの総合力
  • 誤差関数
    • データとモデルの出力がどのくらいずれているか調べる関数
    • 一番基本的なのは差を二乗して足し上げる、2乗和
  • 教師あり学習
    • 正解のデータがあり、出力の誤差を最小化していく方法
    • 0 か1かの識別判定や数値予測の場合に用いられることが多い
  • 教師なし学習
    • データから共通項や傾向を見つけ出していく
    • クラスタリングで用いられることが多い

第 3 章 最適化問題に挑戦

  • 微分
  • 勾配法
    • 誤差が小さくなる方向へ重みを変えていく方法
  • 最急降下法
    • 複数の特徴量を同時に操作して誤差が小さくなるまで動かす方法
  • 極小と最小の違い
    • 単純な微分による差だけを見ていくと極小で止まる
  • 訓練データとテストデータ
  • 交差検証
    • データを例えば 4 個に分けて1つをテストデータとして検証、これをテストグループを変えて計 4 回検証する
  • 過学習
    • 訓練データに最適化しすぎてテストデータに対して性能が出ない状態
  • 特徴量を複数組み合わせて新しい特徴量を作る
  • 線型性
    • 四則演算をしてもデータの複雑性は上がらない
  • 非線形変換
    • 引き延ばしたり縮めたりするのではなく、ぐしゃっとする
    • 散布図で直線で表しにくい場合、図をぐしゃっとすることで点が集まり直線で表せたりすることがある
  • シグモイド関数

    --切片を 1/2 として、正の場合は1に限りなく近く、負の場合は0に限りなく近くなる関数


  • 活性化関数
    • 非線形変換を施す関数、今回はシグモイド関数を利用「
  • 多層ニューラルネットワーク
    • 非線形変換で新しい特徴量を複数行うことで中間層ができる
    • 初期の特徴量を入れるところを入力層、最後に重みを足し上げるところを出力層
    • 本著の例では、順方向型のニューラルネットワーク

第 4 章 深層学習に挑戦

  • 勾配消失問題
    • 入力時のパラメータを調整しても誤差が小さく勾配がなくなってしまっている
  • 誤差逆伝播法
    • 誤差関数の影響で誤差の最小化が妨げられているものを最適化する
  • シグモイド関数だと微分の値が小さいので影響が少ない
  • ランプ関数
    • 正の場合は一次関数だが負はすべて0になる
    • 微分すると正が 1 で負が 0 となる
  • 過学習を防ぐにはドロップアウト
    • 適当なところで学習をやめる
  • バッチ学習とオンライン学習
  • 確率勾配法 : バッチ処理でも複数のバッチに分けて行うことで効率を上げる
    • データの一部を使い結果に変化を持たせることで新たな最適化を見つける
  • 鞍点
    • 極小に至らずに別の方向いくことで誤差関数が低くなるところ
    • 鞍点を見つけるのに確率勾配法が使える
  • このようないろいろな方法で最適化を目指すことを深層学習と呼ぶ?

第 5 章 未来を予測する

  • 未来予測、欠損データの補完
  • ヘヴィサイド関数
    • 正なら1、負なら0
  • パーセプトロン
    • 分離超平面を動かして分けるモデル
  • サポートベクターマシン
    • 分離超平面を動かすときに境界線に近い点のマージンをできるだけ広く取り分けるモデル
  • カーネル法
    • 特徴量をそのまま使わず、非線形変換でグシャっと変形して使う
  • 特徴量選択
    • 誤差関数に影響がない特徴量は引き継がない

第 6 章 美しく見せる鏡

この辺から急に難しくなってきた印象

  • ボルツマン機械
    • ピクセルの色予測、近隣ピクセルの関係からの傾向など場所ごとの関係を設定したモデル
    • そのモデルを使って画像を出力するもの
  • ボルツマン機械学習
    • 隣接するピクセル情報を得てどういう傾向にあるか学習する
  • 尤度(ゆうど)
    • もっともらしさ
  • サンプリング
    • 仮のデータとしてデータをたくさん作り出す行為
  • マルコフ連鎖モンテカルロ法 : どこまでも双方向
  • 信念伝播法 : 隣の隣まで双方向
  • 平均場近似法 : 隣まで一方向
  • 擬似最尤法
    • サンプリングした仮のデータから聞かず実際のデータから聞く
  • 隠れ変数
    • 可視変数とは違い、なにかあるかないかスイッチのような役割をする
    • ピクセル同士の関係ではなくスイッチの有無によってサンプリングする画像を決める?
    • 隠れ変数には可視変数の最初にサンプリングした結果を入れる
  • 制限ありボルツマン機械
    • 隠れ変数を用いてサンプリング対象を制限する
  • コントラスティヴ・ダイバージェンス法
  • 隠れ変数の隠れ変数を用意することで見た目は多層ニューラルネットワークに見える
  • ディープボルツマン機械(双方向ニューラルネットワーク)
    • あくまでも学習するだけの機構
    • 特徴の重みを付けて出力層を加えてあげることもできる

第 7 章 顔だけで美しさを

  • 教師なし学習
  • 事前学習(プレトレーニング)
  • 自己符号化
    • ニューラルネットワークの第一層だけ抜き出して、コピーを反対向きにして第一層に合体させる
    • 復元性のある特徴抽出ができる?
  • 次元圧縮
    • 自己符号化などで特徴量の数を減らすこと
  • 制限ありボルツマン機械ではサンプリングで行なっていたことを、実際のデータを次元圧縮したものを利用して学習させる?
  • 畳み込みニューラルネットワーク
    • 画像の場合は事前学習なしでこれを利用することが多い
    • 画像と相性のいい手法
    • 画像をいくつかのピクセルで分割して、特定のグループの組み合わせだけを特徴量にしてしまう
    • 他の特徴量と比べて最大の値を採用したり、平均と採用したりする(プーリング)
  • 特徴量の抽出精度があがり、自身で特徴量をいかに正確に導き出せるかと努力しないで済むようになった
  • ただしデータの質による