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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
KOMIYA Atsushi
April 22, 2014
Technology
10
8.4k
機械学習分野におけるテストの自動化 #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.5k
#JJUG Fork/Join フレームワークを効率的に正しく使いたい
komiya_atsushi
0
550
[#JSUG] SmartNews における container friendly な Spring Boot アプリケーション開発
komiya_atsushi
1
11k
Java のデータ圧縮ライブラリを極める #jjug_ccc #ccc_c7
komiya_atsushi
4
5.2k
#devsumi 自然言語処理・機械学習によるファクトチェック業務の支援
komiya_atsushi
1
4.7k
SmartNews Ads における機械学習の活用とその運用 #mlops
komiya_atsushi
3
20k
GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4
komiya_atsushi
5
1.4k
Maven central repository の artifact をランキングする #渋谷java
komiya_atsushi
0
1.5k
確率的データ構造を Java で扱いたい! #JJUG
komiya_atsushi
6
2.4k
Other Decks in Technology
See All in Technology
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
Claude Code for NOT Programming
kawaguti
PRO
1
110
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
170
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
210
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
120
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Cult of Friendly URLs
andyhume
79
6.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Optimizing for Happiness
mojombo
379
71k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
The Invisible Side of Design
smashingmag
302
51k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Test your architecture with Archunit
thirion
1
2.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
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