テスラ自動車 人工知能部門長のアンドレイ・カルパシー氏による「ソフトウェア 2.0 スタックの開発」最新講演

Posted on 2018-06-13(水) in Deep Learning

テスラ自動車の人工知能部門長 (director) であるアンドレイ・カルパシー (Andrej Karpathy) 氏。 少し前に、ソフトウェア 2.0という概念を提唱したことで少し話題になったことを 覚えてらっしゃる方も居るかもしれません。ソフトウェア 2.0 とは、ニューラル・ネットワークに代表されるように、 枠組みと大量のデータを人間が与えるだけで問題を解けるように内部構造が最適化されるフレームワークのことを指します。

この「ソフトウェア 2.0」のおかげで、これまで「人間がどうやってプログラムするか分からかった」ような問題、例えば、 画像認識や音声認識・音声合成、機械翻訳やゲーム(囲碁)などで、近年、目覚ましい性能の向上が達成されたことは、この分野の進歩を追っている方なら 既にご存知ではないでしょうか。

本記事では、カルパシー氏の最新の講演「ソフトウェア 2.0 スタックの開発」のまとめおよび用語集を紹介します。 話が非常に面白く、また、機械学習を現実の問題に適用している方なら「あるある」とうなずける内容ばかりですので、 英語学習+機械学習、両方の目的にオススメです。

公園動画はこちら

Building the Software 2.0 Stack

  • 歴史

    • コンピュータの発明
    • ソフトウェアの開発 → 問題を同定し、細かい問題に分解し、コンポーネントを書き、積み重ねる(「スタック」する)
  • 「スタック」アプローチの問題点

    • 画像認識 → どうやって「画像認識スタック」を開発するか
    • 早期の画像認識スタック:脳の認知からスタートし、問題を細分化(例;部品を認識)
    • 画像認識(1990〜2010年):特徴量を抽出し、最後に少しだけ機械学習を使う
      • 問題:特徴量の種類が多すぎる。全て別々の言語で書かれている
    • 画像認識(今): アーキテクチャを指定し、組成から最後まで最適化
      • アーキテクチャそのものの最適化まで
    • データの規模が増えるに従い、エンジニアリングの仕事を最適化が肩代わり
    • ソフトウェア 1.0 と 2.0 の違い
  • プログラムの空間

    • 円。原点からの距離=プログラムの複雑さ
    • ソフトウェア 1.0:原点からあまり遠くない点
    • ソフトウェア 2.0:領域(プログラムの集合)。計算量を使って、この領域の中でうまくいくプログラムを見つける
    • カルパシー氏ツイート「悪いけど、あなたよりも勾配降下法の方がうまくプログラムが書けるよ」
  • ソフトウェア 2.0

    • 評価は簡単だが、どうやってプログラムを書いたらよいか分からない領域で威力を発揮
    • Google はこの最先端。論文 "One Model to Learn Them All" では、単一のモデルで複数のタスクを解く
    • AlphaZero データセットさえ不要
    • ニューラル・ネットワークに限ったトレンドではない。例:プログラムの確率的最適化
    • ロボット工学(ただし、人形・犬型ロボットで有名な Boston Dynamics の制御は完全にソフトウェア 1.0)
    • 注:ソフトウェア 2.0 がソフトウェア 1.0 を置き換えるわけではない。2.0 の周りには大量の 1.0 インフラが必要
  • 利点

    • 計算的に均一(例:畳み込みとしきい値操作だけ)ハードウェアで置き換えやすい
    • 実行時間とメモリ空間が定数(ソフトウェア 1.0 は、実行時間の推定が難しい)
    • 変更が用意(例:精度を少し犠牲にしてもよいから、2倍高速化する)
    • チューニングが可能(ソフトウェア 1.0 では、ライブラリは基本的に変更不能)
    • 性能が高い
  • テスラの自動運転

    • カルパシー氏がジョインした時、ソフトウェア 2.0 のコードは少量
    • 少しずつその範囲を拡大
    • 例:停まっている車を検出
      • ソフトウェア 1.0:領域を検出し、その上にいくつかルールを書く
      • ソフトウェア 2.0:「ニューラルネットがそう言ったから」
    • 最適化がプログラムを書くなら、人間は何をするのか
    • チームが2つに分かれる:1) データ作成 2) データ・インフラの開発
    • データ作成者が、実はプログラミングしている
    • PhD時代、モデルとアルゴリズムにほとんどの時間
    • テスラ時代、3/4 の時間はデータセットを作っている
  • 教訓

    • ラベリングは単純なタスクではない
      • 例:車線の検出
      • 例:停まっている車
      • 例:信号
      • 例:制限速度
    • データのバランス
      • 電車 vs 路面電車
      • 制限速度 (45 mph が多いが、ごくたまに 85 mph)
      • ウインカー
      • 黄色信号
      • ほとんどの画像が、高速道路。雪道、坂などはあまり現れない
    • ラベリングは、繰り返し的な手順である
      • 例:「雨検出器」イーロン・マスク「雨粒が見えるから、画像認識で解決しろ」
      • トンネル内、太陽の逆光に弱かった。雨粒とシミの区別が難しい
      • YouTubeのビデオ。コーンフレーク → ワイパーが動作。ケチャップ → 動作しない
  • ソフトウェア 2.0 のツール

    • まだ存在しない。気づいている人がほとんど居ない
    • ソフトウェア 2.0 の IDE (統合開発環境)とは?
    • ソフトウェア 2.0 のための大規模で綺麗で多様なデータセットを作るのが、ほとんどの仕事

用語集

英語 日本語
resourceful 資源の豊富な
break down 1) より小さなものに分解する, 2) 行き詰まる
put on 〜 hat 〜 の役を演じる、〜 として行動する
gnarly 俗) 難しい
lay out 計画を立てる
forefront 最前線
caveat 注意
homogeneous 均一の
sprawling, gross thing 無秩序に広がった乱雑なもの
fine-tune 微調整する
autonomous driving 自動運転
trench 塹壕。ここでは開発の現場、第一線の意味。
conundrum 難問
AI complete AI完全
fleet ここでは、多数の自動車
blinker ウインカー
... is a thing 重要なもの、流行っているもの
massage ここでは、こねくり回すこと