とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/2 Swift開発者が知りたかったけど聞きにくい機械学習のすべて #tryswiftconf

try!Swiftのセッションまとめシリーズです。Alexis Gallagherさんの「Everything a Swift Developer Wanted to Know about Machine Learning But Was Afraid To Ask」についての記事になります。

資料

スライド共有サービスには上がっていないようです。try!Swift2017のslackの#slideには上がっているので、そちらをご参照ください。

内容

  • カスタマイズしたメガネを用意
  • 拡張現実を使ってメガネをかけた時の様子がわかるようにする
  • この機能の実現にはマシーンラーニングがかかせない
  • 日常的に、マシーンラーニングを使っていながらそれが使われていることがわからないことがある

  • 機械学習について

    • 関数を定義すると、そこには人間の分析が入る
    • 人間の分析を加えて様々なデータを使う
      • 例:人の身長を予測できる関数を作る
      • 身長の値を集め、平均値を返す関数を作る
      • ただし身長の正しい数値がわかるわけではなく、誤差がある
      • 男女別の関数を作ればよりモデルの精度が増す
      • その他、足のサイズ等の要素を変数として使うとより正確になっていく
  • 線形回帰
    • 18世紀からあった
    • 近年演算能力が高まって精度が上がってきており、びっくりするような結果を出したりする
  • ニューラルネットワーク
    • Apple iOSバイスの上でも使えるようになっている
    • 何の画像なのかを認識するなど
  • 現在は単なるイメージ分析から飛躍的に伸びている
  • Swiftエンジニアは関係ある?
    • 関係がある
    • MLはだんだんと陳腐なもの、得られるものになる
    • 顔認識、OCRは初期のML
    • 数学者じゃなくてもMLのモデルは作れる
    • 現在はSwiftの1.0のようなもの。
      • 以前Swiftは変わった言語だったが、今は違う
      • 同じことがMLにも起こっている
  • Tensor flow
    • 動画やサミットがあり、それを見ればわかるようになっている
  • ML
    • Swift環境でできる
    • Pythonを使ってモデルを作成
      • 科学環境においてみんな使っているから
      • 事前定義したものを使えるから
    • ユーザインタフェースのデザインを作るのに似ている
      • 不正確なもの
      • なぜ95%うまくいったのか、いかなかったのかが説明できない
      • UIはユーザの前でテストした時に素晴らしいとと言われることもあれば言われないこともある
      • マシーンラーニングも同じで、やってみなきゃわからない
  • モデル
    • 曖昧なインプットをそれっぽく解釈するのが得意
    • iOSバイスは自分が直接使っていくもので、曖昧な世界とやりとりするもの
    • 機械学習iOS環境と相性が良い
      • 人の顔から具体的な個人を特定するなど
  • どこから始めればいいのか
  • まとめ
    • 今マシーンラーニングは注目されている
    • みんながすぐに始められる
    • 自分のモデルを定義するもの可能
    • デプロイしたければpythonを使ってできる

Q&A

  • メガネの例があったが、処理は全てサーバ側でやっている?
    • 顔の形をサーバ側で推論
    • 演算の結果を携帯端末側で表示する
    • 今後はクライアント側に寄せていきたい
    • ニューラルネットワークのメリットは精度が高まるだけではなくサーバ側でやらなきゃいけなかったこともクライアント側でできること

その他このトークに関する情報源

togetter

Everything a Swift Developer Wanted to Know about Machine Learning But Was Afraid To Ask #tryswiftconf - Togetterまとめ