プログラミング言語を用いて開発が行われる従来のソフトウェアを「Software 1.0」とすると、その次にやってくる「Software 2.0」はニューラルネットワークで構成され、プログラマの仕事はニューラルネットワークの学習に使うデータの収集などになっていくだろう。テスラのAI部門長(Director of AI at Tesla)を務めるAndrej Karpathy氏が自身のブログのエントリ「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.
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.