Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
機械学習の テスト⾃自動化 コトハジメ 2014.6.6 Machine Learning Casual Talks #1 at COOKPAD @komiya_atsushi
Slide 2
Slide 2 text
2
Slide 3
Slide 3 text
「お前誰よ?」 3
Slide 4
Slide 4 text
略略して 4
Slide 5
Slide 5 text
「おまだれ」 5
Slide 6
Slide 6 text
6
Slide 7
Slide 7 text
ALBERT Inc. Analytical technology 7
Slide 8
Slide 8 text
Job: Engineer 8
Slide 9
Slide 9 text
Machine Learning and me 9
Slide 10
Slide 10 text
10 ワタシハ キカイガクシュウ チョットデキル I can develop machine learning a little.
Slide 11
Slide 11 text
Today’s topic 11
Slide 12
Slide 12 text
Test Automation 12
Slide 13
Slide 13 text
Code-driven testing (xUnit / xSpec) + Continuous integration 13
Slide 14
Slide 14 text
Code-driven testing (xUnit / xSpec) + Continuous integration 14 こちらに注⽬目
Slide 15
Slide 15 text
Machine Learning 15
Slide 16
Slide 16 text
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化) 学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 16
Slide 17
Slide 17 text
時間もあまりないし 説明はカジュアルに 割愛します 17
Slide 18
Slide 18 text
18 http://www.slideshare.net/shoheihido/cross-30115506/19 詳しくは PFI ⽐比⼾戸さんの資料料がオススメ!
Slide 19
Slide 19 text
Why automated testing for machine learning ? 19
Slide 20
Slide 20 text
こんな経験 ありませんか? 20
Slide 21
Slide 21 text
機械学習アルゴリズムが 遅くて遅くて⽣生きるのが⾟辛い… 21 チューニングしてやったぜ! 何となく動作かくにん! よかった♡ 計算結果が全くおかしいことに N ヶ⽉月後になってから発覚 \(^o^)/ ※この話はフィクションです
Slide 22
Slide 22 text
機械学習アルゴリズムの精度度を 上げるすんごいアイデア思いついた! 22 実装してみたら精度度が向上した! 何となく動作かくにん! よかった♡ 実はコーナーケースなデータの 存在をまったく考慮できてなくて 本番環境で不不慮の事故死… ※この話はフィクションです
Slide 23
Slide 23 text
23 本 番 環 境 で 事 故 を 起 こ す 奴 は
Slide 24
Slide 24 text
だからといって Excel ⽅方眼紙に書かれた テスト項⽬目を毎回消化するのも バカらしい 24
Slide 25
Slide 25 text
機械学習の実装・利利⽤用に 集中したい! 25
Slide 26
Slide 26 text
テストを ⾃自動化しましょ! 26
Slide 27
Slide 27 text
悩みどころ 27
Slide 28
Slide 28 text
「期待する結果」 の定義が難しい 28
Slide 29
Slide 29 text
機械学習の 精度度は 100% ではない 29
Slide 30
Slide 30 text
ランダムな 振る舞いをする アルゴリズム 30
Slide 31
Slide 31 text
テストデータを 作るのが⾟辛い 31
Slide 32
Slide 32 text
どのような ⼊入⼒力力データを 与えればよいか? 32
Slide 33
Slide 33 text
どのような 出⼒力力結果が 得られるのか? 33
Slide 34
Slide 34 text
テストケースが NG となったときに 何がダメなのかが 分かりづらい 34
Slide 35
Slide 35 text
実装上の 不不具合によって NGとなったのか? 35
Slide 36
Slide 36 text
はたまた ⼊入⼒力力データに 不不⼿手際があったのか? 36
Slide 37
Slide 37 text
Software testing of Machine learning 37
Slide 38
Slide 38 text
機械学習への Code-driven testing 適⽤用の基本 38
Slide 39
Slide 39 text
⼊入⼒力力データと 出⼒力力結果を 意識識する 39
Slide 40
Slide 40 text
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化) 学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 40
Slide 41
Slide 41 text
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化) 学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 41 Input Output
Slide 42
Slide 42 text
2. 分類・推定フェーズ 1. 学習フェーズ 正解が未知のデータ (特徴量量のみ) 特徴量量と正解情報の 組み合わせから 法則性を導き出す (モデル化) 学習データ (特徴量量&正解情報) 機械学習 アルゴリズム 分類・推定結果 モデル モデルを元に 正解を推測する Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/ 42 Input Output ⼊入⼒力力データに対して、期待していた 出⼒力力結果が得られているのか?
Slide 43
Slide 43 text
Black-box testing ! ☺ 43
Slide 44
Slide 44 text
Patterns & Practices 44
Slide 45
Slide 45 text
※ おことわり 個⼈人の経験より 得られた知⾒見見をもとに お話をします (これが正解、というわけ ではありません) 45
Slide 46
Slide 46 text
テスト対象の 分離離・明確化 46
Slide 47
Slide 47 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム 47
Slide 48
Slide 48 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム 48 実装の正しさ を検証する 使い⽅方の正しさ を検証する 得られる精度度 を検証する
Slide 49
Slide 49 text
機械学習アルゴリズム に対するテスト 既存のライブラリを 利利⽤用するならテストは不不要 フルスクラッチ・独⾃自実装 する場合は必要 49
Slide 50
Slide 50 text
ビジネスロジックに 対するテスト 機械学習に与える ⼊入⼒力力データや出⼒力力結果の 取り扱いが複雑な場合に 実施すべき 50
Slide 51
Slide 51 text
アプリケーションに 対するテスト 機械学習の結果の精度度を 定量量評価できる仕組みが 整っている場合に実現可能 51
Slide 52
Slide 52 text
テストデータの 準備・作成 52
Slide 53
Slide 53 text
出⼒力力を⼈人⼒力力計算できる ⼩小規模データを⼿手で作る 53
Slide 54
Slide 54 text
54 Spark/MLlib: K-Means での例例
Slide 55
Slide 55 text
55 Spark/MLlib: K-Means での例例 このテストデータ に対して クラスタの中⼼心は この値になる
Slide 56
Slide 56 text
擬似データを ⾃自動⽣生成する 56
Slide 57
Slide 57 text
57 MLlib: Logistic regression での例例
Slide 58
Slide 58 text
58 MLlib: Logistic regression での例例 正規分布に従った 乱数を⽣生成し 条件に従って ラベル付け
Slide 59
Slide 59 text
これらを実践するためには、 各機械学習アルゴリズムに対する 本質的な理理解が求められる 59
Slide 60
Slide 60 text
既存の枯れた実装を 利利⽤用して⽣生成する 60
Slide 61
Slide 61 text
⼊入⼒力力として与える データだけを準備 すればよい 61
Slide 62
Slide 62 text
ライブラリ: libsvm, liblinear, SciPy, OpenCV 62
Slide 63
Slide 63 text
フレームワーク・ ソフトウェア: Mahout, Jubatus, R 63
Slide 64
Slide 64 text
テスト技法 64
Slide 65
Slide 65 text
モック 65
Slide 66
Slide 66 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム 66 ビジネスロジックの テストに集中したいが、
Slide 67
Slide 67 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム 67 機械学習アルゴリズムの 予測しづらい挙動が 悩ましい・・・
Slide 68
Slide 68 text
アプリケーション ビジネスロジック モック化 68 意図的な挙動を させる 予測可能な 返却値
Slide 69
Slide 69 text
フィクスチャ 69
Slide 70
Slide 70 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム モデルファイル テストケースごとに モデルファイルを ⽤用意・差し替える 70
Slide 71
Slide 71 text
アプリケーション ビジネスロジック 機械学習 アルゴリズム 乱数シードを 固定する 71 乱数発⽣生器 seed = 127
Slide 72
Slide 72 text
ホワイト ボックス的観点 72
Slide 73
Slide 73 text
数値計算の結果が 例例外値になりうる ケースを予測する 73
Slide 74
Slide 74 text
74
Slide 75
Slide 75 text
75
Slide 76
Slide 76 text
NaN (negative) infinity 情報落落ち 76
Slide 77
Slide 77 text
・・・と そろそろいいお時間 ですのでこの辺で。 77
Slide 78
Slide 78 text
Conclusion 78
Slide 79
Slide 79 text
79 本 番 環 境 で 事 故 を 起 こ す 奴 は
Slide 80
Slide 80 text
そうならないように するための ⾃自動テスト 80
Slide 81
Slide 81 text
ありがとう ございました! 81