machine learning, week 11

PhotoOCR について.

PhotoOCRとは機械に画像内にある文字を認識させる試み.これを次のパイプライン処理で行う.

画像→文章検出→文字分離→文字認識

  • 文章検出
    文章検出は文字を含んだ画像と文字を含んでいない画像を大量に用意し、アルゴリズムに学習させる.
    Screen Shot 2017-05-02 at 21.02.32.png
  • 文字分離
    「窓」をスライドさせることで,その窓の中の画像が分離できるかどうかをアルゴリズムに学習させる
    Screen Shot 2017-05-02 at 21.04.15
  • 文字認識
    文字を分離した画像に対して,何の文字があるかを調べる.
    Screen Shot 2017-05-02 at 21.05.12

日本語だと漢字かな混じりで難しそうだと思った…

大量に必要なトレーニングデータの作成方法として「人工データ合成」がある.

Screen Shot 2017-05-02 at 21.10.28.png

文字認識の場合は

  • フォントを変える
  • 文字の大きさを変える
  • 文字を回転させる
  • 文字の位置をずらす
  • 文字を歪める
  • 背景を変える
  • ランダムに選んだピクセルを0に変える

などがある.

天井分析

Screen Shot 2017-05-02 at 21.13.39.png

天井分析とはシステム全体の精度を上げるのに具体的にどこの処理がボトルネックになっているかを調べるための手法.

パイプライン処理の各コンポーネントで「もしもこの処理(とその手前の処理全て)が精度100%だったら」とした時の精度を右側に書く.

 

最後はだいぶ応用的な話題だった.個人的には5週目のバックプロパゲーションまでが重かった.内容としては6週の機械学習モデルの検証の話が最も受講して良かったと思える回だったと思う.

いつか使うときに,いつでもここまで戻れるようにしたい.

広告

machine learning, week 10

大規模機械学習について学ぶ

  • ビッグデータ
    • 勝つのは最高のアルゴリズムを持っている者ではない。最も多くのデータを持っている者だ。(It’s not who has the best algorithm that wins. It’s who has the most data.)
    • データが多いと,オーバーフィット(過学習)を防ぐことができる
  • 確率的最急降下法
    • 最急降下法は目的関数(cost function)の計算で
      J(\theta) = \dfrac{1}{m}\sum_{i=1}^{m} cost(\theta, (x^{(i)}, y^{(i)}))
      データ数mの数だけ総和を取ることを行うので,ビッグデータm \geq 3,000,000,000などになると時間がかかる.
      これをBatch Gradient Descentと言い,時間はかかるが確実に最小化する
    • 確率的最急降下法(Stochastic Gradient Descent)は
      cost(\theta, (x^{(i)}, y^{(i)})) を最小にする\theta を求めたら,cost(\theta, (x^{(i+1)}, y^{(i+1)})) を最小にする\theta を求め,次はcost(\theta, (x^{(i+2)}, y^{(i+2)})) …と言う具合にアプローチする.
      総和を取らないだけ早いが,その分リピート毎にcost function は小さくなっていくとは限らない.軌跡は下図右側のようにジグザグになる.
      Screen Shot 2017-05-02 at 20.12.28.png
    • 一度にパラメータ1つしか更新しないと収束が遅すぎる場合には,一度にb個のパラメータを更新する.これをMini-batch gradient descent と言う.
    • Stochastic gradient descent が収束せず,リピートすればするほど目的関数が大きくなっていくような場合には学習率\alphaを小さくする
  • オンライン学習
    絶えずやってくるインプット(x(t), y(t)) に対してモデルが自動的に学習するモデルを構築することを考える.
    Stochastic Gradient Descentではcost(\theta, (x^{(i)}, y^{(i)})) を最小にする\theta を求めたがこれをcost(\theta, (x(t), y(t))) を最小にする\theta を求めるようにすれば,このモデルは常に新しいインプットに対して自動的に学習するモデルと言える.これをオンライン学習と言う.
  • Map-Reduce
    とても巨大なデータ数mに対して総和を取ると言うことを考えた場合,総和を取るステップは並列化できる.
    まずデータを分割して各計算単位であるノードに振り分ける(Map).各ノードが計算を終えたら,元のマスターノードに結果を返し,マスターノードは各ノードの結果を集約して出力する(Reduce).

machine learning, week 9

  • 異常検知 (Abnomaly Detection)
  • レコメンドシステム (Recommender System)

について学ぶ.

異常検知

ガウシアンをデータにフィットさせて,あるデータx^{(i)}上の正規分布の値p(x^{(i)})が閾値より小さければ外れ値とみなす.

サンプルデータx^{(i)}とその説明変数j=1\cdots nに対して

 

Screen Shot 2017-04-30 at 23.32.45

これが閾値よりも小さければ異常値と判断する.

レコメンドシステム

映画x^{(i)}とそのユーザーjによるレビューy^{(i,j)}を考える.

この関係は

y^{(i,j)}=(\theta^{(j)})^T x^{(i)}

とモデルが学習したパラメータを用いて書ける.

ところが,人によっては厳しく採点したりしてパラメータの決め方もまちまちなので,映画の要素x^{(i)}とレビューy^{(i,j)}からモデルパラメータ\theta^{(j)}を学習するだけでなく,逆に\theta^{(j)}y^{(i,j)}からx^{(i)}を学習することも必要になる.

これを行うのが,協調フィルタリング(Collaborative Filtering)で,\theta \rightarrow x \rightarrow \theta \cdots と交互にパラメータを学習していく.

Screen Shot 2017-04-30 at 23.36.17.png