ソフトウェア2.0 – 機械学習の進歩がソフトウェア業界にどのような影響について
機械学習の進歩がソフトウェア業界にどのような影響を及ぼすのかについて、TeslaのDirector of AIのAndrej Karpathy氏がSoftware 2.0というワードを使って説明しています。
Neural networks are not just another classifier, they represent the beginning of a fundamental shift in how we write software. They are Software 2.0.
私はインフラエンジニアなので、コードをガシガシ書いているわけではないのですが、それでも以前よりはコードを書くようになったし、そのうちインフラエンジニアもシステムエンジニアも同じカテゴリに融合されていく未来が見えていて、そういう意味でもソフトウェア業界の未来については追っかけていきたい所存。
んで、この記事はそんなソフトウェア業界の未来についてとてもまとまっていて納得感のある記事でしたので、意訳を交えながら書いてみます。
以下はソフトウェア2.0に関する説明の超意訳です。
私はときどき人々がニューラルネットワークを単に「機械学習の中の1つのツール」と呼んでいることを知っています。残念なことに、この解釈は完全に「木を見て森を見ず」だと言えるでしょう。ニューラルネットワークは単なる分類器ではなく、ソフトウェアの作り方を根本的に変えてしまうという大きな変化の始まりを表しています。この考えこそがソフトウェア2.0です。
ソフトウェア1.0の「古典的なスタック」は、みんながよく知っているように、Python、C ++などの言語で書かれています。これらはコンピュータへの明示的な指示をプログラマーが書くという作業を行っています。コードの各行を記述することによって、プログラマはプログラム空間内のポイントを特定しています。
対照的に、ソフトウェア2.0はニューラルネットワークの重みで書かれています。人間はこのコードを書くことに関与していません。なぜなら、多くの重み(一般的なネットワークは何百万もあるかもしれません)があり、重みの直接のコーディングは人間には難しいです。代わりに人は機械学習用のデータセットを準備したり、コンピュータリソースを準備することである。
この作業は、明示的にプログラムを書くよりもはるかに簡単である。ただし、ソフトウェア2.0はソフトウェア1.0を置き換えることはありません。しかし、Software 1.0が現在担当している部分のうち、多くをソフトウェア2.0が占めるようになります。
記事では具体的にソフトウェア2.0へ移行が進行しているサービスについて、視覚認識技術や音声認識技術、機械翻訳などの例について書かれています。
確かに今年の「Adobe MAX 2017」で発表された人工知能を使った画像処理の発表は凄かった!
人工知能Adobe Senseiの画像処理が凄すぎてAdobe MAX 2017の会場は狂喜乱舞に – ICS MEDIA
すでに人が手作業で行うよりも早く正確に処理できます。(Adobeの例はソフトウェア業界というより、デザイナー業界に大きな変革をもたらす話しなので、今回の趣旨とはズレますが。)
また本記事にはソフトウェア2.0のメリットについても書かれています。
- 計算結果が均一
- ASICへの焼き付けが簡単
- 実行時間が一定
- メモリ使用量が一定
- 計算が速い
- モジュールを最適に融合可能
- ピックアップするのが簡単
- あなたよりも優れている
確かに他のメンバーからコードを引き継ぐ場合は、別のシステムにコードを移植する場合、ソフトウェア1.0の場合は多くの工数をかける必要がありますが、ソフトウェア2.0であれば必要なデータセットとパラメータがあれば事足りるわけで、必要な工数は段違いかもしれません。