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.3k
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
グローバル展開を見据えたサービスにおける機械翻訳プラクティス / dp-ai-translating
cyberagentdevelopers
PRO
1
140
Aurora_BlueGreenDeploymentsやってみた
tsukasa_ishimaru
1
120
Amazon FSx for NetApp ONTAPを利用するにあたっての要件整理と設計のポイント
non97
1
150
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
120
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
150
CI/CDやテスト自動化の開発プロジェクトへの適用
megascus
3
720
よくわからんサービスについての問い合わせが来たときの強い味方 Amazon Q について
kazzpapa3
0
210
生成AIとAWS CDKで実現! 自社ブログレビューの効率化
ymae
2
290
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
510
【LT】ソフトウェア産業は進化しているのか? -Javaの想い出とともに- #jjug_ccc
takabow
0
160
現地でMeet Upをやる場合の注意点〜反省点を添えて〜
shotashiratori
0
460
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
830
Featured
See All Featured
KATA
mclloyd
29
13k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Writing Fast Ruby
sferik
626
60k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Adopting Sorbet at Scale
ufuk
73
9k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
38
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
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