DeepLearningの解釈性の悪さについて

Ponanza開発者の山本くんがASCII.jpに記事を書いていて、これがまためちゃくちゃ面白い記事なので紹介しておきます。

電王・Ponanza開発者が語る、理由がわからないけどスゴイ“怠惰な並列化”
http://ascii.jp/elem/000/001/253/1253340/

実際、何故DeepLearningで画像の識別がうまくいくのかは、プログラマにはよくわからないところがありますね。どのニューロンが何の役割を担っているのかが可視化しにくいこととも関係しているのかも知れません。内部的な動作まで追いかけられないけど、何故かうまくいく。

DeepLearningで画像を認識して食材をロボットアームで動かして調理するような調理ロボットが作られたとき、そのロボットはゴキブリを食材だと誤認識する確率は0ではないです。限りなく0に近づけることは出来るかも知れないけども、トレーニングデータにないような未知の昆虫を食材だと誤認識する可能性は絶えず残ります。

A「そんな不確かなアルゴリズムに頼っていいのか?」
B「確率が0に近いならいいよ。人間よりエラーレートが低いなら、それで事故が起きても諦めがつく」

いまは、Aの考えの人が多数派かも知れませんが、人工知能が社会に浸透するに従ってBの考えの人が多数派になるのかなと私は思っています。

機械学習による不確実性を受容しなければならない時代の到来と言えるかも知れませんね。

DeepLearningの解釈性の悪さについて」への21件のフィードバック

  1. 自分が組んだプログラムの動作に冪等性が無いことを受容しないといけない時代が来るかと思うとゾッとしますが、そういうものなんですかね…。

    • 機械が人間よりエラーレート(事故率等)が低い領域なら、機械による事故も保険対象となるような保険が誕生するかも知れませんけど。

  2. 言語に汎用的なGUIライブラリがあれば可視化もそんなに難しくないと思うのですけどね。
    C++は今頃2Dがどうとか言ってますから10年オセーと思ってます。
    そもそもOSをまたぐ汎用的な言語標準のGUIライブラリが開発不可能だと思ってるクチなんですけどね。委員会の天才どもには可能なんでしょうかねぇ・・・。

    • アスキーの記事読みました。
      プログラムの高速化の一つの方法としてIFをなくすという方法があります。処理をなるべくシリアル化するんです。そうすることで引っかかりがなくなってフォールスルーで処理されるようになり最適化もかかりよいことが多いです。
      これ自分が得意とする分野なのですが、貪欲法っていうらしいですね。
      ただ、これで得られるのはあくまで近似解なのだそうです。ウィキペディアに書いてありました。
      完全解を求めないのであれば高速になる方法って往々にしてあるものでそれの一つじゃないかと思います。

    • > 言語に汎用的なGUIライブラリがあれば可視化もそんなに難しくないと思うのですけどね。

      可視化の手段が問題なのではなくて可視化しても何も人間にはわからないということが問題なんです。将棋の探索ツリー、100万ノード分をグラフィカルに表示されても何もわかりませんし、ニューラルネットの流れを血流の流れのようにグラフィカルに見せられても「ふーん?」ぐらいの話ではないかと。

      • おかしな乱数を使わないのであれば重要ノード絞ることは可能じゃないでしょうか。
        めんどくさいことには変わりないですが。

        • 人類の言語はまだ余りに不完全で、ニューラルネットの挙動を把握し記述するように出来ていないので無理でしょう。
          長嶋茂雄の打撃理論と同じです。

          しかし言語的に説明理解できなくとも、体得することは可能かも知れません。
          長嶋茂雄さんも理屈抜きで打ちまくってましたし。

          ゴキブリとアーモンドチョコの見分けがつかないニューラルネットの可視化挙動を職人が眺めれば、ここだっと一本のノードを活性化することで他への影響を最小限にしつつゴキブリを排除できるようになるかも。
          で、職人さんに聞いても、「説明できるようなもんじゃねえ。20年もNN見てりゃ流れの悪いとこが見えてくるんだよ!べらんめえ」みたいな。

          あるいは将来、義務教育でNN学習を学ぶようになって、NNの状態と挙動を説明する単語が数千個定義、整備されて、細かいニュアンスを表現する若者ジャーゴンまで現れ、それらを使いこなす世代が生まれるのかも。

          • ワロタ。
            気脈とか龍脈とそういう次元ですね。
            秘孔を突いたゴキブリは全滅する。的な。北斗神拳ですよ。
            古代中国文化になんかヒントありそうですね。漢方とか。

            結局グラフなんでしょうからグラフが読めないと難しそうです。

  3. 前方道路の路肩にでっかいピンク色の触手がいて、通行する車両や犬猫をパクパク捕まえて食べてたとします。TheMistみたいな。通行車線は空いているので触手が伸びてこなければいけそうです。

    子供と老人載せたレベル4全自動運転人工知能に、触手を回避してUターンする判断ができないか?
    それにはどんな学習が必要か?そんなアホな学習させて通常走行に悪影響ないのか?ピンクの触手を避けないのは瑕疵じゃないから避けなくていいか?

    みたいなアホなことを考えます。

    • ゴジラに対する政府対応のクソっぷりを見てるとAIの方がまだマシに思える
      津波がくるのに校庭で待機してたり川の方に逃げたこともあったっけ

    • そもそも、Uターンするっていう選択肢があるかも怪しいですよね。未曾有の怪物は想定されません。と言って交差点の如く待ち続けるような気がします。

    • 自動運転カーは、全身タイツやダンボールのガンダムなど、コスプレをしている人を別のものだと誤認識する可能性はかなり高いのではないかと思います。学習データにないですもんね…。

      • googleやトヨタのLIDARは3次元のマップデータを検出するので
        目の前に障害物があれば停止する制御にすると思いますよ。
        後は超音波センサーなんかで二重、三重の安全性を確保すると思います。

        流石に画像認識の結果で発進と停止の制御は危険でしょうから

        • 私も前方障害物は停止できると思います。
          でも、ダンボーが横断歩道前にいて、どうぞと一時停止できるかは辛そう。

          学習してないという点では、人間も巨大触手について学習してないはずで、
          にも関わらず停止して逃げることはできるはずです。

          また、見えない落とし穴で前方車両が突然消えたら?
          そのまま進むのは危険なはず。
          でも峠の頂点の向こうが見えないのは当然。

          人間と人工知能になぜ差があるのか?
          人間は前方車両の運命は数秒後の自車の運命と予測するから?
          周囲の悲鳴、恐怖表情で危険を察知するから?

    • chokudaiサーチ(or beamサーチ)、並列化とは何も関係ないのでは…。chokudaiサーチは、並列化するとしても、それぞれのnodeごとに探索スレッド振り分けますが、LazySMPって同じtreeをそれぞれのスレッドが勝手気ままに探索してるような感じですね…。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です