Publickey新野淳一IT羅針盤

誰もが「機械学習」を使うようになる世界と「Software 2.0」におけるプログラマーの役割とは?

機械学習の進化は、これまでプログラマーがアルゴリズムで解決してきたような分野にも及んでおり、その領域はさらに広がっていくことが確実です。そのときプログラマーの役割はどう変わっていくのでしょうか。

アップルが2018年に発表した最新の「iPhone XS」には、同社が独自に開発したプロセッサ「A12 Bionic」が搭載されています。「Neural Engine」と呼ばれる、機械学習を高速に実行する機能が備えられており、アップルによるとその処理速度は1秒間に5兆回の演算を行えるとのことです。

アップル独自開発の「A12 Bionic」プロセッサには1秒間に5兆回の演算を行う「Neural Engine」機能が実装された

アップル独自開発の「A12 Bionic」プロセッサには1秒間に5兆回の演算を行う「Neural Engine」機能が実装された

ピンチアウトで拡大

このNeural Engineは、「Face ID」による機械学習処理において高速な顔認証の実現や、撮影後の写真にまるで本格的なカメラで撮影したようなボケを追加する機能などに活用されています。

同じく2018年にGoogleが発表したスマートフォン「Pixel 3」にも、「Visual Core」と呼ばれるAIチップが搭載されており、機械学習によって暗いはずの夜景写真などを色鮮やかなものへと加工したり、画像の中にリアルタイムに人工的な画像を組み込んで表示するAR(Augumented Reality:拡張現実)機能の実現などに使われています。

Googleのスマートフォン「Pixel3」の発表で紹介された、夜景を鮮やかに撮影する機能

Googleのスマートフォン「Pixel3」の発表で紹介された、夜景を鮮やかに撮影する機能

ピンチアウトで拡大

本コラムの以前の記事『「クラウド」からIoTやスマートフォンなどの「エッジ」へと急速に広がる機械学習処理』では、PCやスマートフォン、IoTなどのあらゆるデバイスやクラウドに機械学習処理が組み込まれていくことを紹介しました。

すでに最新のスマートフォンを手にしている人たちは、そのデバイスに組み込まれたAIチップなどによって機械学習処理で実現される機能の恩恵を受けています。あるいはWebサイトに表示される広告がユーザー向けに最適化されていたり、ネットショッピングするときに表示される「おすすめ商品」が機械学習によって選択されていたりなど、すでに身の回りには機械学習で実現されている多くのサービスが存在します。

この流れが止まることはありません。誰もが個人や家庭やオフィスにあるさまざまなデバイスやクラウドを使って、これまで以上に機械学習の能力を活用し、その恩恵を受ける時代がやってくるのです。


■関連する東京エレクトロンデバイスの製品
・機械学習でIoTデバイスに特化したセキュリティの実現についてはこちら


 

機械学習は従来のプログラミングでは到達できなかったサービスも実現

こうした機械学習は2010年あたりから急速に発展してきました。書籍『人工知能は人間を超えるか』(松尾豊著、角川書店 2015年刊)では、画像認識の世界的コンペティションである「ILSVRC」(Imagenet Large Scale Visual Recognition Challenge)において、2012年にトロント大学が「ディープラーニング」を用いて圧倒的な好成績により勝利、人工知能研究の世界に衝撃を与えるとともに、そこからディープラーニングのブームが始まったことが紹介されています。

トロント大学の勝利から3年後の2015年には、ディープラーニングを用いた「アルファ碁」が登場、プロの囲碁棋士を破ったことで、一般のニュースにも取り上げられるなど大きな話題となりました。

そしてディープラーニングなどに代表される機械学習は、前述のようにスマートフォンでの顔認証や写真などの画像処理をはじめ、これまでのプログラミングでは到達できなかった世界へと我々を導いてくれました。

従来のアルゴリズムを超える機械学習と広がるプログラマーの役割

ディープラーニングをはじめとする機械学習が登場する以前は、コンピュータで実現されるもののほとんどが、プログラマーがアルゴリズムを考え、コードを書くことで実現されてきました。

しかしいま、機械学習とAIチップによって実現されている高精度な顔認識や画像処理は、そうした古典的なプログラミングでは到達できなかった精度や機能を備えたサービスを実現しているのです。

電気自動車で知られるテスラ社のAI部門長を務めるAndrej Karpathy氏は、このディープラーニングに代表される機械学習によって実現される新しいソフトウェアを「Software 2.0」と呼んでいます。

前述したように従来のソフトウェアは、人間がデータ構造やアルゴリズムを考え、それをもとにプログラミングすることで目的とする動作を実現してきました。いわば「Software 1.0」です。一方、Andrej Karpathy氏が提唱するSoftware 2.0は、プログラミングではなくコンピューターに学習(機械学習)させることによって目的とする動作を実現するのです。

Software 2.0は顔認証や音声認識といった分野で、Software 1.0の限界を突破してきました。さらにアルファ碁が人間を破ったように、一見するとロジックやアルゴリズムが重要な分野においても、Software 1.0の限界を超えてコンピュータの活用領域を広げていくことでしょう。

もちろん、Software 1.0がなくなっていくことは(少なくともすぐには)ありません。しかしSoftware 2.0の活用領域が広がるにつれ、それを開発しようとするニーズが広がっていくことは間違いありません。

では、Software 2.0でアプリケーションを開発するプログラマーの仕事とはどのようなものでしょうか? それは従来のプログラミングとは異なります。Software 2.0におけるプログラマーの仕事は、機械学習を行うために適切なデータを集め、ラベリングなどを行い、結果を評価することだと、Andrej Karpathy氏は言います。

いまはまだ、そうした作業がプログラマーの仕事だとは思われていません。しかしソフトウェアがSoftware 1.0からSoftware 2.0へとその能力と領域を広げていくのに合わせ、プログラマーの役割というものも変わっていくことでしょう。

※本記事は東京エレクトロンデバイスが提供する不定期連載のタイアップコラムです。
※会社名および商標名は、それぞれの会社の商標あるいは登録商標です。

※このコラムは不定期連載です。
※会社名および商標名は、それぞれの会社の商標あるいは登録商標です。

新野淳一

新野淳一Junichi Niino

ブログメディア「Publickey」( http://www.publickey1.jp/ )運営者。IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求。

Tweet

「IoTセキュリティ」に関連する製品・サービス