Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
エンジニアとしての機械学習との付き合いかた
Search
yubessy
April 25, 2017
Programming
3
6.4k
エンジニアとしての機械学習との付き合いかた
機械学習システムの開発・運用を担うエンジニアの視点からの話です ※社内LT用につくったもの
yubessy
April 25, 2017
Tweet
Share
More Decks by yubessy
See All by yubessy
DDIA (Designing Data-Intensive Applications) はいいぞ
yubessy
0
1.3k
Introduction to CircleCI
yubessy
1
100
Docker Hands-on
yubessy
0
96
Resource Polymorphism
yubessy
0
270
不動点コンビネータ?
yubessy
0
270
とりあえず機械学習したかった
yubessy
0
320
Scala Native
yubessy
0
210
Type Erasure と Reflection のはなし
yubessy
1
430
量子暗号
yubessy
0
210
Other Decks in Programming
See All in Programming
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
3.3k
RCPと宣言型ポリシーについてのお話し
kokitamura
2
150
データベースエンジニアの仕事を楽にする。PgAssistantの紹介
nnaka2992
9
4.2k
WordPress Playground for Developers
iambherulal
0
120
Going Structural with Named Tuples
bishabosha
0
170
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.1k
Denoでフロントエンド開発 2025年春版 / Frontend Development with Deno (Spring 2025)
petamoriken
1
1.3k
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
2
1k
Devinのメモリ活用の学びを自社サービスにどう組み込むか?
itarutomy
0
1.7k
いまさら聞けない生成AI入門: 「生成AIを高速キャッチアップ」
soh9834
12
3.8k
Let's Take a Peek at PHP Parser 5.x!
inouehi
0
100
AI時代のプログラミング教育 / programming education in ai era
kishida
23
21k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Speed Design
sergeychernyshev
28
860
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
What's in a price? How to price your products and services
michaelherold
245
12k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
For a Future-Friendly Web
brad_frost
176
9.6k
Faster Mobile Websites
deanohume
306
31k
Embracing the Ebb and Flow
colly
85
4.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Optimizing for Happiness
mojombo
377
70k
Why Our Code Smells
bkeepers
PRO
336
57k
Transcript
エンジニアとしての 機械学習との付き合いかた @yubessy 0x64 物語 Reboot #02
コモディティ化がもたらしたもの Fasttext, TensorFlow, Google Cloud NLP ... ライブラリ -> フレー
ムワー ク -> API 高度な専門知識がなくてもそこそこの予測モデル が作れる TensorFlow によるキュウリの仕分け https://cloudplatform- jp.googleblog.com/2016/08/tensor ow_5.html 僕はこの先何で食っていけばよいのか?
これからの機械学習のお仕事 入口に寄るか出口に寄るか? 入口: デー タサイエンティスト モデルの構築前からかかわる デー タの取捨選択・UI 設計・ 問題の定式化
出口: 機械学習エンジニア モデルの構築後も面倒を見る システム・ インフラ設計・ 継続的な運用 今日はこっちの話
Q. エンジニアリング視点での 機械学習の難しさとは?
問題: 事前に誤りを防ぐことが困難 システムの出力の正しさが定義できない そもそも未来に対する予測なので 「X を入力してY が出力されたら正解」 とは誰も言えない システムに無謬性を要求できない 100%
の精度を実現するのは事実上不可能 エラー をどこまで許容するかを考える必要
問題: 結果の解釈・ 再現・ 修正が困難 モデルのブラックボックス化 意図しない結果が出ても何をどう直せばいいか わからない 結果の再現の困難さ 再学習しようとしたらDB の状態が変わっている
昨日の予測結果が今日の学習デー タに影響 CACE (Changing Anything Changes Everything) e.g. ゴミが1 件混じっただけで精度が大幅低下
実際みんな苦労してる Machine Learning: The High Interest Credit Card of Technical
Debt https://research.google.com/pubs/pub43146.html 機械学習は技術的負債の高利子クレジットカー ド “ “
何が困難さを生み出すのか?
図で考える機械学習システム
一般的なシステムとの違い デー タ依存性 システムの入出力を決定する関数が デー タを入力とする別の関数によって作られる 予測処理だけをみると巨大な副作用のかたまり デー タ依存性がもたらすもの 関数を人間が直接読み書きできない(≠
コー ド) 結果に対して事前に何かを保証しにくい
どうやって問題と戦うか?
先駆者の知見 Rules of Machine Learning: Best Practices for ML Engineering
http://martin.zinkevich.org/rules_of_ml/rules_of_ml.p df To make great products: do machine learning like the great engineer you are, not like the great machine learning expert you aren’t. “ “
未知なるものとの闘い 問題に直面したとき 問題を特定し、 分割し、 パター ン化する 既存の仕組みやツー ルを応用する それでも解決できないとき 問題の影響を最小限の範囲に封じ込める
新たな枠組みを作り上げる 多くの課題はエンジニアリングの領域にある “ “
今すぐにできること 機械学習特化した開発・ 運用の体系は未確立 -> 問題をよく知られた方法論に落とし込む 特に信頼性工学的な手法は相性が良い バー ジョン管理 ( 自動)
テスト CI / CD
問題発生を未然に防ぐ テストの導入 典型的なパター ンは通常のテストと同様 境界条件付近ではデー タを微妙に替えて水増し 画像 -> アフィン変換 テキスト
-> 無関係な語の追加 バックテストによるオフライン検証 過去のデー タに対する予測を行って 既にわかっている結果と比較
問題発生後の対処を簡単にする モデルだけでなくデー タのバー ジョン管理を行う システムの状態を任意の時点に復元可能に 継続的なデプロイ モデル改善のサイクルを細かくする -> 問題発生時の原因特定を容易化
対処療法の先へ 問題を個別に解決していくだけでは限界 複合的な問題を包括的に扱う仕組みが必要 ライブラリ -> フレー ムワー ク コンポー ネント
-> アー キテクチャ 個人的な注目株 モデルの表現: PMML, PFA モデルの検証: ソフトウェア基礎論の応用 デー タの管理: ラムダアー キテクチャ
モデルの表現: PMML, PFA モデルの計算式をコー ドで表現 -> 静的解析や差分のバー ジョン管理が可能に input: fields:
- {name: x, type: double} - {name: y, type: double} ... output: double method: emit action: - cast: input.mag cases: - as: double named: magDouble do: [{emit: magDouble}]
モデルの検証: 型理論の応用 Dependent Type による精度保証 演算の型にパラメー タを指定できる -> 浮動小数点数の演算の精度を保証したり ->
推測統計・ 機械学習への応用?
デー タの管理: ラムダアー キテクチャ 処理のもとになる全てのデー タを保存 速度と堅牢性を必要に応じて選択できる 継続的に運用しても破綻しにくい http://lambda-architecture.net/
まとめ エンジニアからみた機械学習 デー タ依存がもたらす困難さ 既存の方法論による対処 これからの注目株
まだまだ仕事はあるぞ!