2016/02/01

機械学習(例からの関数近似または補間)


4. 機械学習(例からの関数近似または補間)

機械学習とは文字通り, 「機械による学習」=「学習する機械」の事であり, 擬人化して言えば使っているうちに勝手に頭がよくなる(正解を出し易くなる) コンピュータプログラムの事である. 人間も, ある日足し算の仕方を習うと 足し算が出きるようになり, 廊下を走って転べば廊下を走らなくなる. 元々できなかった事が出きるようになる事を学習というのだから, コンピュータにこれをやらせることができれば実に色々な事ができそうである.
後からがっかりされぬようもう少し現実的な話をしておくと, 典型的な応用としては手書き文字認識などがある. 例えば郵便番号の自動読み取りなどは実用的で, 色々な形で書かれた各数字 $0, 1, 2, \ldots , 9\,$ を, コンピュータに正解ともに覚えさせておく. 実際に与えられる形はそれらと正確に同じものではないが, コンピュータがそれらしいものを正解として出す.

f(File:One1.png) = '1', f(File:One2.png) = '1', 
f(File:One3.png) = '1', f(File:One4.png) = '1', 

f(File:Two1.png) = '2', f(File:Two2.png) = '2', 
f(File:Two3.png) = '2', f(File:Two4.png) = '2', 
画像に写っている物体を当てるという, 物体認識の問題でも, あらかじめこの画像は花です, この画像は象です, などとコンピュータに入力しておくと, これまで見たどの画像とも 同一ではない画像に対して, 花だ, 象だと, 答えるようになる.
少し問題を抽象化して考えると, 要するにここでやらせたいことは, ある「関数」の値を, いくつかの与えられた入力と出力の「例」から求める(推測する) 事であると考えられる. 文字認識の例では, 入力が画像であり, 出力が $0, 1, \ldots , 9\,$ のどれかの数字(記号)である. ありとあらゆる画像が「例」として与えられていれば問題はそももそ存在しないが, それは現実的ではない. 例えば1画素が白か黒かの2値であるとし, 画像が16画素x16画素という控えめな大きさであっても, 可能な画像は $2^{256}\approx 6\cdot 10^{26}$ 通りある. したがって, 例として与えられていない入力に対する出力を, いわば「補間」することが問題である. 統計学で, 「回帰」(観測データによく合う関数の形を求める問題)というのを習うと思うが, 目標はそれと同じと言ってよい. 求める関数として一次関数を仮定して, もっともよく合う一次関数がいわゆる回帰直線であり, それを求める手法として最小2乗法がある. 機械学習はそれをもっと複雑な関数に対して行う様々な方法を研究する分野である.
このための手段は非常に色々な方法が研究されていて, 私も専門家ではないのであまり知った顔で書く事はできないが, 例えば, 入力 $x\,$ に対し, $x\,$ に一番近い「例」を見つけてその出力を, $x\,$ に対する出力とする方法, 各文字に対して, 特定パターン画像が発生する「確率」を定義して, その確率がもっとも高いものを選ぶ方法, などがある.
一旦この様に抽象的に問題が(つまり, 入出力例からの関数を補間する問題として) 定式化されると, これらの方式が非常に広い範囲の問題に応用可能だということが分かるだろう. 例えば, 実用的によく用いられているのは, 迷惑メールの分類である. 事前に多くの迷惑メールと, そうでないメールのサンプルを入手しておき, 例として入力しておく. コンピュータは, 中に書かれている文章を人間並に理解して行っているのではなく (これはやりたくてもできない), 多くの場合は, メール全体を単なる単語の集まりとして見ている(この他にメールの差し出し人や, 送信したマシンのアドレスなども情報に含める). 後は未知のメールに対する答えを 「補完」する. 使える方法は, 原理的には手書き文字認識の場合と共通である.
機械学習はその原理から, 人間が「なぜか」できてしまうような処理を, 計算機に真似させる場面でしばしば力を発揮する. 「なぜか」できてしまう処理だから, そもそもコンピュータに正解を計算させる手順もよく分からない, あるいはそもそも正解を厳密に定義しようと思っても, 最後は曖昧な部分が残っていて, 人間にすらそれができないという場合もある. 手書き文字認識も, 画像認識も, 迷惑メールも全てそのような問題である.
私は, 機械学習という, 一見すると非常に高級に見える処理が, 少し冷静に分析すると, 関数の補間という問題に定式化され, そのおかげで非常に広範囲の応用があり, 特定の応用ごとに似て非なる方法を発明しなくてよく, それが「計算機に知能(に似たもの)を持たせる」というゴールに向けた一方であることに 感銘を受けるのですが, どうでしょうか.


出典Motivation to learn computer
 

0 件のコメント :

コメントを投稿