代表的な機械学習アルゴリズムの仕組みをわかりやすく解説!ディープラーニングとはどう違う?モデルの選び方も紹介します!
はじめに
近年大きなブームとなっている人工知能(AI)。
AIを実現するための技術の一つが機械学習で、データ分析や試行錯誤を経て得た規則性に基づき未知の物を予測するのに用いられます。
規則性を見つけ出すための手法のことを「機械学習アルゴリズム」や「機械学習モデル」と呼びますが、まさにこれが機械学習の要となる部分ですね。
ここでは、代表的な機械学習アルゴリズムの仕組みを解説し、混同されやすいディープラーニングとの違いも説明します。
また、用途に合わせた機械学習モデルの選び方についても確認しましょう。
機械学習とは
まずは機械学習について内容をおさらいしましょう。
機械学習とは、文字通り人ではなく機械(コンピューター)が学習して賢くなっていくことです。
与えられたデータの「何に注目して学習していくか?」を定めることを特徴抽出と呼び、機械学習ではこれを人間が行う必要があります。
学習過程への人間の関わり方によって「教師あり学習」「教師なし学習」「強化学習」の3つに分類されますが、違いは何でしょうか。
受信したメールが「スパムメールか否か?」を判定する学習過程を例に比較してみましょう。
まず特徴抽出からです。メールデータは「アドレス」「本文」「添付ファイル」等の項目を持ちますが、スパムメールの特徴が現れやすいのはどれでしょうか?
ここでは仮に本文に含まれる「稼げる」「出会い」「無料」というキーワードを特徴としましょう。
教師あり学習
教師あり学習では、まず学習のために膨大な量のメールと、各メールについて「スパムメールである」「スパムメールでない」の「答え」が与えられます。
この入力データと答えのセットを「教師データ」と呼び、全てのデータに答えを付与していくのは人間の仕事です。
モデルは最初は無学習状態のためランダムに回答しては答え合わせをし、法則性を学んでいきます。
回数をこなしていくうちに「出会い」「稼げる」「無料」の順に重みづけをして判断すると正答率が上がることを学んだとしましょう。
教師データを全て見終わる頃には重みづけの度合いも学習して精度を上げていきます。これが学習の結果モデルが得た「規則性」です。
なお、この例のように「スパムかどうか」を判定させる教師あり学習を「分類」と呼び、他にブログ等の記事分類や画像の人物判定等があります。
また、分類の他に「回帰」もあり、出力はカテゴリではなく実数です。例として年齢判定や消費電力予測等が挙げられます。
教師なし学習
「答え」のついていないデータが与えられるのが教師なし学習です。
「稼げる」「出会い」「無料」というキーワードをベースに学習を進めるのは教師あり学習と同様ですが、出力は「スパムメールか否か」となるとは限りません。
教師なし学習では答えが与えられないため、モデルが自分でデータを分類していくつかのグループに分ける「クラスタリング」を行うことになります。
学習の結果たまたまグループA・Bが作られ、内容を確認したらAがスパムメールでBが非スパムメールだった、となればラッキーですが、そううまくはいきません。
「出会い」に重みを置いた規則性を獲得して「出会い系メール」と「ビジネスメール」の2グループになることもあり得ます。
教師あり学習の「答え」を付与していく作業がなくすぐに開始できるものの、このように学習の方向性が思わぬ方向へ向かってしまうことがあるので要注意です。
強化学習
強化学習では、最初にまとまったデータが与えられるのではなく、試行錯誤を繰り返して学習を進めます。
どういうことかをスパムメールの例で説明すると、1つスパムメールを与えてモデルが「スパムメールである」と答えれば「報酬」を与え、間違えれば与えません。
モデルは「稼げる」「出会い」「無料」のキーワードについて様々な重みづけを試して、報酬が高かった重みづけを元に規則性を学習していきます。
強化学習はデータのパターンが膨大になりやすいロボットや自動車の自動制御、将棋や囲碁等のAIでよく用いられる手法です。
ディープラーニングとの違い
それでは、最近よく耳にするようになった「ディープラーニング」と強化学習の違いはなんでしょうか。
特徴抽出を自動化
実はディープラーニングは強化学習の一部といえるのですが、最たる違いは特徴抽出の方法です。
機械学習では人間が行っていましたが、ディープラーニングは後ほど紹介する「ニューラルネットワーク」を強化したもので、特徴抽出も自動で行います。
学習精度が飛躍的に向上
特徴抽出は学習過程の根底となるもので、ここがうまくできなければ期待した出力が得られません。そのため、特徴抽出はある意味職人技ともいわれていました。
機械が最適な特徴抽出を行うことで学習精度が飛躍的に上がったため、ディープラーニングが大きな注目を集めているのです。
パーセプトロン
ここからは代表的な機械学習アルゴリズムを解説していきます。
データを多次元ベクトルで表現
パーセプトロンは抽出した特徴に基づいてデータをベクトルで表現し「基準となるベクトルと似ているかどうか?」で分類を行う教師あり学習です。
ベクトル内積で類似度を数値化
この「似ているかどうか」は2つのベクトルの内積として数値化します。わかりやすさのために2次元ベクトルで考えてみましょう。
内積は2つのベクトルの向きと大きさが近いほど大きくなり、ベクトル同士が成す角度が鋭角の場合は正、直角なら0、鈍角の場合は負となります。
例えば、基準ベクトルとの内積が正ならスパムメールである、負ならスパムメールではないと判定するのです。
最初は基準ベクトルを適当な向きとサイズにしておき、学習していく中で正解・不正解に合わせ変更していき、最終的な基準ベクトルが定まります。
k平均法(クラスタリング)
k平均法(クラスタリング)は、例えば新入社員を性格テストの結果に基づきグルーピングするために使用される教師なし学習です。
データが空間上にマッピングされている状態で、例えば5個のグループに分けたい場合、最初に5個の核となるデータがランダムに選定されます。
全データについて5個の核との距離を計算して最も近い核のグループに入れていき、これを仮の5グループとしましょう。
各グループの重心を取って新たな核とし、グルーピングを核の移動がなくなるまで繰り返すことで最終的なグループ分けが完成します。
線形回帰
線形回帰は、例えばアイスクリームの売上を予測するために気温や曜日といった売上に影響を及ぼしそうな項目を特徴として分析し関係性を導き出す教師あり学習です。
独立変数と従属変数
単純化のために気温だけを特徴としてみましょう。この時、気温を独立変数、売上を従属変数と呼び、それぞれをx軸とy軸として(x, y)を2次元空間にマッピングします。
暑いほどアイスクリームが売れるので、データは右肩上がりの形で点々と分布するはずです。
最小二乗法による関係式の導出
この右肩上がりをなぞるように直線を引ければ、yをxの一次関数で表すグラフとなります。どの引き方をすれば最もxが良くyを説明できるかが線形回帰の肝です。
引いてみた直線からそれぞれのデータ座標への距離の合計が最小となるパターンを最良とし、この手法を最小二乗法と呼びます。
あとは任意のx(気温)に対してこの直線で表される一次関数を適用すればy(売上予測)が求められますね。
決定木
決定木は、例えばある商品について特定層の顧客が買いそうかを予測するための教師あり学習です。
段階的に分類・回帰
パーセプトロンや線形回帰と同様に「どんな基準値を区切りにデータを分けると最も精度良く予測できるか」を求めるのが目的ですが、段階的に複数回分類します。
商品購入顧客の例ならば、販売実績データをまず性別で区切って、男性側は年齢、女性側は居住地でさらに区切る、といった具合です。
木構造モデル
複数回に区切っていくことで木の枝のように分類されたモデルが完成し、これが決定木と呼ばれる理由です。
様々な木を作っては答え合わせをし、最も分類性能が高く正解率の高かった木が最良モデルに落ち着きます。
分類だけでなく「いくらで買いそうか?」等の回帰にも適用可能です。
分類性能がそこまで高くなく不安定なので、少しデータが変わるだけで全く違う決定木になってしまうという短所があります。
ランダムフォレスト
ランダムフォレストは決定木を複数使ってパワーアップした教師あり学習です。木がたくさん集まって森(フォレスト)になったと考えると覚えやすいですね。
まず、データをバギング(Bootstrap Aggregatingの略)と呼ばれる方法でなるべくデータ多様性を保った複数のサブセットに分けます。
これらのサブセットからそれぞれ決定木を作成し、分類する場合は各決定木での出力の多数決、回帰するならば平均値をもって最終出力とするわけです。
多くのデータが必要になりますが高精度という特徴があります。
ロジスティック回帰
ロジスティック回帰は、例えば「癌治療後経過年数ごとの死亡率」のように「確率」を出力するための回帰手法で、教師あり学習の一つです。
線形回帰と似ていますが、従属変数を独立変数が説明するのに線形な関数を使っていたのに対し、ロジスティック回帰ではシグモイド関数という非線形関数を用います。
これは出力として「確率」が欲しいため、従属変数が0〜1の間に収まるようにする必要があるからです。
他には、ダイレクトメールの開封率や地震発生予測等に活用されています。
ニューラルネットワーク
ニューラルネットワークはヒトの脳神経細胞であるニューロンをヒントに開発されたアルゴリズムで、教師あり・教師なし・強化学習のいずれの形態でも適用可能です。
ニューロンは細胞体を中心に複数の樹状突起(入力部分)と軸索(出力部分)からなります。
ニューラルネットワークの構造は、これをモデル化したニューロンによる入力と出力を数段階繰り返す一連のニューロン層です。
最初のニューロン層を入力層、次を中間層、最後を出力層と呼び、中間層は1層とは限らず複数層になることもあります。
回帰と分類のみならず画像認識や音声認識に翻訳等、様々な分野で応用されているアルゴリズムです。
サポートベクターマシン(SVM)
サポートベクターマシン(SVM)はデータをベクトルとして扱い、最も良く区切る平面を見つけ出し分類や回帰を行うための教師あり学習です。
この「最も良く区切る平面」のことを分離超平面と呼び、たくさんの平面を試して2つのグループ間のマージンが最大になるものを採択します。
1963年の発表当初は線形でしか区切れませんでしたが、1992年に空間の方を歪ませることで非線形な区切りも可能となりました。
画像認識の分野で性別検知や年齢判断等、高い効果を発揮しています。
機械学習モデルの選び方
機械学習には様々なモデルがあることがわかりました。では、どのモデルを選べば良いのでしょうか?
基本的にはアルゴリズムの内容を良く理解し、用途に合っていそうかどうかを自分で判断する必要があります。
それでも複数の候補がある場合は「求められる予測精度」と「結果の説明しやすさ」を考慮すると良いでしょう。
予測精度の高さ
それぞれのアルゴリズムには長所短所がありますが、重要視されやすいのは予測精度です。
例えばブログ記事を何となくカテゴリ分けできればいいのか、ローンの利率を信用度から推定しなければならないのかによっても求められる精度が変わってきます。
下記は予測精度の分類です。
高精度
- ニューラルネットワーク
- サポートベクターマシン(SVM)
- ランダムフォレスト
低精度
- 決定木
- 線形回帰
- ロジスティック回帰
- k平均法(クラスタリング)
- パーセプトロン
精度が高いモデルは演算に時間がかかる、膨大なデータが必要といったデメリットもありますので、リソースとも相談して決めると良いでしょう。
結果の説明しやすさ
機械学習で分類や回帰を行った結果、思わぬ間違った出力が得られることがあります。
もしこれが原因で実害が出た場合には関係各者へ説明し了承してもらう必要がありますし、同じ間違いを繰り返さないように再学習が必要です。
いずれの場合も、学習過程でなぜこうなったかを後から追えるようになっている必要があります。
これが比較的簡単にできる場合「説明しやすい」といい、大まかな分類は下記の通りです。
説明しやすい
- 決定木
- ランダムフォレスト
- ロジスティック回帰
- 線形回帰
- k平均(クラスタリング)
説明しにくい
- ニューラルネットワーク
- サポートベクターマシン(SVM)
- パーセプトロン
まとめ
代表的な機械学習アルゴリズムとモデルの選び方を紹介しました。どのアルゴリズムも歴史が長く、単体で1冊の本になるほど奥が深いものばかりです。
ここでは詳しい内容までは解説できませんでしたが、興味を持った方はぜひ書籍や論文を手に取り深堀りしてみてください。