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
機械学習分野におけるテストの自動化 #ques4
Search
KOMIYA Atsushi
April 22, 2014
Technology
10
8k
機械学習分野におけるテストの自動化 #ques4
第4回 Ques (2014.4.22 開催) でお話する「機械学習分野におけるテストの自動化」の発表資料です。
KOMIYA Atsushi
April 22, 2014
Tweet
Share
More Decks by KOMIYA Atsushi
See All by KOMIYA Atsushi
#JJUG Java における乱数生成器とのつき合い方
komiya_atsushi
5
5.1k
#JJUG Fork/Join フレームワークを効率的に正しく使いたい
komiya_atsushi
0
440
[#JSUG] SmartNews における container friendly な Spring Boot アプリケーション開発
komiya_atsushi
1
11k
Java のデータ圧縮ライブラリを極める #jjug_ccc #ccc_c7
komiya_atsushi
4
4.6k
#devsumi 自然言語処理・機械学習によるファクトチェック業務の支援
komiya_atsushi
1
4.2k
SmartNews Ads における機械学習の活用とその運用 #mlops
komiya_atsushi
3
19k
GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4
komiya_atsushi
5
1.3k
Maven central repository の artifact をランキングする #渋谷java
komiya_atsushi
0
1.2k
確率的データ構造を Java で扱いたい! #JJUG
komiya_atsushi
6
2.2k
Other Decks in Technology
See All in Technology
Oracle Database 23ai 新機能#4 Real Application Clusters
oracle4engineer
PRO
0
160
TypeScript x Raycast x AIで変える開発者体験
nagauta
1
270
Castor - Le Task Runner PHP qui simplifie votre Workflow
lyrixx
1
280
Assisted reorganization of data structures
ennael
PRO
0
270
Qdrant を用いた検索改善施策の紹介 / Search Engineering Tech Talk 2024 Summer
visional_engineering_and_design
1
210
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ysknsid25
12
3.3k
RAG: from dumb implementation to serious results
glaforge
0
150
KubeVirt Networking ONIC 2024
orimanabu
4
620
Databricks Appのご紹介
databricksjapan
0
350
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
2
240
Semantic Kernel の Agent 機能試してみた!
okazuki
1
160
Amazon ECS & AWS Fargate 今昔物語 / past and present stories of Amazon ECS and AWS Fargate
iselegant
10
1.8k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Producing Creativity
orderedlist
PRO
341
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Become a Pro
speakerdeck
PRO
24
4.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Designing the Hi-DPI Web
ddemaree
280
34k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Being A Developer After 40
akosma
84
590k
Happy Clients
brianwarren
97
6.7k
Transcript
機械学習分野に おける テストの⾃自動化 2014.4.22 Ques #4 in DeNA @komiya_atsushi
※この資料料は http://bit.ly/ques4_ML_test で公開しています 2
Self-introduction 3
4
ALBERT Inc. Analytical technology 5
Background: Java / Web / AWS Machine learning 6
Jobs: Curation service, Marketing automation and Recommender systems developer 7
QA and me 8
知識識はあんまり ありません (>_<) 9
QA in ALBERT 10
QA 専任の エンジニアは いません 11
QA = 開発エンジニア のお仕事 ※インフラ構築や運⽤用も 開発エンジニアのお仕事です. つまりフルスタ(ry 12
Test automation in ALBERT 13
Test automation = Code-driven testing (xUnit / xSpec) + Continuous
integration 14
Code-driven testing by JUnit / Spock ※レガシーなシステムを除く 15
Continuous integration by Jenkins . ※最近開発しているシステム 16
Test-driven development ※少しずつ導⼊入中 17
Today’s topic 18
機械学習 × テスト⾃自動化 19
Code-driven testing に関わる話題を 中⼼心にお話しします 20
Machine Learning 21
What ? 22
“⼈人間が⾃自然に⾏行行っている 学習能⼒力力と同様の機能を コンピュータで実現しよう とする技術・⼿手法” from Wikipedia (機械学習) 23
“第⼀一にそのデータが⽣生成した 潜在的機構の特徴を捉え、複雑な 関係を識識別(すなわち定量量化) する。そして第⼆二にその識識別した パターンを⽤用いて新たなデータに ついて予測を⾏行行う” from Wikipedia (機械学習) 24
“コンピューターでアルゴリズムを構築し、 学習データを読み込ませることで、⾃自動的に 今あるデータを分類&まだ⾒見見ぬデータを 予測できるようにするもの” “ヒトの情報処理理能⼒力力を超えて、複雑なデータを 分類&予測できるようにするもの” from 銀座で働くデータサイエンティスト のブログ http://tjo.hatenablog.com/entry/2013/04/30/191947
25
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 26
Use case 27
Recommendations 28
Email filtering 29
Accuracy 30
機械学習の 精度度は 100 % ではない ⼈人間と同じように、分類・ 推定に失敗することがある 例例)メールのスパム誤判定 31
Software testing of Machine learning 32
機械学習への Code-driven testing 適⽤用の基本 33
⼊入⼒力力データと 出⼒力力結果を 意識識する 34
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 35
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ Input Output 36
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ Input Output 期待する結果 であるか? 37
つまりは ブラックボックス テスト 38
悩みどころ 39
「期待する結果」 の定義が難しい 40
精度度は 100% ではない 41
ランダムな 振る舞いをする アルゴリズム 42
テストデータを 作るのが⾟辛い 43
どのような ⼊入⼒力力データを 与えればよいか? 44
どのような 出⼒力力結果が 得られるのか? 45
テストケースが NG となったときに 何がダメなのかが 分かりづらい 46
実装上の不不具合に よって NGとなったのか? 47
はたまた ⼊入⼒力力データに 不不⼿手際があったの か? 48
Patterns & Practices 49
テスト対象の 分離離を意識識する 50
アプリケーション ビジネスロジック 機械学習 アルゴリズム 51
アプリケーション ビジネスロジック 機械学習 アルゴリズム 特にビジネスロジックと 機械学習アルゴリズムを 切切り離離して考える 52
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
53
どの粒粒度度のテストを 実施すべきなのかを 明らかにしておく 54
機械学習アルゴリズム に対するテスト 既存のライブラリを 利利⽤用するならテストは不不要 フルスクラッチ・独⾃自実装 する場合は必要 55
ビジネスロジックに 対するテスト 機械学習に与える ⼊入⼒力力データや出⼒力力結果の 取り扱いが複雑な場合に 実施すべき 56
アプリケーションに 対するテスト 機械学習の結果の精度度を 定量量評価できる仕組みが 整っている場合に実現可能 57
機械学習に対する 理理解を深める 58
ケース テストデータを作成したい テスト結果が NG となった 場合に何が悪いのかを 明らかにしたい 59
擬似コードや 数式を理理解 するのがベスト 60
61
数式が理理解できれば テストデータは ⼿手計算(Excel)で 作れる 62
数式に弱くとも ⼊入⼒力力データ タスク 出⼒力力結果 は把握できるように 63
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 64
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ Input ⼊入⼒力力データ(説明変数、独⽴立立変数)は ・数値なのか? ・⽂文字列列なのか? ・質的変数なのか? ・量量的変数なのか? 65
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ タスクは ・分類なのか? ・数値の予測なのか? 66
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化)
学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ Output 出⼒力力結果は ・連続値なのか? ・離離散値なのか? ・単⼀一なのか? ・複数なのか? 67
別⾔言語の実装を 利利⽤用して テストデータを 作成する 68
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
テストデータの作成、 もぅマヂ無理理… 69
ケース (やんごとなき理理由により) フルスクラッチ実装した 機械学習アルゴリズムを テストしたい 70
別⾔言語の 実装が存在する ことが前提 71
かつ、 その別⾔言語の 実装が⼗十分に 枯れていること 72
ライブラリ: libsvm, liblinear, SciPy, OpenCV 73
フレームワーク・ ソフトウェア: Mahout, Jubatus, R 74
モックや フィクスチャを 活⽤用する 75
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
76
ケース ビジネスロジックを テストしたい ランダムに振る舞う 機械学習アルゴリズムを テストしたい 77
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
機械学習アルゴリズムの振る舞いに あまり左右されたくない… 78
モックを利利⽤用する 79
モックライブラリ Mockito https://code.google.com/p/mockito/ JMockit https://code.google.com/p/jmockit/ 80
アプリケーション ビジネスロジック モック アルゴリズム モックに 差し替える ダミーの 結果を返す 81
フィクスチャで 状態を固定する 82
アプリケーション ビジネスロジック 機械学習 アルゴリズム モデル モデルを固定する (setup / teardown) 83
アプリケーション ビジネスロジック 機械学習 アルゴリズム 乱数発⽣生器 乱数のシードを 固定する 84
※ご参考 85 http://bit.ly/random_junit
ベースラインの 精度度と⽐比較する 86
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
87
ケース サービスレベルの 精度度を検証したい 88
やりたいこと 89
「期待される精度度」 の設定に 別のアルゴリズムの 精度度を利利⽤用する 90
例例) オンライン学習の アルゴリズムなら パーセプトロンの 精度度をベースラインに SCW の精度度を検証する 91
数値計算の 特性を把握する 92
アプリケーション ビジネスロジック 機械学習 アルゴリズム 実装の正しさを 検証する 使い⽅方の正しさ を検証する 得られる精度度を 検証する
93
ケース 独⾃自の機械学習 アルゴリズムを 実装したので より緻密にテストしたい 94
ホワイトボックス テスト 95
分岐だけではなく 数値計算にも注意 を払う 96
97
98
Conclusion 99
業務システムの テストとは異異なる 知識識を求められる のは事実 100
ただ QA の知識識を ⼗十分に活⽤用する ことはできる! 101
• テスト対象の分離離を意識識する • 機械学習に対する理理解を深める • 別⾔言語の実装を利利⽤用してテスト データを作成する • モックやフィクスチャを活⽤用する •
ベースラインの精度度と⽐比較する • 数値計算の特性を理理解する 102
ありがとう ございました! 103