Contenu connexe Similaire à Machine Learning : The high interest credit card of technical debt (19) Plus de Yuichi Yoshida (14) Machine Learning : The high interest credit card of technical debt 1. The High-Interest Credit Card of Technical Debt
新技術研究会
Yuichi Yoshida
Chief engineer, DENSO IT Laboratory, Inc.
#20150220
@sonson_twit
© 2015 DENSO IT Laboratory, Inc., All rights reserved. Redistribution or public display not permitted without written permission from DENSO IT Laboratory, Inc.
Machine Learning:
3. はじめに
• technical debt
• 1992 Ward Cunninghamによって提唱
• 負債,全部が悪い訳じゃないが,どんどん複雑化する
• 特に機械学習では,コードが複雑になる
• ライブラリ整理→無駄
• ユニットテスト→無駄
• リファクタリング→無駄無駄無駄無駄無駄無駄!
6. Complex Models Erode Boundaries
• Entanglement
• データがぐちゃぐちゃ
• Hidden Feedback Loops
• 周期が長い,可視化しにくいループ
• Undeclared Consumers
• 開発するときに使われているデータはどれ?
10. Data Dependencies Cost More than Code Dependencies
• Unstable Data Dependencies
• データがちょくちょく変わる場合
• Underutilized Data Dependencies
• 使われていない(なくなった)データ対策
• Static Analysis of Data Dependencies
• データの依存関係を静的に分析する
• Correction Cascades
• ちょっとしたモデルやデータの流用はやめれ
12. Static Analysis of Data Dependencies
• コードの静的解析は一般的になったが・・・
• 大きな会社で,データの辞書をアップデートしないといけないと
きに,その辞書を使っている人を突き止める方法は?
• ある特徴量が計算効率を上げるために計算する必要がなくなった
とき,それをすべての人が実装できる?
• 利用中のソースコードが依存するデータへのリファレンスがない
とき,システムはずっと古いデータを使い続けるのか?
• 対策
• 静的解析しないと,これらを安全に実行するのは難しい.
• Googleはすんげーツールを持ってるぜ.
13. Correction Cascades
• この問題の意味
• 問題Aをとくためにモデルaがあります
• Aに似たA’があります.
• A’をとくために,aをちょこっと改造してa’を作りました.
• ・・A’に似たA’’があります・・・a’を改造して・・・・
• こういうことが続くともう何がなんだがわからなくなるよ
• この問題は割と根深い
• ある問題なんとかするために,あるモデルに特徴を追加して,学
習することはいいのか?
14. System-level Spaghetti
• Glue Code
• ライブラリ,パッケージ,データのためのコードのこと
• Pipeline Jungles
• 複雑に込み入ったデータフローのこと?
• Dead Experimental Codepaths
• 使われなくなった?データセットの取り扱い
• Configuration Debt
• コンフィグファイルに気をつけろ
15. Glue code
• みんな使うよね?
• オープンソース - mloss.org
• in-houseコード
• 製品パッケージ
• クラウドベースのサービス
• RやMATLABで書かれたコードはC/C++,Javaに移植だ!
• 長い目でみれば得だよ?
• 研究フェーズではちょっと関係ないかな・・・?
16. Pipeline jungles
• データ処理
• 特徴量
• 元データ
• 中間ファイル
• 注意すること
• engineeringとresearchが乖離している兆候らしい
• なるべくチームを密に連携させよう
• これを取り除くのはいろんな意味でいいよ
17. Dead Experimental Codepaths
• 使われなくなったデータ?の取り扱い
• 昔のデータセット
• 今のデータセット
• そのデータ同士が依存したり・・・・
• 組み合わせがあったり・・・・
• 恐ろしい実例
• Knight Capitalがテストデータを間違えたために4600億円の損失
• 対策
• Googleはがんばってこれを除去している
• 研究・イノベーションのためにも古いデータは除去しよう
18. Configuration Debt
• 汝,コンフィグを侮ることなかれ
• コンフィグがコード量を超えることもある
• エンジニアが適当にコンフィグを作ると・・・・
• 例
• Aは,9/14-9/17の間に間違って収集された特徴で,Bは10/7までは
使えない特徴で,特徴Cを計算するコードは11/1までは使えない
が,それ以降はフォーマットを変更して使え,特徴Dは,プロダク
ションでは使えないが・・・・
• 対策
• 変更箇所をわかりやすくするツールとか
• コードを変えるのと同じくらい慎重に作業しよう
• コードレビューと同じようにコンフィグレビューをしよう
19. Dealing with Changes in the External World
• Fixed Thresholds in Dynamic Systems
• 閾値は動的に変わるから考えて作ろう
• When Correlations No Longer Correlate
• 相関があると仮定してたのになくなることもある
• ここで議論するにはスペースが足りない
• Monitoring and Testing
• 観測結果と予測結果の比較
• 予測によってとった行動の回数でアラートあげよう