(Pythonを軽く実務で使った経験があり、大学では軽く統計を学んで、情報系とは関係のない専攻で理系の大学院を卒業した程度の)私でも手軽に学べて触れる機械学習のサイトか何かないかなと思っていたところ、面白そうなサイトがあったので実際に使ってみました。
自分のメモも兼ねて、やってみた感想や憶えておきたいことなどメモしていきます。(Qiita初投稿なので、読みにくいなどありましたら、すみません)
Step1. 準備編
1. はじめに
主にやることは、Google Colaboratoryの環境導入だけで、指示に従っていけばすんなり導入できます。Jupyter Notebook環境をクラウド上で提供するGoogleのウェブサービスということで、GPUを無料で使うこともできるようです。
また、Pythonの学習ではJupyter Notebookを使っていたので、安心感がありました。
2. Python入門
基本的に、コードは既に入力されているので、あとは自分で実行するだけで進めます。特に計算に関わるPythonの基礎知識が中心ですが、一通り目は通しました。忘れたところは、あとで調べることにはなりそうですが。「クラス」「継承」のパートがすっきりまとまっていて改めて頭が整理できました。
クラスの復習
オブジェクト指向プログラミングにおいて重要なクラス周りの考え方について。
- クラス:核となる全体の設計図(init()はクラスからオブジェクトを作成、つまりインスタンス化する際に自動的に呼ばれる)
- オブジェクト:クラスを基に作成した実体(メソッド、つまりクラス側の関数を呼び出したり、属性つまりオブジェクト内の変数を格納する)
3. 機械学習に使われる数学
機械学習の考え方について大枠の説明です。
機械学習とは
与えられたデータから未知のデータにも当てはまるような規則やパターンを抽出し、それを基に未知のデータを分類したり予測する手法を研究する学術領域。
教師あり学習
機械学習の代表的な問題設定。あらかじめ問題に対する答えを用意しておき、その関係性を予想し(直線近似など)、問題に対する予想値と実際の値の差がなるべく小さくなるようにする。
- 汎化性能(generalizability):未知のデータに対する予測の精度
- モデル:データの特徴や関係性を表すもの。この説明の例だと、f(x)=wx+bのような直線の計算式。(ただし、様々な考え方があり、統一的な意味で用いられているわけではない)
目的関数
何が良いパラメータかを定義する指標を表す関数。
入力値 xと、目標値(実際の答え)tがあり、適当なモデル(この場合、wx+b)から計算できる予測値 yがある。目的関数はそのモデルの予測値と目標値を受け取って、その間の差異を測って返す関数。
二乗誤差関数
予測値と目標値の間の差の二乗によって予測値の正確さを測る。
二乗誤差の平均が、平均二乗誤差と呼ばれる。この値が小さければ小さいほど、最適なパラメータであると言える。
4. 微分の基礎
基本は高校数学の復習になります。
5. 線形代数の基礎
初見は難しいと思われますが、一度学んだことがあるからか、かなりわかりやすく簡潔にまとまってると思いました。
5.5以降のベクトル値関数の微分で、4章で学んだ偏微分の知識などが活きてきます。
6. 統計の基礎
前半は確率の復習です。「条件付き確率」などわかっていれば、単語が初めて聞いたものだったとしても、理論は理解できるかと思います。
後半(尤度~MAP推定)は初めて聞く単語もあり、概念中心の説明だったので、難しく感じました。雰囲気がつかめればとりあえずいいのかな・・・?
最後の統計量の説明は、読めばわかるかと思います。
初めて知った単語など
- 周辺化:同時確率(例:サイコロA,Bを二つ転がす)が与えられたときに、着目していない方(例:サイコロB)の確率変数がとりうるすべての値について、同時確率を計算してその和を取ること。その確率は周辺確率と呼ばれる。周辺確率を一覧にしたのが周辺確率分布。2つの確率変数の同時確率を一覧にしたのが同時分布。
- ベイズの定理:条件付き確率とは逆で「ある”結果”が観測されたときに、ある事象が”原因”となっている確率」。例:https://bellcurve.jp/statistics/course/6444.html (統計WEB)
- 尤度(ゆうど):観測データからもっともらしい事象の確率を推定すること(?)(例えば、コインをトスする試行を1000回繰り返し(つまりデータを掛け合わせていくということ)、コインが表になるもっともらしい確率を予測して、推定した値。的な?尤度の正規分布を考えれば、微分の値が0になるところが最大値になる。この推定が最尤推定と呼ばれるもの?)
- MAP推定:事前分布(ある前提条件で考えられる計算式を基にした分布的な?)から、パラメータ(最尤?)を推定すること。
- 不偏分散:標本集団(母集団のうち作為的に抽出した集団)のデータ数が少ないときに、標本分散は母集団の分散よりも小さくなるため、その差分を補正した分散(データ数が多ければ値は標本分散とほぼ一緒になる)。
演習問題は飛ばします。ここまでは基礎をただただ勉強する感じでしたね。。。
次は、第2章「機械学習とデータ分析入門」に入ります。
参考
- Chainerが作った「ディープラーニング入門」が凄すぎる!https://qiita.com/DogFortune/items/221c182bc872025a57e7
- 人工知能(AI)ニュース
【Chainer】ディープラーニング初学者向けのチュートリアルを無償公開。Pythonの使い方から実装までの流れを学べるhttps://ledge.ai/chainer-tutorial/