アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

courseraのMachine Learning(機械学習)の講義内容まとめ(6〜11講義の概要)

前回に引き続き、courseraのMachine Learning(機械学習)コースの講義概要を書きます。

知識ゼロで見るとよくわからない内容ですが、機械学習が学ぼうとしてるなら何言ってるかおおまかにわかるはず。これから機械学習を学んでみようと思うのでcourseraのMachine Learning(機械学習)コースを受講しようという人には役立つと思います。

また自分はディープラーニングを学びたくてこの講義を受講したのですが、ディープラーニングを学びたい場合どのような勉強法をやればいいのかは別記事にまとめる予定です。

あくまで備忘録ですが、1〜5講義の内容はこちら

目次
講義6.学習アルゴリズム診断
講義7.サポートベクターマシーン(SVM
講義8.クラスタリング(教師なしデータ)アルゴリズム
講義9.アノマリー検出
講義10.大規模スケールの機械学習
講義11.機械学習の応用テクニック


f:id:trafalbad:20170303115903j:plain

講義6.学習アルゴリズム診断



概要
学習アルゴリズムを効果的に改善する方法、上手く学習できてるか診断する方法、どうすれば学習アルゴリズムを効果的に実装できるかについて専門的なテクニックをいくつも紹介しています。


テクニックも使えますが、「扱う変数となるフィーチャー(特徴)が多い場合はトレーニングセットとテストセットに分けるべき」など、より実践的なアドバイス機械学習エンジニアには参考になります。



出てくる式やテクニック

機械学習診断:データセットが多い場合、そのデータセットをトレーニングセット、クロスオーバーセット、テストセットに分けるという内容。

高バイアスと高分散問題:学習アルゴリズムが上手くいってないときの典型的な問題とその解決策を提示


機械学習のデザイン戦略:学習アルゴリズムを設計するときの効果的な戦略を紹介。

・〜%などその学習アルゴリズムの良し悪しを判断する単一の評価指数があると便利(Fスコアなど)
・まず初心者がやるべきことは、データを集めて汚くてもいいので動くアルゴリズムを実装すること。それからアルゴリズムを改善すればいい
アルゴリズムで解くべき問題に対して「その分野の専門家に聞いても答えられる問題どうか」を考えて、答えられないようならばデータがもっと必要



講義7.サポートベクターマシーン(SVM



概要
ロジスティック回帰以外に、より複雑な非線形の関数を扱うよりパワフルな手法として、サポートベクターマシーン(SVM)を紹介。

SVMはロジスティック回帰とは違うテクニックなため、カーネルという手法と一緒に使います。よりアドバンスドな(進んだ)非線形問題のためのテクニックです。


出てくる式やテクニック

SVMSVMの手法はグラフにプロットしたとき、与えられたデータからの距離が最も大きくなるような直線を引く関数を求めます。

カーネル:データセットから得た目印(ランドマーク)とフィーチャーをグラフ上に視覚化したとき、その2つの距離が近れければ近いほど、2つの類似度が高いことを表す関数。

SVMカーネルと一緒に用いることが多く、かなり発展的な内容です。数式ばっかりで頭が痛くなります。



講義8.クラスタリング(教師なしデータ)アルゴリズム



概要
今までは教師ありデータアルゴリズム(テストセットのデータが与えられている)分類問題だった。

しかし、講義8からは教師なしデータアルゴリズム(テストセットのデータが与えられていない:例Googleニュースでは機械がたくさんのニュースを自動でカテゴリ別に分類)分類問題を扱う。教師なしデータアルゴリズムがすることはクラスタリングと抽出です。その上でのテクニックを紹介



出てくる式やテクニック
K-means:与えられたデータセットをグラフ上に可視化し、その可視化した点を2つ、もしくはそれ以上に分類するテクニック(重心を決めて、データセットの平均から重心が収束する点を求め、分類する)。

K-meansのコスト関数や初期化の方法も紹介。



次元削減機械学習は特徴を表す変数(フィーチャー)により次元が異なるが、次元が多いほどアルゴリズムの学習スピードは遅くなる。そのため次元を減らす(2次元を1次元とか、50次元を2次元に減らす)テクニックを紹介。
次元削減で主に使われるのは主成分分析(PCA)。またPCAの次元を元に戻すテクニックもある。



講義9.アノマリー検出



概要
アノマリー検出はフィーチャーを持つデータセットに対して、「それがテストセットになるか」または、「普通ではない(異常な)フィーチャーか」を学習アルゴリズムに確率として教えることができる(例えば、ネット上のユーザー情報の中で異常なユーザーの行動を特定する)。


フィーチャーを持つ未知のデータセットに対して、それをテストセットとして扱えるかを分類します。扱うデータのフィーチャー(特徴)が

・データセットと似たものである→教師あり学習アルゴリズムを使う
・逆にまったく見たこともない→アノマリー検出で対応する

出てくる式やテクニック

ガウス分布アノマリー検出に使うグラフのテクニック


アノマリー検出のフィーチャーのデザイン方法アノマリー検出で見つかった異常なフィーチャーから、さらに新しいフィーチャーをデザイン(設計)する方法。


レコメンダーシステム、協調フィルタリング、多変量ガウス分布アノマリー検出をより拡張したときに使うテクニック。



講義10.大規模スケールの機械学習



概要
今まではデータのフィーチャーが1万個くらいのデータセットの問題(バッチサイズ)を扱っていました。ここでは1億レベルのフィーチャー(大規模スケール)を扱う機械学習のテクニックを紹介しています。


主に扱うのは勾配降下法の大規模スケール版である確率的勾配降下法。また大規模スケールの問題をミニバッチサイズ(1000個ほどのフィーチャー)で対処するテクニックもあります。



出てくる式やテクニック
確率的勾配降下法:今までの勾配降下法はデータをすべて式で計算してやっと一回更新するため、大規模スケール(億レベル)だと膨大な時間がかかります。

しかし確率的勾配降下法はすべてのデータを一回式にかければ、最小値に収束します(最小値が見つかる)。



確率的勾配降下法の収束確認法と学習率の選択法確率的勾配降下法では最小値の付近を振動するような線を描くため、最小値に収束しているかを確認する方法。
および、確率的勾配降下法の計算式の学習率(α)の選び方


講義11.機械学習の応用テクニック



f:id:trafalbad:20170303115929j:plain

概要
写真内の文字を読み取るPhotoOCRと呼ばれる技術を例にとり、機械学習を様々な分野に応用できるテクニックを紹介。

音声分析や画像分析にも使えるテクニックや、エンジニアとして効率的に機械学習を進めるテクニックを説明しています。

機械学習で無駄なことはせっかく集めたデータが使えないとわかり、データ集めに費やした時間が無駄になることです。その時間ロスを減らすには大量のデータを収集する前に、大量のデータがそもそもアルゴリズムで活用できるかじっくり考えること。


出てくる式やテクニック
PhotoOCR:紙媒体の文字を読み取るOCRの高度なバージョンで、写真内の文字を読み取る技術。その中でもスライディングウィンドウ分類器は、車や歩行者の判別など様々な分野に応用されています。


人工データ合成:学習アルゴリズムの理想は「低バイアスで大量のデータセットを読み込める」こと。それを実現するテクニック。やり方は無からデータを作り出すか、少ないデータを増幅する。

シーリング(天井)分析機械学習を段階別に分けたステップを「パイプライン」と呼び、どのパイプラインに時間を費やすか調べる技術。機械学習で無駄を極限まで減らすテクニック。



今回はcourseraの機械学習コースの講義6〜11までをまとめました。内容的には機械学習にさわろうという人なら、何を学べるかわかるので参考になる内容ではないでしょうか。

とにかくcourseraは機械学習の全体像を把握するのに一番手っ取り早いでしょう。ここまでまとまってる知識は書籍ではまずないし、おそらくcourseraでしかここまで体系立てて学べないはずです。機械学習のとっかかりにはベストの講義だと思います。無料ですし。

後になってわかったのですが、ディープラーニング機械学習分野の一部でしかありません。

ディープラーニングやcourseraの効率的な学習方法は別記事にてまとめようと思います。

1〜5講義までの内容はこちらの記事をどうぞ。
trafalbad.hatenadiary.jp