考察 : モバイルエンジニアの機械学習との付き合い方

考察 : モバイルエンジニアの機械学習との付き合い方

モバイルの領域は機械学習ととても相性が良いと考えます。しかしどう付き合うべきか戸惑うモバイルエンジニアも多いのではないでしょうか?本セッションではモバイルエンジニアとしての機械学習の学び方、使い方、勘所を考察します。

Mobile Crew Niigata
https://www.mobilecrew.jp/

7d709dd44f86dc8f2b7ddb4c48145dfc?s=128

jollyjoester

October 11, 2019
Tweet

Transcript

  1. 考察 : モバイルエンジニアの 機械学習との付き合い方 2019.10.11 Mobile Crew Niigata jollyjoester

  2. お前誰よ Name: 七島偉之(ななしまひでゆき) ID: jollyjoester Organize: Swift/Kotlin愛好会、try! Swift Tokyo Belong

    to: 株式会社メルカリ • (元?)iOS, Androidエンジニア • 今の本業は「エンジニア組織を強くする」お仕事 • モバイルと機械学習は趣味で追っています
  3. Swift/Kotlin愛好会 毎月1回を4年くらい続けています。 東京以外での開催も(岩手、福岡、沖縄・・・) わいわい楽しくやるのが好き

  4. 寿司の名は。 自分初のモバイルx機械学習ネタ @Yahoo Hack Day (2017/02/04) 初Pythonぜんぜんわからず 機械学習ぜんぜんわからず 学習せども精度上がらず 当時のプレゼン:

    https://www.youtube.com/watch?v=oJKTYEJkasU&feature=youtu.be&t=2452
  5. Manabiya #2 モバイル x AI (2018/10/20) ←まだまだ手探りな感じ

  6. なぜ今再びのモバイルx機械学習の話を? • 当時は難しすぎて無理〜と思った。 • 久しぶりに触ったら実用的になってて、普及の段階が来た!と思った 普通のモバイルエンジニアが どんどん触っていくべきでは?という感触!

  7. 本発表の目標 「お、俺も機械学習に触ってみよ」 っていうモバイルエンジニアが増える

  8. お話すること 1. モデルを使おう! 2. モデルを使おう!! 3. モデルを使おう!!! ※いろいろ考えた結果、これだったw

  9. 1. モデルを使おう!

  10. 画像認識アプリ開発3分間クッキング ※Create MLでさくっとモデルが作れてさくっとアプリに組み込んで機能が使えちゃう素 敵なデモが3分ほどで行われる・・・はず!

  11. Not Hotdog 出典:https://developer.apple.com/jp/documentation/createml/ ※北米でしか使えない

  12. Create ML 数式やアルゴリズムの知識なしに簡単に機械学習ができるAppleのフレームワーク 出典:https://developer.apple.com/jp/documentation/createml/

  13. Core ML 学習済みのモデルを使ってアプリで推論できるAppleのフレームワーク 出典:https://developer.apple.com/jp/documentation/coreml/

  14. データ kaggleのデータセットを利用 ※kaggle: 世界中の機械学習・データサイエンスが集まるコミュニティ

  15. デモ

  16. めちゃ簡単!!! ※もちろんフレームワークに乗っかって特定の用途の元で用いた場合に限りだし、本 当はデータ集めるのが大変なのだけどそこはチート Create MLとCore MLで機能を作る

  17. 寿司の名は。当時 使えることは使えたが大変だった・・・ TensorFlowで学習 (with Python) モデルをCore ML 用に変換

  18. モデル作成のコストが大幅に低下したことで、機 能の作り方に拡がりが!

  19. ロジックを1行1行実装して機能を作る 普通の機能開発 func classify() { if (isHotdog) { return “Hotdog”

    } else { return “not Hotdog” } } ※擬似コード。雰囲気 Image Hotdog
  20. モデルを使った機能開発 モデルを使って機能を作る モデル Image Hotdog

  21. Libraryなどを使った機能開発と同じ まずはモデルの特性を理解して使えればいいんじゃないだろうか モデル Image Hotdog Library Framework Image Hotdog

  22. 1. モデルを使ってみよう • モデルを作るのがとても容易になった • モデルを使って機能を作る機会もきっと増える • まずはモデルをどんどん使って機械学習を使うを当たり前になっていきそう ◦ LibraryやFrameworkを使うのと同じイメージだから難しく考えることはない

  23. 2. モデルを使おう!!

  24. 従来の機能開発 func classify() { if (isHotdog) { return “Hotdog” }

    else if (isPizza) { return “Pizza” } else { return “Other” } } ※擬似コード。雰囲気 Image Hotdog パターンを増やすには厳密に 実装していく必要がある でも結果は必ず Hotdog or Pizza or Other になる 100%
  25. モデルを使った機能開発 モデル Image Hotdog モデル次第で複雑なパターン に対応できるが、確率的な結 果になる 80%の確率でHotdogとはいっ たい・・・ 80%

  26. • 機能の結果が確率的というのは従来と異なる体験を生む • 精度が100%ではないことを理解し、体験が失敗したときのことも考える • 体験以外にも影響しそうな ◦ PM ▪ モデルの特性を理解した仕様作り

    ◦ テスト・QA ▪ モデルの特性を理解した ▪ 自動テストしにくいので高度な判断ができる人の QAが必須となるかも ◦ CSとかも影響出てくる可能性が。 • これがくっそ難しそう。。。 決定論から確率論の考え方へ
  27. バイブル(AppleやGoogleのガイドライン) Apple • Human Interface Guidelines (Machine Learning) • Designing

    Great ML Experiences(WWDC19) (関連動画) Google • People+AI Guidebook • Designing Human-Centered AI Products (Google I/O'19) (関連動画)
  28. Human Interface Guidelinesからいくつか • Multiple Options ◦ 可能なら結果を選択可能に • Attributions

    ◦ 客観的な事実を • Confidence ◦ 信頼性の数字をユーザーにわかりやすい形で提示 • Limitations ◦ デザイン、性能、環境による制約が発生したときにヒントを出してユーザーの行動を支援する
  29. People+AI Guidebookから抜粋 メンタルモデル AIシステムは、時間とともに適応していきます。変化に対して、ユーザー側も準備が必要 です。 エラー + 上手な失敗 AIがエラーを起こしたり失敗したりすると、事態は複雑になります。 •

    ユーザーが、確信度の低い予測を「エラー」と見なすのはいつですか? • 複雑なAIのエラーの原因をどのようにすれば確実に特定できるでしょうか? • AIが失敗したとき、ユーザーが先に進めるようになっていますか?
  30. • 確率的に結果が出るという性質が機能の体験も変える • 体験を作っているモバイルエンジニアがまずは一番理解に近そう • モデルを使って知見を周囲に共有しよう! 2. モデルを使おう!!

  31. 3. モデルを使おう!!!

  32. • Edge AI = エッジ(ユーザーに近い端末)に組み込まれた学習済みモデル • ここではエッジ=モバイル端末と考える ◦ 余談ですがカメラもジャイロもマイクもあるデバイスってモバイル最高っすよね! Edge

    AI ※IoT文脈でRaspberry Piなどでモデルを使うときにも使う
  33. Edgeで機械学習? 機械学習のステップ • 学習と推論 ◦ 学習 ▪ 大量のデータから何かしらの規則性を見つける。 • 大量のコンピューターリソースが必要

    ▪ モデルを作る ◦ 推論 ▪ モデルを使ってパターンから分析する。 • こっちだけエッジ(モバイル)でやる
  34. サーバーでモデルを使う場合 モバイル モデル サーバー データ

  35. サーバーでモデルを使う場合 モバイル モデル サーバー データ 通信量でかい 遅い サーバー負荷 私のデータ ダダ漏れ?

  36. エッジでモデルを使う場合 モバイル モデル データ

  37. エッジでモデルを使う場合 モバイル モデル プライバシー保 護 リアルタイム データ

  38. エッジでモデルを使う場合 モバイル モデル サーバー データ セキュア リアルタイム 不要 or 小さい

    データ エッジで分散 負荷小
  39. エッジでモデルを使う場合 モバイル モデル どうデプロイす る? 端末の性能 は? モデル使った機能の テストってどうする? モデルの精度が上がる

    まで時間がかかる? データ データの前処理は? アプリのサイズ でかくなる
  40. Edge AIの盛り上がり • 新しい領域なのでいろいろ課題もある • でも一般モバイルエンジニアにとって使いやすいものになってきた! • AppleやGoogleは何年も前から力を入れている • そろそろ来るっしょ!!

  41. Edge AI時代の開発チーム MLエンジニア モバイルエンジニア • モバイルエンジニアとMLエンジニアが一緒にユーザー体験を作っていく • モバイルエンジニアとデザイナーの関係に近いイメージ モデルを使う モデルを作る

  42. Edge AI時代の開発チーム MLエンジニア モバイルエンジニア • モバイルエンジニアとMLエンジニアが一緒にユーザー体験を作っていく モデルを使う モデルを作る ユーザーからの フィードバック

    データ
  43. Edge AI時代の開発チーム MLエンジニア モバイルエンジニア • モバイルエンジニアとMLエンジニアが一緒にユーザー体験を作っていく • モバイルエンジニアとデザイナーの関係に近いイメージ(兼務かもだがw) モデルを使う モデルを作る

    ユーザーからの フィードバック データ 素敵なモデル 体験を含めた フィードバック
  44. Edge AI時代の開発チーム MLエンジニア モバイルエンジニア • モバイルエンジニアとMLエンジニアが一緒にユーザー体験を作っていく • モバイルエンジニアとデザイナーの関係に近いイメージ(兼務かもだがw) モデルを使う モデルを作る

    ユーザーからの フィードバック データ 素敵なモデル 体験を含めた フィードバック
  45. • モバイルでモデルを使うEdge AIが盛り上がりつつある • MLエンジニアがモデルを作り、モバイルエンジニアはモデルを使う • MLエンジニアとの連携のためにはモデルの特性を知っていることが重要 • 一緒にユーザーの体験を作っていこう 3.

    モデルを使おう!!!
  46. モバイルエンジニアの機械学習との付き合い方 1. モデルを使おう! ◦ モデルを使った機能開発が当たり前になりつつある 2. モデルを使おう!! ◦ モデルの特性を知ってユーザーの体験を作っていこう 3.

    モデルを使おう!!! ◦ モデルの使い方を知り、 MLエンジニアと一緒にユーザーの体験を作っていこう
  47. モデルを使おう! モデルの特性を知って ユーザーの体験を作っていこう! 結論

  48. さらに進みたい方は より汎用的だったり、自社に特化したモデルを作る場合などはちゃんとした機械学習の 理解が必要だから頑張ろう!

  49. Thank you! MOBILE CREW NIIGATA