機械学習 はじめよう

第1回 機械学習 ことはじめ

この記事を読むのに必要な時間:およそ 3 分

次のサービスや製品はどれも身近にありますが,これらに共通していることはなんでしょう。

買い物履歴,ユーザが書いたコメントやタグ,Webに無数にあるページ,メール,画像や動画と対象はそれぞれ異なっていますが,どれも「データから有益な情報を取り出す」ということを行っています。

これらは「機械学習」という技術を使って実現されているのです。

機械学習の応用範囲

機械学習は冒頭で挙げた以外にも,様々な分野で使われています。

例えば,ノイズ除去や特徴の抽出を目的とした利用パターンがあります。音声認識や画像認識,文字認識(OCR)などはその代表格です。それらも含めた「外部からの情報を読み取るセンサー」(カメラ,マイク,接触,温度,加速度など)のあるところには必ずと言っていいほど機械学習が使われているか,使われる余地があります。

また,隠れたルールや法則を見つけ出すのにも機械学習は有効です。データマイニング(大量のデータから知識を取り出す)はその最たるものの一つです。商品購入情報を分析して「ビールを購入した人は紙おむつもあわせて購入することが多い」という傾向を発見した,的なお話は耳にしたことがある人も多いのではないでしょうか。遺伝子(DNA)の解析でも,機械学習(自然言語処理)の手法が応用されています。

なんらかの予測を必要とする領域では,もはや機械学習はなくてはならないものとなっています。保険や証券取引,地震予測や天気予報,鉄道ダイヤのスケジューリング,渋滞予測,機器の故障予測,病気予防のための予測診断,漢字変換の入力予測……などなど,枚挙にいとまがありません。

もともと機械学習は,人工知能の要素技術として今の形に体系化されてきたこともあり,コンピュータに「人間の代わり」をさせるために利用されることも多いです。世界コンピュータ将棋選手権に出場する将棋プログラムのほとんどは機械学習の手法を採用していますし,囲碁もここ数年で有効な機械学習の手法が見つかり,どちらも今ではアマチュアのトップレベルと互角に戦うほどになっています。

その他にも,機械学習が使われている例は数多くあります。

  • 物理,化学,生物,医学など様々な科学観測全般。センサーが拾えない情報の再現,解像度の向上。
  • ロボット。センサー読み取り,バランスを保つための予測等々,ロボットのソフトウェアは機械学習の固まり。
  • ゲーム制作や3D映画の撮影に使われているモーションキャプチャー。見えない場所にあるマーカーの位置の推測。
  • エレベータの動きの制御。混雑を可能な限り少なく,かつ省エネとなるように最適化。
  • 未知のコンピュータウイルスの検出。ウイルスかどうかの閾値の推論。
  • 検索結果のランキング。クエリーやコンテキストから求められている情報の推測。
  • コンテンツに合わせた広告の表示。

ここで,実はこれら応用例の大半について,機械学習が使われ始めたのは最近5年10年の話,というと意外に感じるのではないでしょうか?

冒頭で例としてあげた,ユーザの動向から商品をおすすめする機能(協調フィルタリング)は,10年前は精度的にも処理速度的にも非現実的と言われていました。素人目にはいかにも機械学習を活用してそうなコンピュータ将棋。実はつい5年前までは,機械学習で強いプログラムは作れない,人間の経験を使って調整するしかない,と言われていたのです。

不可能だと言われてきたことが,10年も経たないうちに当たり前のことになっています。インターネットに関わる仕事や研究をされている方にとっては,それはむしろ馴染みのある光景かもしれませんね。

あなたの今やっている仕事も,機械学習を使うなんて夢にも考えていなかったとしても,10年後,5年後,1年後にはどうなっているかは分からないのです。

どんなときに機械学習は役にたつ?

機械学習がどういう問題を解決してくれるのでしょうか。ここでは,「この商品を買った人はこんな商品も買っています」機能をあなたのサイトで実現する,というケースで確認してみましょう。

まず,指定された商品Xと一緒に買われたことのある商品を抽出します。これはデータベースを普通に検索すれば良さそうです。例えば商品A,商品B,商品Cの3種類だったとします。

次に,その3商品の中で,どれが最もお勧めするのに適しているか順位付けをしなくてはいけません。

  • 商品Xを買った人の多くは商品Aも買っているが,そもそも商品Aはものすごく売れている
  • 商品Bを買った人はほぼ必ず商品Xも買っているが,そもそも商品Bを買った人がとても少ない
  • 商品Xと商品Cを一緒に買った人は1人しかいないが,Xとよく似た商品Yと商品Cはとても多くの人が一緒に買っている

実際の売れ方を見るとC,B,Aの順に並べたいところですが,単純に「2つの商品を一緒に買った人数」で並べればA,B,Cの順に,「その商品を買った人のうち,Xも買った人の率」であればB,A,Cの順になってしまいます。どうすれば望ましい結果に一番近付けることができるでしょう?

次なる難問は,すべての商品の組み合わせに対してこうした判断を行う必要があるということです。商品が1万点あれば,組み合わせは約5,000万通りにもなります。10万点あれば,約50億通り。一緒に売れたことのある組み合わせのみ考えたとしても,膨大な件数になるでしょう。

サービスとして実現するには,これらを「現実的な時間で計算」できなければなりません。機械学習はこれらを,具体的には以下のような問題を解決します。

  • 一つ一つは人間には簡単。コンピュータには難しい
  • 複雑すぎて,隠された規則性を見出せない
  • データが多すぎて,処理が終わらない

逆に言えば,このような問題を持っている領域は機械学習が有効な可能性があるということです。

著者プロフィール

中谷秀洋(なかたにしゅうよう)

サイボウズ・ラボ(株)にてWebアプリ連携や自然言語処理を中心に研究開発を行いながら,英単語タイピングゲーム iVocaをサービス提供している。

URLhttp://d.hatena.ne.jp/n_shuyo/
Twitterhttp://twitter.com/shuyo

コメント

コメントの記入