Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Learning As Software

Machine Learning As Software

TajimaTheMemer

January 23, 2019
Tweet

More Decks by TajimaTheMemer

Other Decks in Programming

Transcript

  1. Machine Learning As Software
    Makuake 社内 LT
    2019/01/23
    Tajima Taichi

    View Slide

  2. 今日話さないこと
    機械学習の具体的な手法・アルゴリズムの説明
    ※一般のソフトウェア開発者向けのお話です。

    View Slide

  3. 今日伝えたいこと
    機械学習≠AI
    というよりも...

    View Slide

  4. 今日伝えたいこと
    機械学習≒ソフトウェアの可能性を拡張する技術
    と捉えるほうが適切という話(※私見)

    View Slide

  5. 機械学習とは
    データから目的の関数を生成する技術
    ※全ての手法が、というわけではない。

    View Slide

  6. 例えば...
    AlphaGo(ゲームAI)
    関数(機械学習モデル)
    囲碁の盤面
    最も勝率の高い
    次の一手
    シミュレータ環境上の打ち手データを使って...

    View Slide

  7. 例えば...
    Siri(音声認識)
    関数(機械学習モデル)
    音声波形 テキスト
    音声とテキストのペアデータを使って...

    View Slide

  8. 例えば...
    Google翻訳(機械翻訳)
    関数(機械学習モデル)
    英語 日本語
    日英の対訳データを使って...

    View Slide

  9. 例えば...
    Amazonの商品推薦(レコメンデーション)
    関数(機械学習モデル)
    行動、購買、
    商品...
    ユーザーが
    欲しがる商品
    行動、購買、商品...データを使って...

    View Slide

  10. 近年、機械学習技術(特にDeep Learning)の進歩により
    人手のコーディングでは表現が難しかった関数を
    データから生成することができるようになった

    View Slide

  11. ソフトウェアとは
    関数の集まり
    機械学習とは
    データから目的の関数を生成する技術

    View Slide

  12. 機械学習≒ソフトウェアの可能性を拡張する技術

    View Slide

  13. ここまでが今日伝えたかったこと

    View Slide

  14. ここからは偉い人の話
    (権威を笠に着る)

    View Slide

  15. Software 2.0
    Andrej Karpathy氏
    (Director of AI at Tesla)
    によるエッセイ(2017年11月)

    View Slide

  16. Software 1.0
    人間がプログラミング言語で振る舞いを記述する
    従来のソフトウェア開発
    Software 2.0
    ニューラルネット(Deep Learning)の重みパラメータで記述
    される
    コーディングに人間が介在しない

    View Slide

  17. なぜSoftware 2.0が重要か
    現実世界の課題の大部分はプログラムを明示的に書くよりもデー
    タを収集するほうがずっと容易だから(ということらしい)

    View Slide

  18. Software 2.0
    例えば...
    昔の Google翻訳は50万行のコードと多くのミドルウェア、
    パイプラインなどで構成された大規模で複雑なソフトウェア
    (Software 1.0)

    View Slide

  19. Software 2.0
    現在の Google翻訳は500行のPythonコードとニューラル
    ネットの重みパラメータ(数百万)のファイルのみで構成され
    たソフトウェア(Software 2.0)

    View Slide

  20. Software 2.0の良いところ①
    均質な計算処理
    Computationally homogeneous

    View Slide

  21. Software 2.0の良いところ②
    チップに埋め込みやすい
    Simple to bake into silicon

    View Slide

  22. Software 2.0の良いところ③
    実行時間が一定
    Constant running time

    View Slide

  23. Software 2.0の良いところ④
    メモリ使用量も一定
    Constant Memory Use

    View Slide

  24. Software 2.0の良いところ⑤
    移植性が高い
    It is highly portable

    View Slide

  25. Software 2.0の良いところ⑥
    アジャイル
    It is very agile

    View Slide

  26. Software 2.0の良いところ⑦
    モジュール性
    Modules can meld into an optimal whole

    View Slide

  27. Software 2.0の良いところ⑧
    お前らの書くコードより良い
    It is better than you

    View Slide

  28. ただし、Software 2.0はSoftware1.0を
    全て置き換えるものではない
    しかし、Software 2.0の適応範囲をますます広がっている

    View Slide

  29. Software 2.0の記事から遡ること4ヶ月...

    View Slide

  30. The future of deep learning
    Francois Chollet
    AI研究者, Keras(AIの民主化)の開発者
    @Google
    によるエッセイ(2017年7月)

    View Slide

  31. The future of deep learning
    Software 2.0以降のソフトウェア開発の
    具体的な素描
    “Models As Programs”

    View Slide

  32. The future of deep learning
    Algorithmic subroutine: Software 1.0
    Geometric subroutine: Software 2.0
    これからのソフトウェア開発

    View Slide

  33. The future of deep learning
    もっと先の未来のソフトウェア開発
    →自動化が進む

    View Slide

  34. Machine Learning As Software時代の開発ツール
    Tensorflow Hub
    学習済みの機械学習モデルのモジュールを共有するプラットフォーム
    Comet ML
    機械学習モデルのバージョン管理・チーム開発ツール
    Google Dataset Search
    データセット専用の検索エンジン

    View Slide

  35. まとめ
    機械学習という技術を適切に捉え、
    適切に使っていきましょう。
    (使わないという選択をする上でも大事。)

    View Slide