Machine Learning Casual Talks #1 で発表した「機械学習のテスト自動化コトハジメ」発表資料です。 http://connpass.com/event/6275/
機械学習のテスト⾃自動化コトハジメ2014.6.6 Machine Learning Casual Talks #1at COOKPAD@komiya_atsushi
View Slide
2
「お前誰よ?」3
略略して4
「おまだれ」5
6
ALBERT Inc.Analytical technology7
Job:Engineer8
Machine Learningand me9
10ワタシハ キカイガクシュウ チョットデキルI can develop machine learning a little.
Today’s topic11
Test Automation12
Code-driven testing(xUnit / xSpec)+Continuous integration13
Code-driven testing(xUnit / xSpec)+Continuous integration14こちらに注⽬目
Machine Learning15
2. 分類・推定フェーズ1. 学習フェーズ正解が未知のデータ(特徴量量のみ)特徴量量と正解情報の組み合わせから法則性を導き出す(モデル化)学習データ(特徴量量&正解情報)機械学習アルゴリズム分類・推定結果モデルモデルを元に正解を推測するPhoto by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/16
時間もあまりないし説明はカジュアルに割愛します17
18http://www.slideshare.net/shoheihido/cross-30115506/19詳しくは PFI ⽐比⼾戸さんの資料料がオススメ!
Why automatedtesting formachine 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 testingofMachine learning37
機械学習への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/41InputOutput
2. 分類・推定フェーズ1. 学習フェーズ正解が未知のデータ(特徴量量のみ)特徴量量と正解情報の組み合わせから法則性を導き出す(モデル化)学習データ(特徴量量&正解情報)機械学習アルゴリズム分類・推定結果モデルモデルを元に正解を推測するPhoto by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/42InputOutput⼊入⼒力力データに対して、期待していた出⼒力力結果が得られているのか?
Black-box testing !☺43
Patterns&Practices44
※ おことわり個⼈人の経験より得られた知⾒見見をもとにお話をします(これが正解、というわけではありません)45
テスト対象の分離離・明確化46
アプリケーションビジネスロジック機械学習アルゴリズム47
アプリケーションビジネスロジック機械学習アルゴリズム48実装の正しさを検証する使い⽅方の正しさを検証する得られる精度度を検証する
機械学習アルゴリズムに対するテスト既存のライブラリを利利⽤用するならテストは不不要フルスクラッチ・独⾃自実装する場合は必要49
ビジネスロジックに対するテスト機械学習に与える⼊入⼒力力データや出⼒力力結果の取り扱いが複雑な場合に実施すべき50
アプリケーションに対するテスト機械学習の結果の精度度を定量量評価できる仕組みが整っている場合に実現可能51
テストデータの準備・作成52
出⼒力力を⼈人⼒力力計算できる⼩小規模データを⼿手で作る53
54Spark/MLlib: K-Means での例例
55Spark/MLlib: K-Means での例例このテストデータに対してクラスタの中⼼心はこの値になる
擬似データを⾃自動⽣生成する56
57MLlib: Logistic regression での例例
58MLlib: Logistic regression での例例正規分布に従った乱数を⽣生成し条件に従ってラベル付け
これらを実践するためには、各機械学習アルゴリズムに対する本質的な理理解が求められる59
既存の枯れた実装を利利⽤用して⽣生成する60
⼊入⼒力力として与えるデータだけを準備すればよい61
ライブラリ:libsvm, liblinear,SciPy, OpenCV62
フレームワーク・ソフトウェア:Mahout, Jubatus, R63
テスト技法64
モック65
アプリケーションビジネスロジック機械学習アルゴリズム66ビジネスロジックのテストに集中したいが、
アプリケーションビジネスロジック機械学習アルゴリズム67機械学習アルゴリズムの予測しづらい挙動が悩ましい・・・
アプリケーションビジネスロジックモック化68意図的な挙動をさせる予測可能な返却値
フィクスチャ69
アプリケーションビジネスロジック機械学習アルゴリズムモデルファイルテストケースごとにモデルファイルを⽤用意・差し替える70
アプリケーションビジネスロジック機械学習アルゴリズム乱数シードを固定する71乱数発⽣生器seed = 127
ホワイトボックス的観点72
数値計算の結果が例例外値になりうるケースを予測する73
74
75
NaN(negative) infinity情報落落ち76
・・・とそろそろいいお時間ですのでこの辺で。77
Conclusion78
79本番環境で事故を起こす奴は
そうならないようにするための⾃自動テスト80
ありがとうございました!81