この度、巷で話題の機械学習に飛びついてみました。 昔に触れたときは、機械学習の数式の気迫に押しやられてしまったので、今回は実践的なプログラムを通して学んでいきたいです。 この記事は以下で紹介する書籍に基づいた初学者の勉強ノートとしてシリーズ化すると思います。

参考書籍

スッキリわかる Python による機械学習入門 – 須藤秋良 著/株式会社フレアリンク 監修

機械学習の概要

機械学習は、AI(人工知能)の実現手法の一つ。

\[機械学習 \in 人工知能\]

AI というのは「人間の思考や判断を再現したコンピュータシステム」と捉えると良い。 例えば道端の花を見て桜か梅かと判断するとか、RPG でキャラの行動を選択するとかは「人間の思考や判断」といえる。 そういった思考や判断を行うコンピュータシステムがあれば、そいつが AI となる。

RPG のキャラ行動 AI は例えば、10%の確率で即死魔法を打つ、仲間が倒されると発狂モードに入る、といった人間のお手製条件式(if 文)で表せる。 一方花の画像を基に梅か桜か判断する AI の判断条件は、単純な if 文では表現が難しい。 なので、大量のデータから AI の判断条件を計算により導く手法として、機械学習がある

さらにいえば、大量のデータを扱うために確率論・統計学が必要で、計算の効率化やアルゴリズム設計のために線形代数・微積分が必要となる。 なので機械学習は理解が難しい。

機械学習を特徴づける要素として、学習の仕方がある。 大別すると教師あり学習と教師なし学習の 2 つになる。 教師あり学習は、「入力と、それに対する正しい答え」を大量に受け取って入力と出力との法則を導く学習方法。 教師なし学習は、「入力」だけを大量に受け取って入力データ同士の特徴の類似性などを見つける学習方法。

機械学習では、データ間の法則を数式で求められると仮定する。 たとえば、ある日のソフトクリームの売上 \(y\) がその日の気温 \(x\) に関係するという法則があるとする。 このとき、法則は \(y=Ax+B\) かもしれないし \(y=A\sin x+B\cos 4x+C\sqrt{x}\log x+D\) かもしれない。 このようなそれぞれの数式をモデルとよんで、モデルの中の未知の係数(\(A\)から\(D\))をデータから推測するのが機械学習のアルゴリズムである。

どのモデルでも学習ができるが、モデルによってデータに適するものを選ぶのがよい。 下図のように、向き不向きがある。

モデル