Coursera のオンラインコース"Machine Learning^1" を完走できたので、記念に修了証を取得しました。
スタンフォード大学の Andrew Ng教授によるスライドと講義が、非常に分かりやすかったです。 世間では、機械学習を学ぶには高度な数学を理解する必要があるなどと言われることがありますが^2、Ng先生は、最小限の数学(行列・ベクトル演算と偏微分くらい)だけを使って機械学習アルゴリズムを説明してくれます。
所要時間は約70時間
ただし、このコースのボリュームは相当なもので、講義は11週間あり、毎週、試験をパスして、宿題を提出せねばなりません。 そのための所要時間は、レビューサイト^3 によれば、毎週 5〜7時間です。 この時間のなかには、宿題として、Octave(MATLAB互換のフリーウェア)で簡単なアルゴリズムを実装する時間も含まれます。 宿題の量は、日本の大学に比べると多めですが、米国の大学生はこのくらいは普通に勉強するものなのかもしれません。
機械学習アプリを作りたい
宿題のコーディングはそれなりに面白いのですが、機械学習アプリというほどのプログラムではなかったところが物足りないです。 こうなると、私もいずれは機械学習アプリ開発に参加したくなってきます。
しかし、このコースを修了しただけの私が力不足であることは否めません。 まず、実際の応用では、決定木、ランダムフォレスト、ナイーブベイズなどが使われているのを良く見かけるのですが、それらのアルゴリズムをまだ理解できていません。 また、ディープラーニングのアプリに登場する畳み込み型や再帰型のニューラブネットワークと、講義で扱われてい線型結合の多層型ネットワークの違いがよく分かりません。
そういうわけで、次に何に取り組むかを検討しています。
講義内容のまとめ
基本
- 機械学習とは
- 予測 : 特徴ベクトル(入力) --> モデル --> 予測値(出力)
- 学習 : モデルパラメーターをデータを使って最適化
- 学習アルゴリズム
- 教師あり学習 : {(特徴ベクトル1、実測値1)、 (特徴ベクトル2、実測値2)、 ... }のデータを使って最適化
- 線形回帰、ロジスティック回帰、ニューラルネットワーク、SVM(support vector machine)
- 教師なし学習 : {特徴ベクトル1、特徴ベクトル2、 ... }のデータを使って最適化
- K-平均法、PCA(principal component analysis 主成分解析)、異常検知(注:cross-validation のためにはラベル付きのデータを使うことがある。)
- 教師あり学習 : {(特徴ベクトル1、実測値1)、 (特徴ベクトル2、実測値2)、 ... }のデータを使って最適化
- 機械学習とは
実践に向けて
参考リンク
^1:Machine Learning - Stanford University | Coursera
^2:「文系エンジニアに「機械学習」は難しすぎる! ディープラーニングは難しい数式がいっぱい」東洋経済 2016年08月21日。