SlideShare a Scribd company logo
1 of 20
Download to read offline
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:
Machine Learning:
The High-Interest Credit Card of Technical Debt
はじめに
• technical debt
• 1992 Ward Cunninghamによって提唱
• 負債,全部が悪い訳じゃないが,どんどん複雑化する
• 特に機械学習では,コードが複雑になる
• ライブラリ整理→無駄
• ユニットテスト→無駄
• リファクタリング→無駄無駄無駄無駄無駄無駄!
この論文で議論すること
• データ使い回すよね?
• パッケージをブラックボックスにするよね?
• パッケージ間のglue code書くよね?
• 学習してもなかなかうまくいかないよね?
• 色々やっちゃって,わけわからなくなるよね?
• こういう問題をクリアにしても論文にならないよね?
• こういう問題,テクでなんとかしちゃうよね?
• それはダメです!!!!!!
Complex Models Erode Boundaries
• Entanglement
• データがぐちゃぐちゃ
• Hidden Feedback Loops
• 周期が長い,可視化しにくいループ
• Undeclared Consumers
• 開発するときに使われているデータはどれ?
Entanglement
• 特徴量を一つ増やしても,減らしても,すべての結果は変わる
• CACEの原理 - Change anything, change everything
• 対策1 モデルを分ける
• そんなに綺麗にわかれないような
• 対策2 可視化ツールを作る
• 多次元,学習時間とか考えたら無理じゃない・・・?
• 対策3 最強の正則化ツールを作る
• アホか(ry
• この問題は回避しようがない面がある
• 開発のデッドラインよりもこれについて議論しよう
Hidden Feedback loop
• 1週間のページビューを入力として学習する場合
• それに気付くのが難しい
• 評価が難しい
まめにチェックして取り除く・・・?除けるか?
Undeclared Consumers
• 可視化の負債
• 誰が使っているか不明
• 例えば
• フォントサイズとCTR
これの防御はかなり難しい
Data Dependencies Cost More than Code Dependencies
• Unstable Data Dependencies
• データがちょくちょく変わる場合
• Underutilized Data Dependencies
• 使われていない(なくなった)データ対策
• Static Analysis of Data Dependencies
• データの依存関係を静的に分析する
• Correction Cascades
• ちょっとしたモデルやデータの流用はやめれ

Underutilized Data Dependencies
• 使われなくなったデータ
• 古い特徴量
• パッケージになった特徴量
• 自己満足系の特徴量
• 対策
• こういうのはとにかく削除する文化を作る
• 削除した影響を評価するツールを作る
Static Analysis of Data Dependencies
• コードの静的解析は一般的になったが・・・
• 大きな会社で,データの辞書をアップデートしないといけないと
きに,その辞書を使っている人を突き止める方法は?
• ある特徴量が計算効率を上げるために計算する必要がなくなった
とき,それをすべての人が実装できる?
• 利用中のソースコードが依存するデータへのリファレンスがない
とき,システムはずっと古いデータを使い続けるのか?
• 対策
• 静的解析しないと,これらを安全に実行するのは難しい.
• Googleはすんげーツールを持ってるぜ.
Correction Cascades
• この問題の意味
• 問題Aをとくためにモデルaがあります
• Aに似たA’があります.
• A’をとくために,aをちょこっと改造してa’を作りました.
• ・・A’に似たA’’があります・・・a’を改造して・・・・
• こういうことが続くともう何がなんだがわからなくなるよ
• この問題は割と根深い
• ある問題なんとかするために,あるモデルに特徴を追加して,学
習することはいいのか?
System-level Spaghetti
• Glue Code
• ライブラリ,パッケージ,データのためのコードのこと
• Pipeline Jungles
• 複雑に込み入ったデータフローのこと?
• Dead Experimental Codepaths
• 使われなくなった?データセットの取り扱い
• Configuration Debt
• コンフィグファイルに気をつけろ
Glue code
• みんな使うよね?
• オープンソース - mloss.org
• in-houseコード
• 製品パッケージ
• クラウドベースのサービス
• RやMATLABで書かれたコードはC/C++,Javaに移植だ!
• 長い目でみれば得だよ?
• 研究フェーズではちょっと関係ないかな・・・?
Pipeline jungles
• データ処理
• 特徴量
• 元データ
• 中間ファイル
• 注意すること
• engineeringとresearchが乖離している兆候らしい
• なるべくチームを密に連携させよう
• これを取り除くのはいろんな意味でいいよ
Dead Experimental Codepaths
• 使われなくなったデータ?の取り扱い
• 昔のデータセット
• 今のデータセット
• そのデータ同士が依存したり・・・・
• 組み合わせがあったり・・・・
• 恐ろしい実例
• Knight Capitalがテストデータを間違えたために4600億円の損失
• 対策
• Googleはがんばってこれを除去している
• 研究・イノベーションのためにも古いデータは除去しよう
Configuration Debt
• 汝,コンフィグを侮ることなかれ
• コンフィグがコード量を超えることもある
• エンジニアが適当にコンフィグを作ると・・・・
• 例
• Aは,9/14-9/17の間に間違って収集された特徴で,Bは10/7までは
使えない特徴で,特徴Cを計算するコードは11/1までは使えない
が,それ以降はフォーマットを変更して使え,特徴Dは,プロダク
ションでは使えないが・・・・
• 対策
• 変更箇所をわかりやすくするツールとか
• コードを変えるのと同じくらい慎重に作業しよう
• コードレビューと同じようにコンフィグレビューをしよう
Dealing with Changes in the External World
• Fixed Thresholds in Dynamic Systems
• 閾値は動的に変わるから考えて作ろう
• When Correlations No Longer Correlate
• 相関があると仮定してたのになくなることもある
• ここで議論するにはスペースが足りない
• Monitoring and Testing
• 観測結果と予測結果の比較
• 予測によってとった行動の回数でアラートあげよう
Conclusion
• 機械学習がダメと言ってるわけじゃない
• researcher, engineerの両方が取り組む必要がある
• 定理の証明や手法の発見に比べればおもしろくないが,エレガント
なシステムを設計することは何よりも称賛されるべき仕事だ

More Related Content

Viewers also liked

パブリック・クラウド基盤でVirtual on virtual ってどうよ
パブリック・クラウド基盤でVirtual on virtual ってどうよパブリック・クラウド基盤でVirtual on virtual ってどうよ
パブリック・クラウド基盤でVirtual on virtual ってどうよYukio Saito
 
(初学者向け)仮想化ツール紹介
(初学者向け)仮想化ツール紹介(初学者向け)仮想化ツール紹介
(初学者向け)仮想化ツール紹介祥平 近藤
 
1)デザインの機能複合体の6要素
1)デザインの機能複合体の6要素1)デザインの機能複合体の6要素
1)デザインの機能複合体の6要素Rikie Ishii
 
Android Wear Design Guideline
Android Wear Design GuidelineAndroid Wear Design Guideline
Android Wear Design GuidelineSoyeon Lee
 
徹底解説 ネットショップの決済の全て
徹底解説 ネットショップの決済の全て徹底解説 ネットショップの決済の全て
徹底解説 ネットショップの決済の全てec-campus
 
2)アイデアPartの導入
2)アイデアPartの導入2)アイデアPartの導入
2)アイデアPartの導入Rikie Ishii
 

Viewers also liked (14)

Comunicar 3.0
Comunicar 3.0Comunicar 3.0
Comunicar 3.0
 
2e64ed78b0951c70ef8bd10cc818dbc6[1]
2e64ed78b0951c70ef8bd10cc818dbc6[1]2e64ed78b0951c70ef8bd10cc818dbc6[1]
2e64ed78b0951c70ef8bd10cc818dbc6[1]
 
パブリック・クラウド基盤でVirtual on virtual ってどうよ
パブリック・クラウド基盤でVirtual on virtual ってどうよパブリック・クラウド基盤でVirtual on virtual ってどうよ
パブリック・クラウド基盤でVirtual on virtual ってどうよ
 
White paper querydata_goldenweek2015_20150414
White paper querydata_goldenweek2015_20150414White paper querydata_goldenweek2015_20150414
White paper querydata_goldenweek2015_20150414
 
15 memory card
15 memory card15 memory card
15 memory card
 
(初学者向け)仮想化ツール紹介
(初学者向け)仮想化ツール紹介(初学者向け)仮想化ツール紹介
(初学者向け)仮想化ツール紹介
 
1)デザインの機能複合体の6要素
1)デザインの機能複合体の6要素1)デザインの機能複合体の6要素
1)デザインの機能複合体の6要素
 
Android Wear Design Guideline
Android Wear Design GuidelineAndroid Wear Design Guideline
Android Wear Design Guideline
 
徹底解説 ネットショップの決済の全て
徹底解説 ネットショップの決済の全て徹底解説 ネットショップの決済の全て
徹底解説 ネットショップの決済の全て
 
Firefox Mobile
Firefox MobileFirefox Mobile
Firefox Mobile
 
Creditcard
CreditcardCreditcard
Creditcard
 
InfoTalk - Wakame
InfoTalk - WakameInfoTalk - Wakame
InfoTalk - Wakame
 
2)アイデアPartの導入
2)アイデアPartの導入2)アイデアPartの導入
2)アイデアPartの導入
 
Virtual nodeについて
Virtual nodeについてVirtual nodeについて
Virtual nodeについて
 

Similar to Machine Learning : The high interest credit card of technical debt

第1回SIA研究会(例会)プレゼン資料
第1回SIA研究会(例会)プレゼン資料第1回SIA研究会(例会)プレゼン資料
第1回SIA研究会(例会)プレゼン資料Tae Yoshida
 
仕様七変化
仕様七変化仕様七変化
仕様七変化galluda
 
Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Seiichi Sugahara
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptxUnity/CSharp 1 - pptx
Unity/CSharp 1 - pptxtagawakiyoshi
 
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-nishio
 
なぜピリカを作っているか?
なぜピリカを作っているか?なぜピリカを作っているか?
なぜピリカを作っているか?R. Ayakix
 
福岡XFD導入記
福岡XFD導入記福岡XFD導入記
福岡XFD導入記Go Takahashi
 
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous IntegrationAizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous IntegrationTomoaki Tamura
 
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka20171004 kotlin rls_hosaka
20171004 kotlin rls_hosakaAi Muramatsu
 
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略Osamu Kawachi
 
勉強会 やさしいアーキテクチャで行こう
勉強会 やさしいアーキテクチャで行こう勉強会 やさしいアーキテクチャで行こう
勉強会 やさしいアーキテクチャで行こうKaz Furukawa
 
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。KojiMaruyama5
 
SIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くためにSIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くためにTakanari Konishi
 
201708 プログル模擬授業
201708 プログル模擬授業201708 プログル模擬授業
201708 プログル模擬授業Yuta Tonegawa
 
エンジニア取扱説明書
エンジニア取扱説明書エンジニア取扱説明書
エンジニア取扱説明書Hisanao Ichikawa
 

Similar to Machine Learning : The high interest credit card of technical debt (19)

第1回SIA研究会(例会)プレゼン資料
第1回SIA研究会(例会)プレゼン資料第1回SIA研究会(例会)プレゼン資料
第1回SIA研究会(例会)プレゼン資料
 
Unity/CSharp 2
Unity/CSharp 2Unity/CSharp 2
Unity/CSharp 2
 
仕様七変化
仕様七変化仕様七変化
仕様七変化
 
Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptxUnity/CSharp 1 - pptx
Unity/CSharp 1 - pptx
 
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
 
なぜピリカを作っているか?
なぜピリカを作っているか?なぜピリカを作っているか?
なぜピリカを作っているか?
 
Unity/CSharp 3
Unity/CSharp 3Unity/CSharp 3
Unity/CSharp 3
 
福岡XFD導入記
福岡XFD導入記福岡XFD導入記
福岡XFD導入記
 
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous IntegrationAizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous Integration
 
20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka20171004 kotlin rls_hosaka
20171004 kotlin rls_hosaka
 
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略
マイノリティ(少人数)な内製エンジニア組織の生存・成長戦略
 
勉強会 やさしいアーキテクチャで行こう
勉強会 やさしいアーキテクチャで行こう勉強会 やさしいアーキテクチャで行こう
勉強会 やさしいアーキテクチャで行こう
 
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。
コロナウィルス以前から全国各地の少人数フルリモート体制。失敗から学んだ一番大切な事。
 
SIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くためにSIerで幸せな技術キャリアを築くために
SIerで幸せな技術キャリアを築くために
 
201708 プログル模擬授業
201708 プログル模擬授業201708 プログル模擬授業
201708 プログル模擬授業
 
エンジニア取扱説明書
エンジニア取扱説明書エンジニア取扱説明書
エンジニア取扱説明書
 
DevOps Conference #1
DevOps Conference #1DevOps Conference #1
DevOps Conference #1
 

More from Yuichi Yoshida

Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Yuichi Yoshida
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Yuichi Yoshida
 
Swift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かSwift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かYuichi Yoshida
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with HandoffYuichi Yoshida
 
Getting started with CloudKit
Getting started with CloudKitGetting started with CloudKit
Getting started with CloudKitYuichi Yoshida
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Yuichi Yoshida
 
UIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐUIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐYuichi Yoshida
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説Yuichi Yoshida
 
64bit化してみた話
64bit化してみた話64bit化してみた話
64bit化してみた話Yuichi Yoshida
 

More from Yuichi Yoshida (14)

Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談
 
Swift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かSwift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道か
 
Handoff from Safari
Handoff from SafariHandoff from Safari
Handoff from Safari
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with Handoff
 
Getting started with CloudKit
Getting started with CloudKitGetting started with CloudKit
Getting started with CloudKit
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集
 
UIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐUIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐ
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説
 
64bit化してみた話
64bit化してみた話64bit化してみた話
64bit化してみた話
 
Gitのすすめ
GitのすすめGitのすすめ
Gitのすすめ
 

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:
  • 2. Machine Learning: The High-Interest Credit Card of Technical Debt
  • 3. はじめに • technical debt • 1992 Ward Cunninghamによって提唱 • 負債,全部が悪い訳じゃないが,どんどん複雑化する • 特に機械学習では,コードが複雑になる • ライブラリ整理→無駄 • ユニットテスト→無駄 • リファクタリング→無駄無駄無駄無駄無駄無駄!
  • 4. この論文で議論すること • データ使い回すよね? • パッケージをブラックボックスにするよね? • パッケージ間のglue code書くよね? • 学習してもなかなかうまくいかないよね? • 色々やっちゃって,わけわからなくなるよね? • こういう問題をクリアにしても論文にならないよね? • こういう問題,テクでなんとかしちゃうよね?
  • 6. Complex Models Erode Boundaries • Entanglement • データがぐちゃぐちゃ • Hidden Feedback Loops • 周期が長い,可視化しにくいループ • Undeclared Consumers • 開発するときに使われているデータはどれ?
  • 7. Entanglement • 特徴量を一つ増やしても,減らしても,すべての結果は変わる • CACEの原理 - Change anything, change everything • 対策1 モデルを分ける • そんなに綺麗にわかれないような • 対策2 可視化ツールを作る • 多次元,学習時間とか考えたら無理じゃない・・・? • 対策3 最強の正則化ツールを作る • アホか(ry • この問題は回避しようがない面がある • 開発のデッドラインよりもこれについて議論しよう
  • 8. Hidden Feedback loop • 1週間のページビューを入力として学習する場合 • それに気付くのが難しい • 評価が難しい まめにチェックして取り除く・・・?除けるか?
  • 9. Undeclared Consumers • 可視化の負債 • 誰が使っているか不明 • 例えば • フォントサイズとCTR これの防御はかなり難しい
  • 10. Data Dependencies Cost More than Code Dependencies • Unstable Data Dependencies • データがちょくちょく変わる場合 • Underutilized Data Dependencies • 使われていない(なくなった)データ対策 • Static Analysis of Data Dependencies • データの依存関係を静的に分析する • Correction Cascades • ちょっとしたモデルやデータの流用はやめれ

  • 11. Underutilized Data Dependencies • 使われなくなったデータ • 古い特徴量 • パッケージになった特徴量 • 自己満足系の特徴量 • 対策 • こういうのはとにかく削除する文化を作る • 削除した影響を評価するツールを作る
  • 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 • 観測結果と予測結果の比較 • 予測によってとった行動の回数でアラートあげよう
  • 20. Conclusion • 機械学習がダメと言ってるわけじゃない • researcher, engineerの両方が取り組む必要がある • 定理の証明や手法の発見に比べればおもしろくないが,エレガント なシステムを設計することは何よりも称賛されるべき仕事だ