機械学習概観 ~その① 学習フレームワーク論編~
今回は,機械学習という分野の概観,そしてそのフレームワークについて話していきたいと思う. なお,機械学習についての注意点・初心者が留意すべき点に関しては以下の記事を参考していただきたい.
さて,いざ機械学習の勉強を始めると,いきなり最尤推定とか最小二乗回帰など,「手法」の話が始まり,結局自分が今何をゴールにしており,何を勉強しているのか,そして最近よく聞く「ディープラーニンング」などの単語とどう関連するのか見えないことが多い. なので,自分なりの解釈になるかもしれないが,まず全体像から提示していきたいと思っている.
機械学習を構成する3要素
機械学習は,(あくまでも私見だが)大雑把に言うと以下の3つの方向性で研究されている.
- 学習フレームワーク論: 与えられた問題設定下で,どのような損失関数or報酬関数を設計し,それがどのような性質を持っているのかについての研究
- モデリング論: 予測などを行う際に,線形モデルやカーネルモデルなど,どのようなモデルやパラメータを選択すれば良いのか,もしくはそのモデルを使用した際の性質などを探求する研究
- 数値計算論: 1.の学習方法,2.のモデルの元で,より計算量の小さい(or計算時間の短い・メモリ使用量の少ない)最適化手法・数値計算法を探求する研究
この3つは不可分の関係にあり,個人的には機械学習という分野の「基底」を成しているように考えている. 以下では数回の記事に分けて,これら基底それぞれに対してもう少し詳細に見ていきたいと思う. 初回はまず学習フレームワーク論編.
学習フレームワーク論
学習フレームワークと一言で言っても,教師あり学習や分類・回帰など様々で,用語が乱立しているように思える. なので,以下ではそれらの用語についてまとめていく. まず学習法の大きな区分として
- 教師有り学習 (Supervised Learning)
- 半教師有り学習 (Semi-Supervised Learning)
- 教師無し学習 (Unsupervised Learning)
- 強化学習 (Reinforcement Learning)
がある(この区分に関しては個人的に若干疑問の部分もあるが...). これらの学習方法は,損失関数や報酬関数の設計が各々異なり,さらには定式化も全く異なる. なお今回の記事では,定式化などに関しては省略し,どのような問題設定があるのかについてのみ説明する.
教師有り学習 (Supervised Learning)
データ点$\bm{x}$(もしくは訓練入力と呼ぶ)と,それに対応する訓練出力$y$のペア$(\bm{x}, y)$が与えられたときに,$\bm{x}$から$y$の生成規則$f$を学習するフレームワークを教師有り学習と呼ぶ. つまり,$f(\bm{x}) \simeq y$であるような$f$を見つける,ということになる. この$\bm{x}$,$y$の与えられ方によって問題設定が異なってくるため,使用する損失関数・問題としての難易度が異なってくる. 教師あり学習の具体例を以下に示す.
二クラス分類 (Binary Classification)
二クラス分類とは,データ点$\bm{x}$が与えられた場合に,そのデータを$y = +1, y = -1$のいずれかに分類するタスクを指す. この場合,訓練出力は「クラス」と呼ばれる. 具体例としては,スパムフィルタ(メールの文面or差し出し人情報$\bm{x}$に対して,スパム$y=+1$ or スパムでない$y=-1$かを当てる),癌検診(患者のデータ$\bm{x}$に対して,癌である$y=+1$ or 癌でない$y=-1$かを当てる)などがある.
多クラス分類 (Multi-class Classification)
多クラス分類とは,データ点$\bm{x}$が与えられた場合に,そのデータを$y = 1, 2, \ldots , K$のいずれか1つに分類するタスクを指す. 先ほどは2クラスだったのに対し,多クラスでは出力候補が$K>2$になっていると考えれば良い. わざわざ二クラス分類と多クラス分類を分けたのは,
- 難易度が全く違う (二クラスができれば多クラスも簡単に拡張できると思われがちだが,これは全く違う)
- 多ラベル分類と区別するため (後述)
多ラベル分類 (Multi-label Classification)
多クラス分類では,データ点$\bm{x}$を$y = 1, 2, \ldots , K$のうちいずれか1つのクラスに分類するが,多ラベル分類では,データ点を複数に分類することを許す. この場合,訓練出力は「ラベル」と呼ばれる. 「ラベル」という名称は,gmailのラベル機能のように,同じメールでも複数のラベルを許すことを考えればなんとなく意味は分かる. 「クラス」と「ラベル」は,出力が1つのみの場合は,同じ意味として考えることができる. ただあくまでも,
- 「クラス」は1つのみ属す
- 「ラベル」は複数を許容する
と考えればその差異について分かっていただけるだろう. 多ラベル分類で重要なのは,多くの場合で,ラベル同士にも相関関係などがあるという点(スノボが好きな人は,スキーが好きな可能性が高いなど). もちろんそれぞれのラベル1つずつに分割し,それぞれで二クラス分類を走らせることも可能だが,それはラベル同士の関係を無視しているので得策とは言えない. そこの関係性を利用するのが多ラベル分類ならではのポイントだろう. (ちなみにStructured Outputというのもあるが,今回は詳細は省く)
回帰 (Regression)
回帰とは,データ点$\bm{x}$が与えられた場合に,そのデータに関する何かしらの量$y$を推定するタスクを指す. 例えば,データ点として(経度,緯度,過去10日間の降水量,...)などの情報から明日の気温を当てるなどが回帰の例になる. 重要なのは,分類問題では属するクラスを推定するのに対し,回帰ではある特定の実数値を推定することがゴールになる.
上の図は回帰のイメージ図で,この図で分かって欲しいのは,回帰$\simeq$関数近似であること. つまり,赤色の曲線$f(x)$が学習したい真の曲線だとして,それを緑色の曲線$\hat{f}(x)$で近似することが回帰におけるゴールになる.
順序回帰 (Ordinal Regression)
順序回帰はアカデミアでは(分類や回帰などと比較して)少々マイナーな問題設定だが,実用上は非常に大切な問題設定である. 順序回帰とは,出力が順序尺度で,また出力候補が3つ以上のものを指す. 例として,アンケートを考えよう. アンケートで1から5を「大変不満」「不満」「どちらでもない」「満足」「大変満足」のような選択問題を見たことがあるだろう. これは,順序尺度(つまり1から5に優劣がある),かつ出力候補が3つ以上なので,新たなデータ点に対するアンケート結果を予測したい場合は,順序回帰を用いることになる. 普通の回帰と異なる点は,出力が実数値なのか,離散順序尺度なのか,だけである. また多クラス分類問題ではクラスは全て均質なのに対して,順序回帰で扱う出力は順序尺度なので優劣がある. これが多クラス分類と順序回帰の違う点である. そして最後に,出力候補が3つ以上であることを要請しているのは,出力候補が2つの場合は,出力が順序尺度であっても,二クラス分類として考えて解くことが可能になるからである.
ランキング (Ranking)
ランキング問題は上記の分類問題とは異なり,データ点ペア$(\bm{x}_1, \bm{x}_2)$が与えられ,訓練出力として${+1, 0, -1}$のいずれかが与えられる.ここで,
- 訓練出力が$+1$: $\bm{x}_1$は$\bm{x}_2$よりも好まれる
- 訓練出力が$-1$: $\bm{x}_2$は$\bm{x}_1$よりも好まれる
- 訓練出力が$0$: $\bm{x}_1$と$\bm{x}_2$は同様に好まれる
このように,「りんごよりももが好き」「ももよりバナナが好き」などの情報から,「梨とキウイのどっちが好きか」を推定する,という問題がランキング問題になる.
教師有り学習のまとめ
ここまでで,教師有り学習についての複数の問題設定について紹介した. 以下の表はそのまとめである.
問題設定 | 入力 | 出力候補 | 出力数 | 実例 |
---|---|---|---|---|
二クラス分類 | $\bm{x}$ | ${+1, -1}$ | 1 | スパムフィルタなど |
多クラス分類 | $\bm{x}$ | ${1, 2, \ldots, K }$ | 1 | 手書き数字認識など |
多ラベル分類 | $\bm{x}$ | ${1, 2, \ldots, K }$ | 複数 | テキスト分析など |
回帰 | $\bm{x}$ | $\mathbb{R}$ | 1 | 株価予測 |
順序回帰 | $\bm{x}$ | 順序尺度 | 1 | アンケート結果予測 |
ランキング | $(\bm{x}_1, \bm{x}_2)$ | ${ +1, 0, -1 }$ | 1 | ランキング予測 |
半教師有り学習 (Semi-Supervised Learning)
教師有り学習では,(データ点, 出力)の形の訓練データが与えられ,そこからデータ点と出力の関係を学習する. しかし現実問題として,全てのデータ点に対して出力(もしくはラベルなど)を付与すること(これをアノテーションと呼ぶ)は非常に大変である. そこで,少数の出力付きデータと(教師付きデータ)と,多数の出力無しデータ(教師無しデータ)だけから,データ点と出力の関係を学習するフレームワークを半教師有り学習と呼ぶ. 半教師有り学習は,教師有り学習と比較して,教師情報が不足しているので,一般的に学習の難易度は高くなる. また,今回は紹介しないが,半教師有り学習の亜種の弱教師有り学習と呼ばれる分野もあり(教師となる出力orラベルが,通常よりも少ない情報量をもっているような場合),こちらも近年注目を集めている.
教師無し学習 (Unsupervised Learning)
今までは,全て or 少数の(データ点, 出力)の形の訓練データが与えられることが前提であったが,究極の形として,訓練出力が全く与えられないような問題設定も考えられる. このフレームワークを教師無し学習と呼ぶ. この場合は,出力,すなわち教師に対応する情報がないので,性質が近いデータ点をいくつかのまとまり(これをクラスタと呼ぶ)にまとめることが学習に対応する. このようにクラスタにまとめるタスクをクラスタリングと呼ぶ. 教師無し学習というと,ほぼほぼクラスタリングを指すので,教師無し学習$\simeq$クラスタリングと考えて良い.
強化学習 (Reinforcement Learning)
強化学習は今までの学習法とは一味違うフレームワークとなっている. 強化学習では,以下の用語が使用される(循環定義になってるし,厳密な定義になっていないが,そこはなんとなくで良いので察して...w).
- エージェント: 行動主体のこと
- 環境: エージェントを取り巻く周囲の状態などを指す
- 状態: 今現在の環境がどのようになっているのかを指す
- 行動: エージェントが現在の状態・環境に対して起こす行動を指す
- 報酬: エージェントが現在の状態・環境に対して,特定の行動を起こした場合に受け取る利益を指す
上の用語を用いると,強化学習とは,「ある環境内におけるエージェントが,現在の状態を観測し,将来の期待報酬を最大化するような行動を学習する」フレームワークだと言える. 強化学習は人間の成長過程と非常に似ている. もちろん学校に入ってしまえばそこには教師がいるので,そこでは教師有り学習が行われている,と考えることができる. しかし,より幼い子供は,そもそも何をするのが正しいのか知らないので,とりあえず行動を起こす. そしてお母さんに褒められたり,叱られたり(報酬)することで,すべき行動すべきでない行動を学んでいく. これはまさしく強化学習であると言える.
また強化学習の一種として,バンディットと呼ばれる問題設定もあるので,気になる方は調べると良い.
まとめ
今回は機械学習の3要素の内,主に学習フレームワーク論についての概要を与えた. 学習に関する異なる問題設定は,異なる定式化を与え,その研究は非常に盛んに行われている. NIPSやICMLなどのトップ会議には,今でも新たな問題設定・新たな学習フレームワークに関する論文が提出されており,非常に大切な分野であることが伺える.
次回は主にモデリング論に関して説明する.
niltatsu