HTML5Experts.jp

もう、アルゴリズム自分で書いてる場合じゃない?機械学習が開発手法を変える─de:code 2016セッションレポート

連載: de:code 2016 特集 (6)

de:code 2016に参加中の、編集長の白石です。

今回は、編集部のメンバーそれぞれが興味あるセッションに参加してセッションレポートを書こう、ということになってまして、ぼくは「Big Data/機械学習がソフトウェア開発手法を変える! 〜静的アルゴリズム生成から動的アルゴリズム生成への道〜」というセッションを聴講しました。 スピーカーである田丸健三郎さんの語り口が心地よく、機械学習についてはかじったことくらいしかないぼくにとってはレベル感もちょうど良く、知らなかったことも数多く学べてとても満足でした。

以下に、簡単なセッションレポートを掲載します。機械学習については素人の、Webエンジニアによるレポートではありますが、何かのお役に立てば幸いです。 (ちなみに画像に沿えた文章は白石による補足文章であり、スピーカーご本人による発言ではないことをお断りしておきます)。

日本マイクロソフト株式会社 技術統括室 ナショナルテクノロジーオフィサー 田丸健三郎氏

もはやとても身近な技術、機械学習

今の時代、データソースは拡大の一途をたどっています。

そんな中、機械学習が非常に注目されています。以前は、ビッグデータの分析といえば高い専門性が必要な分野でしたが、機械学習によって安価で高品質な分析が可能になりつつあります。

従来アルゴリズムといえば、従来は職人による新規性、進歩性を競う芸術(?)の世界でした。

しかしそれでも、従来は機械学習によるデータ分析のアプローチよりは、職人によるアルゴリズム開発のほうが開発コストが低かったのです。かつてはデータ量も限られ、コンピュータリソースは非常に高価だったからです。

しかし今や、データ+機械学習のアプローチのほうが、アルゴリズムをプログラミングするよりも開発コストが安上がりになりつつあります。それは、クラウドによってほぼ無限とも言えるコンピュータリソースを手に入れられるようになったからです。

また、開発コストの面だけではありません。機械学習にとっての学習データの爆発的な増加、学習精度の大幅な向上など、機械学習を取り巻く環境も大きく進歩しています。

それにより、従来のようにアルゴリズムを静的にプログラミングするのではなく、データを分析し、アルゴリズムを動的に生成するというアプローチが採用されることが増えているのです。

機械学習とMicrosoft

例えば、Microsoftの製品においても機械学習は既に広く利用されています。意外な製品にも使われていると思われるのではないでしょうか?(白石的には、Kinectが関節の位置を特定するのに機械学習を使っているというのが少し驚きでした。まさかそんなところにも応用できるとは…)。

そして、ディープラーニングによる画像認識の精度は、人間の認識力すら超えつつあります。実際以下のグラフのように、Microsoftによる2015年の成果では、人間の認識エラー率を下回っているのです。

この進化は、ニューラルネットワークの多層化によってもたらされています。2012年には8層、2014年には19層、そして現在ではなんと152層にまで深く階層化できるようになっています。

実は、画像内のオブジェクトの認識率では、Microsoftは世界トップクラス。

動画のタグ付けなどにも実用化されています。

以下はMicrosoftにおける機械学習の歴史です。

Microsoftが今公開している対話型AIとしては、以下の2つが有名です。Cortanaは生産性の向上を目指して開発されており、女子高生AI「りんな」や、中国で大人気のXiaoIceは、人間の感情に寄り添うことを目指しています。

マイクロソフトのIoT基盤は、以下の様なビジネス上の変革を実際にもたらしています。

また、自動翻訳の分野も、機械学習が応用されている分野です。Microsoftも、Translatorというサービスを提供しており、現在50言語に対応しています。

次のバージョンであるバージョン4では、翻訳精度が大きく向上する予定だそうです。期待したいですね。

セッションを聞いての感想

はじめにも書きましたが、ぼくは機械学習の分野についてはほとんど知識がなく、軽くかじったことがあるくらいです。 そんなぼくにとっては、「機械学習による動的なアルゴリズム生成のコストが、プログラマーによる静的なアルゴリズム開発のコストを下回りつつある」というのはとても驚きました。

それが本当だとすると(実際本当なのでしょうが)、開発にあたって考えるべきはまず機械学習、データをどう収集してどう分析するかを最初に設計すべきだということになります。ぼくらプログラマーの仕事が大きく変わるかもしれない…と感じ、焦りと同時にワクワク感を感じたセッションでした。