テスラのAI部門長が語る「Software 2.0」。ディープラーニングは従来のプログラミング領域を侵食し、プログラマの仕事は機械の教師やデータのキュレーションになる

2017年11月14日

プログラミング言語を用いて開発が行われる従来のソフトウェアを「Software 1.0」とすると、その次にやってくる「Software 2.0」はニューラルネットワークで構成され、プログラマの仕事はニューラルネットワークの学習に使うデータの収集などになっていくだろう。

テスラのAI部門長(Director of AI at Tesla)を務めるAndrej Karpathy氏が自身のブログのエントリ「Software 2.0」でそうした意見を記し、海外で話題になっています。

Software 2.0

Andrej Karpathy氏は、スタンフォード大学で機械学習を学び(教師は現在GoogleでAIと機械学習のチーフサイエンティストであるFei-Fei Li氏とのこと)、その後OpenAI社でコンピュータによる画像分析の研究者を経たのちに、現在TeslaのAI部門長として自動運転の実現に取り組んでいる人物です。

「Software 2.0」はニューラルネットワークで記述される

Andrej Karpathy氏は「Software 2.0」について次のように書いています。

Software 2.0 is written in neural network weights. No human is involved in writing this code because there are a lot of weights (typical networks might have millions), and coding directly in weights is kind of hard (I tried). Instead, we specify some constraints on the behavior of a desirable program (e.g., a dataset of input output pairs of examples) and use the computational resources at our disposal to search the program space for a program that satisfies the constraints.

Software 2.0はニューラルネットワークの重み付けとして記述される。しかしそれを人間が記述することはない。なぜなら多くの重み付けがそこにはあるため(典型的なネットワークでは数百万になるだろう)、直接その重み付けを記述するのは困難だからだ(私は試した)。
その代わり、私たちは望ましいプログラムの振る舞いのための制限などを規定する(例えば入力と出力のサンプルデータのペアなど)ことや、その制限を満たすプログラムを探索するためにコンピュータリソースを用いるといったことになる。

現実の問題解決はコードを書くよりデータを集める方がずっと簡単だ

なぜKarpathy氏がSoftware 2.0の台頭を予測するかというと、それは現実世界の問題解決においては、プログラムを書くよりも関連するデータを集める方がずっと簡単だからだといいます。だからコードを記述する「Software 1.0」から、データを学習させる「Software 2.0」へ向かうのだと。

It turns out that a large portion of real-world problems have the property that it is significantly easier to collect the data than to explicitly write the program.

これはつまり、現実世界の課題の大部分は、明示的にプログラムを書くよりも、データを収集する方がずっと容易だという性格を持っているからだ。

そこで将来のプログラマの仕事は、コードを書くことではなく、データを集めることなどになっていくと。

A large portion of programmers of tomorrow do not maintain complex software repositories, write intricate programs, or analyze their running times. They collect, clean, manipulate, label, analyze and visualize data that feeds neural networks.

将来、プログラマの仕事の大部分は、複雑なソフトウェアリポジトリの維持やプログラミングや実行時間を分析することではない。ニューラルネットワークに与えるためのデータを集め、整理し、操作し、ラベル付けや分析、ビジュアル化などを行うのだ。

Software 2.0はSoftware 1.0を置き換えるものではない

ただしSoftware 2.0はSoftware 1.0を置き換えるものではない、とKarpathy氏は念を押しています。例えばSoftware 1.0で用いられるインフラはSoftware 2.0においても必要です。

ただしSoftware 2.0の範囲はSoftware 1.0の領域を侵食するとも指摘しており、いくつかの具体例を挙げています。

例えば画像解析、音声認識、機械翻訳などの分野では、それまで全部もしくは一部が解析アルゴリズムなどで処理されてものが、いまではほとんどニューラルネットワークに置き換えられていると。

またSoftware 1.0で用いられる複雑なコマンドや命令セット群に比べると、ニューラルネットワークはシンプルな命令の組み合わせであるためシリコンで実現しやすく、かつ処理時間が短くメモリ消費量も小さいと言った利点も挙げられました。

一方、いまのところニューラルネットワークは多くの領域で90%程度の正確性を持つモデルは理解されているものの、99%の正確性を実現するモデルへの理解は十分でないといった制限もKarpathy氏は指摘しています。

ディープラーニングが従来のソフトウェアを侵食する

この「Software 2.0」という考えに触発され、「Deep Learning is Eating Software」(ディープラーニングがソフトウェアを侵食している)という刺激的な記事を公開したのは、Googleに買収されたJetpacのCTOであるPete Warden氏です。

Deep Learning is Eating Software

Warden氏はKarpathy氏の友人でもあり、「Software 2.0」という考えが自分の身に起きている状況を的確に表していることに嫉妬するほどだと書いた上で、Googleの親会社であるアルファベット社内では、ディープラーニングが従来のプログラミングでカバーされていた領域を侵食しつつある状況を記しています。

The pattern is that there’s an existing software project doing data processing using explicit programming logic, and the team charged with maintaining it find they can replace it with a deep-learning-based solution. I can only point to examples within Alphabet that we’ve made public, like upgrading search ranking, data center energy usage, language translation, and solving Go, but these aren’t rare exceptions internally. What I see is that almost any data processing system with non-trivial logic can be improved significantly by applying modern machine learning.

そのパターンは、プログラミングのロジックでデータを処理し、それを維持する責任を負うチームの既存のソフトウェアプロジェクトが、ディープラーニングを用いたソリューションでそれを置き換えることができることを発見する、というものだ。私はアルファベット社内の例しか示せないが、それでもサーチランキングのアップデート、データセンターのエネルギー消費最適化、翻訳、そして囲碁などはすでに公表されている。そしてこれは珍しいことではない。
いま目の前で起きているのは、小さくない規模のロジックを持つのあらゆるデータ処理システムが、モダンな機械学習の適用によって劇的に改善されている、ということだ。

そしてWarden氏も、ソフトウェアを構築する手段が劇的に変化すると指摘。ロジックを基にしたプログラミングに代わり、プログラマの仕事は機械学習の教師や学習データのキュレーション、結果の分析といったことになると予測しています。

プログラマの仕事も機械に奪われていくのか

Karpathy氏の「Software 2.0」は、記事のコメント欄やHacker Newsの掲示板で断碑両論を含む議論を大いに引き起こしています。

そこにはWarden氏のように賛意を示す意見だけでなく、ディープラーニングやAIを過大評価しているといった反対意見もありますが、いずれにせよソフトウェアのあり方がこれからどうなっていくのか、多くの人の想像力や考えを刺激するものになっていることは間違いないでしょう。

しかしWarden氏がアルファベット社内で起きていることを示すことで分かるように、機械学習の進化が従来のプログラミングによって作られてきたソフトウェアの領域を浸食しているのは間違いありません。問題はそれがどこまで広がっていくのか、ということではないでしょうか。

機械学習や人工知能の進化によって人間の仕事が奪われていくのは、自動車のドライバーや工場のオペレータのような分野が中心で、プログラマの身分が脅かされるのは相当先ではないかと私はなんとなく考えていました。しかし実はプログラマという職業も(もちろんその範囲は広いので一概には言えませんが)、その例外ではないのかもしれません。

あわせて読みたい

機械学習・AI




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本