機械学習の理論をごまかさずに数式で説明しきることがコンセプト(数式が分からなくても理論の内容は理解できる)。機械学習の基本的な考え方から、代表的なアルゴリズムまでコンパクトにまとまっています。サンプルコードを使って手を動かしながら学べる点もGood。
↑気になったらここからポチっと↑
見よう見まねで機械学習をやってきたので、きちんと理論を(概要レベルでもいいから)理解しておこうと思い、後付けで理論の学習第二弾。
他にもクロスバリデーション(交差検証法)というモデルの精度を上げる手法も解説されています。ソムリAIでもそうでしたが、一般的な機械学習では元のデータを訓練データと検証データ(テストデータ)に分け、訓練データでモデルを作成します。そして検証データでモデルの精度を測ります。訓練データに対する精度と検証データに対する精度がともに高ければ汎化能力が高く過学習が発生していないモデルと判断できます。
クロスバリデーションは、「訓練データ・検証データを複数用意することでモデルの精度をさらに上げる手法」です。例えば、データをa,b,c,d,eの塊で5分割し、aを訓練データとしたときのモデル・bを訓練データとしたときのモデル・・・eを訓練データとしたときのモデルという感じで、5つのモデルを作ってそれらを総合することでより精度の高いモデルを作るイメージです。
数学的に言うと、「入力に使うデータの背後にはM次多項式の関数があり、さらに標準偏差σの誤差(確率的なぶれ)が含まれていると仮定する」ということだそうです。統計っぽく言うと、「それぞれの観測点が、背後の正規分布に従った観測値であると仮定する」とも言えます。正規分布とは釣鐘状の曲線です。
このあたりから確率・統計の考え方が必要となるため、解説に出てくる数式の難易度が一段階上がります。データのばらつきを表す「分散」や「標準偏差」「普遍分散」などが登場します。数学がつらくても、概念の理解は十分に可能です。
最小二乗法のところでも少し触れましたが、入力に掛け合わせる重みを最適化します。最小二乗法では、「観測値(元データにある解答データ)とモデルの算出値の差の最小化」を目指します。単純な差(引き算)だけだと差がプラス・マイナスの両方になり、うまく比較できないので二乗してプラスに統一して比較します(二乗誤差と呼ばれます)。このあたりは統計を学んだ方であれば理解しやすいと思います。
二乗誤差が最小化されるポイントは、ベクトルで表現すると勾配ベクトルが0になるポイントと言えるのだそうです。以前読んだ機械学習の本にも出てきた確率的勾配降下法とは、「正しく分類されなかった点をランダムに選びながらパラメータを修正する方法」です。イメージはn次方程式のウネウネした形の器の上にボールがあって、器をゆすって一番低いところ(=重みが最適化されるポイント)である「底」を見つけるイメージなのです。言葉で書くと簡単に見えますが、ベクトルも出てくるので数学的にはまたまた難易度が上がるのです。
また、真陽性と偽陽性のトレードオフについても紹介されています。真陽性とは「陽性と判定されて本当に陽性だった場合(病気と診断されて本当に病気だった場合)」で、偽陽性とは「陽性と判断されたけど実際は陰性だった場合(病気と診断されたけど病気じゃなかった場合)」です。ざっくり言うと、真陽性を高めようとすると(病気の人の見落としを減らそうとすると)、偽陽性も高まる(間違って病気と判断される人も増える)ということです。ファーマ系の仕事の方にはなじみのある考え方かもしれません。
真陽性率と偽陽性率の関係を表したのがROC (Receiver Operating Characteristic)曲線であり、複数のアルゴリズムの優劣を比較するのに使われます。両者のトレードオフを可視化した曲線です。ROC曲線で囲まれた右下のエリアの面積をAUC (Area under the curve)と呼び、これが大きいほど良いモデルということになります。
理屈は割りとシンプルで、例えば2つに分類する場合、データの中からランダムに2つを選び、他のデータがどちらに近いか距離を計測し分類します。暫定的に分類された2つのグループの重心を計算し、その重心に対してすべてのデータがどちらに属するか分類することを繰り返して、データの並び替えが行われなくなったポイントが最適点とみなします。適当に選んだポイントを基準にグルーピングを行い、そのグループの真ん中で再度分類して・・・を繰り返して分類されなくなったらきれいに分けられたというイメージです。
応用すると、画像ファイルに含まれる代表色(その画像で多く使われている色)を抽出したり、単語の出現頻度や専門用語の出現頻度を使って文書データをグルーピングすることも可能だそうです。
k平均法と似たモデルとして、教師あり学習のk近傍法についても触れられています。推定すべき変数に対して毎回学習し直すk近傍法は怠惰学習モデルとも呼ばれるそうです。
EMアルゴリズムを搭載した画像生成器(機械学習のモデル)は元データから、各ピクセルが黒になる確率(白になる確率)を算出し、ランダムに描画します。手書きデータのトレーニングセットから画像生成器(モデル)を作って、正しい画像を生成できる確率を考えるようなイメージです。数学的には、代表点や重心を算出するような数式が出てくるので、k平均法と近しいアルゴリズム・数式になるそうです。EMアルゴリズムは与えられたデータから機械が自分でモデルを作る「教師なし学習」であり、特徴量に基づいたクラスタリングであるため、例えば手書き文字が「0」であっても字の字形によっては「3」に分類されたりするのです。
お気づきかもしれませんが、EMアルゴリズム・ベイズ推定あたりで僕の数学理解力は限界を迎え、概念レベルで理解するのがやっとでした。なので、興味のある方・数学的に理解したい方はこの本を直接読んでいただくと幸せになれるかもしれません。
↓気になったらここからポチっと↓
↑気になったらここからポチっと↑
見よう見まねで機械学習をやってきたので、きちんと理論を(概要レベルでもいいから)理解しておこうと思い、後付けで理論の学習第二弾。
この本を読むとわかること
最小二乗法:機械学習の第一歩
何回か紹介しているパーセプトロンの入力に対する重みを最小化する話です。f(x)=w0+w1x1+w2x2+...+wmxmというパーセプトロンの出力を解答データに近似させる重みwを決めます。元のデータで入力x(変数)と出力y(解答)が分かっているので、wの関数(上の例だとwのm次方程式)を解けばよいのです。このあたりの話が数式を交えて紹介されています。他にもクロスバリデーション(交差検証法)というモデルの精度を上げる手法も解説されています。ソムリAIでもそうでしたが、一般的な機械学習では元のデータを訓練データと検証データ(テストデータ)に分け、訓練データでモデルを作成します。そして検証データでモデルの精度を測ります。訓練データに対する精度と検証データに対する精度がともに高ければ汎化能力が高く過学習が発生していないモデルと判断できます。
クロスバリデーションは、「訓練データ・検証データを複数用意することでモデルの精度をさらに上げる手法」です。例えば、データをa,b,c,d,eの塊で5分割し、aを訓練データとしたときのモデル・bを訓練データとしたときのモデル・・・eを訓練データとしたときのモデルという感じで、5つのモデルを作ってそれらを総合することでより精度の高いモデルを作るイメージです。
最尤推定法:確率を用いた推定理論
最尤推定法(さいゆうすいていほう)、言葉からして難しそうですが「最」も「尤」も訓読みは「もっとも」です。雑に言うと「もっともそれらしいものを推定しよう」という意味合いです。「それらしいものを推定する」ということで確率の概念が登場します。数学的に言うと、「入力に使うデータの背後にはM次多項式の関数があり、さらに標準偏差σの誤差(確率的なぶれ)が含まれていると仮定する」ということだそうです。統計っぽく言うと、「それぞれの観測点が、背後の正規分布に従った観測値であると仮定する」とも言えます。正規分布とは釣鐘状の曲線です。
このあたりから確率・統計の考え方が必要となるため、解説に出てくる数式の難易度が一段階上がります。データのばらつきを表す「分散」や「標準偏差」「普遍分散」などが登場します。数学がつらくても、概念の理解は十分に可能です。
パーセプトロン:アルゴリズムの基礎
前述した最初の2章が機械学習における最適な重みの算出方法でした。ここからは機械学習のモデル(アルゴリズム)の紹介です。まずは機械学習の基礎となっているパーセプトロンからです。最小二乗法のところでも少し触れましたが、入力に掛け合わせる重みを最適化します。最小二乗法では、「観測値(元データにある解答データ)とモデルの算出値の差の最小化」を目指します。単純な差(引き算)だけだと差がプラス・マイナスの両方になり、うまく比較できないので二乗してプラスに統一して比較します(二乗誤差と呼ばれます)。このあたりは統計を学んだ方であれば理解しやすいと思います。
二乗誤差が最小化されるポイントは、ベクトルで表現すると勾配ベクトルが0になるポイントと言えるのだそうです。以前読んだ機械学習の本にも出てきた確率的勾配降下法とは、「正しく分類されなかった点をランダムに選びながらパラメータを修正する方法」です。イメージはn次方程式のウネウネした形の器の上にボールがあって、器をゆすって一番低いところ(=重みが最適化されるポイント)である「底」を見つけるイメージなのです。言葉で書くと簡単に見えますが、ベクトルも出てくるので数学的にはまたまた難易度が上がるのです。
ロジスティック回帰とROC曲線:学習モデルの評価方法
まずはソムリAIでも登場したロジスティック回帰です。確率の概念を含む最尤推定法を使う点がパーセプトロンとの違いです。また、真陽性と偽陽性のトレードオフについても紹介されています。真陽性とは「陽性と判定されて本当に陽性だった場合(病気と診断されて本当に病気だった場合)」で、偽陽性とは「陽性と判断されたけど実際は陰性だった場合(病気と診断されたけど病気じゃなかった場合)」です。ざっくり言うと、真陽性を高めようとすると(病気の人の見落としを減らそうとすると)、偽陽性も高まる(間違って病気と判断される人も増える)ということです。ファーマ系の仕事の方にはなじみのある考え方かもしれません。
真陽性率と偽陽性率の関係を表したのがROC (Receiver Operating Characteristic)曲線であり、複数のアルゴリズムの優劣を比較するのに使われます。両者のトレードオフを可視化した曲線です。ROC曲線で囲まれた右下のエリアの面積をAUC (Area under the curve)と呼び、これが大きいほど良いモデルということになります。
k平均法:教師なし学習モデルの基礎
ロジスティック回帰はモデルが予測した値と元のデータに含まれる解答データ(教師データ)を比較する「教師あり学習」という機械学習アルゴリズムでした。k平均法は、「与えられたデータからアルゴリズムがグループ分け(クラスタリング)を行う教師なし学習」の手法なのです。理屈は割りとシンプルで、例えば2つに分類する場合、データの中からランダムに2つを選び、他のデータがどちらに近いか距離を計測し分類します。暫定的に分類された2つのグループの重心を計算し、その重心に対してすべてのデータがどちらに属するか分類することを繰り返して、データの並び替えが行われなくなったポイントが最適点とみなします。適当に選んだポイントを基準にグルーピングを行い、そのグループの真ん中で再度分類して・・・を繰り返して分類されなくなったらきれいに分けられたというイメージです。
応用すると、画像ファイルに含まれる代表色(その画像で多く使われている色)を抽出したり、単語の出現頻度や専門用語の出現頻度を使って文書データをグルーピングすることも可能だそうです。
k平均法と似たモデルとして、教師あり学習のk近傍法についても触れられています。推定すべき変数に対して毎回学習し直すk近傍法は怠惰学習モデルとも呼ばれるそうです。
EMアルゴリズム:最尤推定法による教師なし学習
手書き文字の判定などで使われるアルゴリズムです。EMとは、「Expectation Maximization」の略で、「期待値の最大化」的な意味合いです。手書き文字判定では元の白黒画像の各ピクセルの色(白・黒)を0・1で横に1次元で並べたmnistと呼ばれるデータを使います(mnistとはMixed National Institute of Standards and Technology databaseの略だそうです)。
たとえばこんなの↓
機械は右の表のような数字の羅列として手書き文字データを扱う(白が0、黒が1)
【ソース】EMアルゴリズムを搭載した画像生成器(機械学習のモデル)は元データから、各ピクセルが黒になる確率(白になる確率)を算出し、ランダムに描画します。手書きデータのトレーニングセットから画像生成器(モデル)を作って、正しい画像を生成できる確率を考えるようなイメージです。数学的には、代表点や重心を算出するような数式が出てくるので、k平均法と近しいアルゴリズム・数式になるそうです。EMアルゴリズムは与えられたデータから機械が自分でモデルを作る「教師なし学習」であり、特徴量に基づいたクラスタリングであるため、例えば手書き文字が「0」であっても字の字形によっては「3」に分類されたりするのです。
ベイズ推定:データを元に「確信」を高める手法
ベイズ推定は「観測データが特定の正規分布から得られる」ことを前提にしており、条件付確率のように前提条件によって範囲を限定すると確率の値が変化するという性質を活かして確率の値を変えていく(確信度を高めていく)手法だそうです。算数の確率の問題であったような、「赤白二色のボールが何個か袋に入っていて、1個とったボールが赤かったときに次に白が出る確率を求めなさい」みたいな、条件をつけて確率の範囲を狭めていくようなイメージです。最終的に導かれた確率分布の平均値が最適な重みwに相当するのだそうです。お気づきかもしれませんが、EMアルゴリズム・ベイズ推定あたりで僕の数学理解力は限界を迎え、概念レベルで理解するのがやっとでした。なので、興味のある方・数学的に理解したい方はこの本を直接読んでいただくと幸せになれるかもしれません。
↓気になったらここからポチっと↓