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
機械学習のテスト自動化コトハジメ #MLCT Machine Learning Casual ...
Search
KOMIYA Atsushi
June 06, 2014
Technology
11
11k
機械学習のテスト自動化コトハジメ #MLCT Machine Learning Casual Talks #1
Machine Learning Casual Talks #1 で発表した「機械学習のテスト自動化コトハジメ」発表資料です。
http://connpass.com/event/6275/
KOMIYA Atsushi
June 06, 2014
Tweet
Share
More Decks by KOMIYA Atsushi
See All by KOMIYA Atsushi
#JJUG Java における乱数生成器とのつき合い方
komiya_atsushi
5
5.4k
#JJUG Fork/Join フレームワークを効率的に正しく使いたい
komiya_atsushi
0
510
[#JSUG] SmartNews における container friendly な Spring Boot アプリケーション開発
komiya_atsushi
1
11k
Java のデータ圧縮ライブラリを極める #jjug_ccc #ccc_c7
komiya_atsushi
4
5k
#devsumi 自然言語処理・機械学習によるファクトチェック業務の支援
komiya_atsushi
1
4.5k
SmartNews Ads における機械学習の活用とその運用 #mlops
komiya_atsushi
3
19k
GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4
komiya_atsushi
5
1.3k
Maven central repository の artifact をランキングする #渋谷java
komiya_atsushi
0
1.4k
確率的データ構造を Java で扱いたい! #JJUG
komiya_atsushi
6
2.3k
Other Decks in Technology
See All in Technology
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
260
Rubyの国のPerlMonger
anatofuz
3
730
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
15
5.6k
九州の人に知ってもらいたいGISスポット / gis spot in kyushu 2025
sakaik
0
120
Lambda management with ecspresso and Terraform
ijin
2
150
金融サービスにおける高速な価値提供とAIの役割 #BetAIDay
layerx
PRO
1
790
大規模イベントに向けた ABEMA アーキテクチャの遍歴 ~ Platform Strategy 詳細解説 ~
nagapad
0
210
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
2.3k
OPENLOGI Company Profile for engineer
hr01
1
37k
Tableau API連携の罠!?脱スプシを夢見たはずが、逆に依存を深めた話
cuebic9bic
3
220
Amazon Qで2Dゲームを作成してみた
siromi
0
130
Backlog AI アシスタントが切り開く未来
vvatanabe
0
120
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
GitHub's CSS Performance
jonrohan
1031
460k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Rails Girls Zürich Keynote
gr2m
95
14k
Faster Mobile Websites
deanohume
308
31k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
The Language of Interfaces
destraynor
158
25k
Bash Introduction
62gerente
614
210k
How STYLIGHT went responsive
nonsquared
100
5.7k
Transcript
機械学習の テスト⾃自動化 コトハジメ 2014.6.6 Machine Learning Casual Talks #1 at
COOKPAD @komiya_atsushi
2
「お前誰よ?」 3
略略して 4
「おまだれ」 5
6
ALBERT Inc. Analytical technology 7
Job: Engineer 8
Machine Learning and me 9
10 ワタシハ キカイガクシュウ チョットデキル I can develop machine
learning a little.
Today’s topic 11
Test Automation 12
Code-driven testing (xUnit / xSpec) + Continuous integration 13
Code-driven testing (xUnit / xSpec) + Continuous integration 14 こちらに注⽬目
Machine Learning 15
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 16
時間もあまりないし 説明はカジュアルに 割愛します 17
18 http://www.slideshare.net/shoheihido/cross-30115506/19 詳しくは PFI ⽐比⼾戸さんの資料料がオススメ!
Why automated testing for machine learning ? 19
こんな経験 ありませんか? 20
機械学習アルゴリズムが 遅くて遅くて⽣生きるのが⾟辛い… 21 チューニングしてやったぜ! 何となく動作かくにん! よかった♡ 計算結果が全くおかしいことに N ヶ⽉月後になってから発覚 \(^o^)/
※この話はフィクションです
機械学習アルゴリズムの精度度を 上げるすんごいアイデア思いついた! 22 実装してみたら精度度が向上した! 何となく動作かくにん! よかった♡ 実はコーナーケースなデータの 存在をまったく考慮できてなくて 本番環境で不不慮の事故死… ※この話はフィクションです
23 本 番 環 境 で 事 故 を 起
こ す 奴 は
だからといって Excel ⽅方眼紙に書かれた テスト項⽬目を毎回消化するのも バカらしい 24
機械学習の実装・利利⽤用に 集中したい! 25
テストを ⾃自動化しましょ! 26
悩みどころ 27
「期待する結果」 の定義が難しい 28
機械学習の 精度度は 100% ではない 29
ランダムな 振る舞いをする アルゴリズム 30
テストデータを 作るのが⾟辛い 31
どのような ⼊入⼒力力データを 与えればよいか? 32
どのような 出⼒力力結果が 得られるのか? 33
テストケースが NG となったときに 何がダメなのかが 分かりづらい 34
実装上の 不不具合によって NGとなったのか? 35
はたまた ⼊入⼒力力データに 不不⼿手際があったのか? 36
Software testing of Machine learning 37
機械学習への Code-driven testing 適⽤用の基本 38
⼊入⼒力力データと 出⼒力力結果を 意識識する 39
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 40
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 41 Input Output
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 42 Input Output ⼊入⼒力力データに対して、期待していた 出⼒力力結果が得られているのか?
Black-box testing ! ☺ 43
Patterns & Practices 44
※ おことわり 個⼈人の経験より 得られた知⾒見見をもとに お話をします (これが正解、というわけ ではありません) 45
テスト対象の 分離離・明確化 46
アプリケーション ビジネスロジック 機械学習 アルゴリズム 47
アプリケーション ビジネスロジック 機械学習 アルゴリズム 48 実装の正しさ を検証する 使い⽅方の正しさ を検証する 得られる精度度
を検証する
機械学習アルゴリズム に対するテスト 既存のライブラリを 利利⽤用するならテストは不不要 フルスクラッチ・独⾃自実装 する場合は必要 49
ビジネスロジックに 対するテスト 機械学習に与える ⼊入⼒力力データや出⼒力力結果の 取り扱いが複雑な場合に 実施すべき 50
アプリケーションに 対するテスト 機械学習の結果の精度度を 定量量評価できる仕組みが 整っている場合に実現可能 51
テストデータの 準備・作成 52
出⼒力力を⼈人⼒力力計算できる ⼩小規模データを⼿手で作る 53
54 Spark/MLlib: K-Means での例例
55 Spark/MLlib: K-Means での例例 このテストデータ に対して クラスタの中⼼心は この値になる
擬似データを ⾃自動⽣生成する 56
57 MLlib: Logistic regression での例例
58 MLlib: Logistic regression での例例 正規分布に従った 乱数を⽣生成し 条件に従って ラベル付け
これらを実践するためには、 各機械学習アルゴリズムに対する 本質的な理理解が求められる 59
既存の枯れた実装を 利利⽤用して⽣生成する 60
⼊入⼒力力として与える データだけを準備 すればよい 61
ライブラリ: libsvm, liblinear, SciPy, OpenCV 62
フレームワーク・ ソフトウェア: Mahout, Jubatus, R 63
テスト技法 64
モック 65
アプリケーション ビジネスロジック 機械学習 アルゴリズム 66 ビジネスロジックの テストに集中したいが、
アプリケーション ビジネスロジック 機械学習 アルゴリズム 67 機械学習アルゴリズムの 予測しづらい挙動が 悩ましい・・・
アプリケーション ビジネスロジック モック化 68 意図的な挙動を させる 予測可能な 返却値
フィクスチャ 69
アプリケーション ビジネスロジック 機械学習 アルゴリズム モデルファイル テストケースごとに モデルファイルを ⽤用意・差し替える 70
アプリケーション ビジネスロジック 機械学習 アルゴリズム 乱数シードを 固定する 71 乱数発⽣生器 seed =
127
ホワイト ボックス的観点 72
数値計算の結果が 例例外値になりうる ケースを予測する 73
74
75
NaN (negative) infinity 情報落落ち 76
・・・と そろそろいいお時間 ですのでこの辺で。 77
Conclusion 78
79 本 番 環 境 で 事 故 を 起
こ す 奴 は
そうならないように するための ⾃自動テスト 80
ありがとう ございました! 81