#初めに
Qiita初投稿。平凡な一大学院生です。毎日だらだらとしたこんな日々を少しでも価値創造できないかと、自身の研究に関連する機械学習について一から学んでみようと思い立ち、リサーチを始めました。その中で@junichiroさんのQiita記事に目が留まり、読み進めていく中でCourseraといったスタンフォード大学のNg教授による機械学習に関するオンライン授業の存在を知りました。
大学の授業もすべてオンライン授業にもなり、その一つとして受けてみようと思い、さっそくアカウント登録してみました。この外出自粛期間を利用し、一から機械学習の基礎を学んでいきたいと思います。そして、この記事は一番は自分の理解を深めるために、また記事を書くという経験を積むために、学んだことをアウトプットしていこうと思います。
#講義の概要
Machine Learning - Coursera
登録自体は無料です。ただ全講義が終了しいた段階で、修了書が欲しい場合はいくらかお金がかかります。
機械学習の講義は全部で11週にわたり各自進めていくといった内容です。1週分は動画とその復習教材が何回かにわたって繰り返されていき、最後にテストや練習問題が行われます。一つの動画はだいたい10分程度で、全体としては3時間ぐらいはかかる見込みとなっています。講義は基本英語で進められていきますが、翻訳機能もあり日本語のスクリプトを見ながら受講することができます。
#受講1週目
さっそく一周目の授業を受講しました。一周目は約3日かけて受講することができました。
内容はざっくりと
- イントロダクション
- Machine Learningとは?
- 教師あり学習と教師なし学習
- 単一変数による線形回帰
- 線形回帰に関するモデルと目的関数
- 勾配降下法
- 線形代数の基礎
- 行列とベクトル
といった内容でした。個人的には少し英語に慣れない部分もありますが、基本的には日本語訳のスクリプトを読みながら進めて、特につまずくところはなくスムーズに受講できました。
自身の理解を深めるために、講義内容を軽くまとめたいと思います。詳細に関しては実際に受講して頂きたいです。
##イントロダクション
Machine Learningは様々な状況で活用可能。
データベースマイニング(検索データの集約)
手でプログラミングが不可能なもの(ヘリコプターの自動操縦)
自然言語処理(手書き文字認識)
Machine Learningの定義は様々。
・コンピュータに明示的にプログラムすることなく学習する能力を与える研究。
・課題Tを評価基準Pをもとに経験Eから学習すること。
機械学習の種類
・教師あり学習-コンピュータに正解を教える
・教師なし学習-コンピュータ自身が学習する
・強化学習
・レコメンダ―システム
教師あり学習とは?
アルゴリズムに与えられたデータセットに正しい答えが付与している学習方法。
・回帰問題-価格の算出など、一種の連続的な属性の値を予測する
・分類問題-がんの陰陽判断など、複数の属性が用いられた離散的な値を特徴ごとに分類する
教師なし学習とは?
ラベル付けされていないデータセットから何かしらの構造を見つける学習。
・クラスタリング-データの関係性を類似性から算出する
##線形回帰
入力値に基づいて実数地の出力を予測
トレーニングセット数mから学習アルゴリズムを通して関数hを定める。hをもとに入力値xから予測する出力値yを算出する。
変数が一つのものを単回帰という。yをxの何らかの直線の関数として予測する式が以下のようなものになる。
h θ\left( x \right)=θ_0+θ_1 x
θはパラメータであり、θ_0とθ_1の値を選ぶ際に、トレーニングセットxの値を与えて、適度な正確さでyの値に近い予測を出力する。
データに対してどのような最適な直線を当てはめるかを目的関数として定式化する。
J\left( θ_0, θ_1 \right)=1/(2m) \sum_{i=1}^m \left( h_θ \left(x^{\left(i\right)}\right)-y^\left(i\right) \right)^2
全トレーニングデータにおいて、実際のデータと回帰によって予測された関数との2乗誤差の総和を最小化する。
minimize J\left( θ_0, θ_1 \right)
線形回帰アルゴリズムの一つに勾配降下法がある。
θ_0とθ_1を少しずつ変え、Jを減少できないかを考え、いずれ局所的な最小値に到達する。
θ_j ≔ θ_j-α(δ/δθ_j)J\left( θ_0, θ_1 \right)
j=0とj=1においてこの式を計算し、局所的な最小値になるまで繰り返す。
最後に、勾配降下法と目的関数を合わせて線形回帰アルゴリズムを作成する。
##線形代数の概要
・行列の表し方
・ベクトルの表し方
・行列の加法、乗法
・行列の不可換性、結合法則
・単行列、逆行列、転置
これに関しては、習ったことがあるので簡単な復習って感じ。
#最後に
理解したつもりでも式やアルゴリズムにおいて、まだ理解の浅いところも多かったので、投稿を利用して今後も学んだことをアウトプットしていきたいと思います。(記事書くのがとても大変でした汗。慣れれるように頑張っていきたいです。)