$30 off During Our Annual Pro Sale. View Details »

機械学習のテスト自動化コトハジメ #MLCT Machine Learning Casual Talks #1

機械学習のテスト自動化コトハジメ #MLCT Machine Learning Casual Talks #1

Machine Learning Casual Talks #1 で発表した「機械学習のテスト自動化コトハジメ」発表資料です。
http://connpass.com/event/6275/

KOMIYA Atsushi

June 06, 2014
Tweet

More Decks by KOMIYA Atsushi

Other Decks in Technology

Transcript

  1. 機械学習の
    テスト⾃自動化
    コトハジメ
    2014.6.6 Machine Learning Casual Talks #1
    at COOKPAD
    @komiya_atsushi

    View Slide

  2. 2

    View Slide

  3. 「お前誰よ?」
    3

    View Slide

  4. 略略して
    4

    View Slide

  5. 「おまだれ」
    5

    View Slide

  6. 6

    View Slide

  7. ALBERT Inc.
    Analytical technology
    7

    View Slide

  8. Job:
    Engineer
    8

    View Slide

  9. Machine Learning
    and me
    9

    View Slide

  10. 10
    ワタシハ    キカイガクシュウ    チョットデキル
    I can develop machine learning a little.

    View Slide

  11. Today’s topic
    11

    View Slide

  12. Test Automation
    12

    View Slide

  13. Code-driven testing
    (xUnit / xSpec)
    +
    Continuous integration
    13

    View Slide

  14. Code-driven testing
    (xUnit / xSpec)
    +
    Continuous integration
    14
    こちらに注⽬目

    View Slide

  15. Machine Learning
    15

    View Slide

  16. 2. 分類・推定フェーズ
    1. 学習フェーズ
    正解が未知のデータ
    (特徴量量のみ)
    特徴量量と正解情報の
    組み合わせから
    法則性を導き出す
    (モデル化)
    学習データ
    (特徴量量&正解情報)
    機械学習
    アルゴリズム
    分類・推定結果
    モデル
    モデルを元に
    正解を推測する
    Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/
    16

    View Slide

  17. 時間もあまりないし
    説明はカジュアルに
    割愛します
    17

    View Slide

  18. 18
    http://www.slideshare.net/shoheihido/cross-30115506/19
    詳しくは  PFI ⽐比⼾戸さんの資料料がオススメ!

    View Slide

  19. Why automated
    testing for
    machine learning ?
    19

    View Slide

  20. こんな経験
    ありませんか?
    20

    View Slide

  21. 機械学習アルゴリズムが
    遅くて遅くて⽣生きるのが⾟辛い…
    21
    チューニングしてやったぜ!
    何となく動作かくにん!  よかった♡
    計算結果が全くおかしいことに
    N ヶ⽉月後になってから発覚  \(^o^)/
    ※この話はフィクションです

    View Slide

  22. 機械学習アルゴリズムの精度度を
    上げるすんごいアイデア思いついた!
    22
    実装してみたら精度度が向上した!
    何となく動作かくにん!  よかった♡
    実はコーナーケースなデータの
    存在をまったく考慮できてなくて
    本番環境で不不慮の事故死…
    ※この話はフィクションです

    View Slide

  23. 23













    View Slide

  24. だからといって
    Excel ⽅方眼紙に書かれた
    テスト項⽬目を毎回消化するのも
    バカらしい
    24

    View Slide

  25. 機械学習の実装・利利⽤用に
    集中したい!
    25

    View Slide

  26. テストを
    ⾃自動化しましょ!
    26

    View Slide

  27. 悩みどころ
    27

    View Slide

  28. 「期待する結果」
    の定義が難しい
    28

    View Slide

  29. 機械学習の
    精度度は  100%
    ではない
    29

    View Slide

  30. ランダムな
    振る舞いをする
    アルゴリズム
    30

    View Slide

  31. テストデータを
    作るのが⾟辛い
    31

    View Slide

  32. どのような
    ⼊入⼒力力データを
    与えればよいか?
    32

    View Slide

  33. どのような
    出⼒力力結果が
    得られるのか?
    33

    View Slide

  34. テストケースが
    NG となったときに
    何がダメなのかが
    分かりづらい
    34

    View Slide

  35. 実装上の
    不不具合によって  
    NGとなったのか?
    35

    View Slide

  36. はたまた
    ⼊入⼒力力データに
    不不⼿手際があったのか?
    36

    View Slide

  37. Software testing
    of
    Machine learning
    37

    View Slide

  38. 機械学習への
    Code-driven testing
    適⽤用の基本
    38

    View Slide

  39. ⼊入⼒力力データと
    出⼒力力結果を
    意識識する
    39

    View Slide

  40. 2. 分類・推定フェーズ
    1. 学習フェーズ
    正解が未知のデータ
    (特徴量量のみ)
    特徴量量と正解情報の
    組み合わせから
    法則性を導き出す
    (モデル化)
    学習データ
    (特徴量量&正解情報)
    機械学習
    アルゴリズム
    分類・推定結果
    モデル
    モデルを元に
    正解を推測する
    Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/
    40

    View Slide

  41. 2. 分類・推定フェーズ
    1. 学習フェーズ
    正解が未知のデータ
    (特徴量量のみ)
    特徴量量と正解情報の
    組み合わせから
    法則性を導き出す
    (モデル化)
    学習データ
    (特徴量量&正解情報)
    機械学習
    アルゴリズム
    分類・推定結果
    モデル
    モデルを元に
    正解を推測する
    Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/
    41
    Input
    Output

    View Slide

  42. 2. 分類・推定フェーズ
    1. 学習フェーズ
    正解が未知のデータ
    (特徴量量のみ)
    特徴量量と正解情報の
    組み合わせから
    法則性を導き出す
    (モデル化)
    学習データ
    (特徴量量&正解情報)
    機械学習
    アルゴリズム
    分類・推定結果
    モデル
    モデルを元に
    正解を推測する
    Photo by littlelostrobot https://www.flickr.com/photos/littlelostrobot/215559356/
    42
    Input
    Output
    ⼊入⼒力力データに対して、期待していた
    出⼒力力結果が得られているのか?

    View Slide

  43. Black-box testing !

    43

    View Slide

  44. Patterns
    &
    Practices
    44

    View Slide

  45. ※  おことわり
    個⼈人の経験より
    得られた知⾒見見をもとに
    お話をします
    (これが正解、というわけ
    ではありません)
    45

    View Slide

  46. テスト対象の
    分離離・明確化
    46

    View Slide

  47. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    47

    View Slide

  48. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    48
    実装の正しさ
    を検証する
    使い⽅方の正しさ
    を検証する
    得られる精度度
    を検証する

    View Slide

  49. 機械学習アルゴリズム
    に対するテスト
    既存のライブラリを
    利利⽤用するならテストは不不要
    フルスクラッチ・独⾃自実装
    する場合は必要
    49

    View Slide

  50. ビジネスロジックに
    対するテスト
    機械学習に与える
    ⼊入⼒力力データや出⼒力力結果の
    取り扱いが複雑な場合に
    実施すべき
    50

    View Slide

  51. アプリケーションに
    対するテスト
    機械学習の結果の精度度を
    定量量評価できる仕組みが
    整っている場合に実現可能
    51

    View Slide

  52. テストデータの
    準備・作成
    52

    View Slide

  53. 出⼒力力を⼈人⼒力力計算できる
    ⼩小規模データを⼿手で作る
    53

    View Slide

  54. 54
    Spark/MLlib: K-Means  での例例

    View Slide

  55. 55
    Spark/MLlib: K-Means  での例例
    このテストデータ
    に対して
    クラスタの中⼼心は
    この値になる

    View Slide

  56. 擬似データを
    ⾃自動⽣生成する
    56

    View Slide

  57. 57
    MLlib: Logistic regression  での例例

    View Slide

  58. 58
    MLlib: Logistic regression  での例例
    正規分布に従った
    乱数を⽣生成し
    条件に従って
    ラベル付け

    View Slide

  59. これらを実践するためには、
    各機械学習アルゴリズムに対する
    本質的な理理解が求められる
    59

    View Slide

  60. 既存の枯れた実装を
    利利⽤用して⽣生成する
    60

    View Slide

  61. ⼊入⼒力力として与える
    データだけを準備
    すればよい
    61

    View Slide

  62. ライブラリ:
    libsvm, liblinear,
    SciPy, OpenCV
    62

    View Slide

  63. フレームワーク・
    ソフトウェア:
    Mahout, Jubatus, R
    63

    View Slide

  64. テスト技法
    64

    View Slide

  65. モック
    65

    View Slide

  66. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    66
    ビジネスロジックの
    テストに集中したいが、

    View Slide

  67. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    67
    機械学習アルゴリズムの
    予測しづらい挙動が
    悩ましい・・・

    View Slide

  68. アプリケーション
    ビジネスロジック
    モック化
    68
    意図的な挙動を
    させる
    予測可能な
    返却値

    View Slide

  69. フィクスチャ
    69

    View Slide

  70. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    モデルファイル
    テストケースごとに
    モデルファイルを
    ⽤用意・差し替える
    70

    View Slide

  71. アプリケーション
    ビジネスロジック
    機械学習
    アルゴリズム
    乱数シードを
    固定する
    71
    乱数発⽣生器
    seed = 127

    View Slide

  72. ホワイト
    ボックス的観点
    72

    View Slide

  73. 数値計算の結果が
    例例外値になりうる
    ケースを予測する
    73

    View Slide

  74. 74

    View Slide

  75. 75

    View Slide

  76. NaN
    (negative) infinity
    情報落落ち
    76

    View Slide

  77. ・・・と
    そろそろいいお時間
    ですのでこの辺で。
    77

    View Slide

  78. Conclusion
    78

    View Slide

  79. 79













    View Slide

  80. そうならないように
    するための
    ⾃自動テスト
    80

    View Slide

  81. ありがとう
    ございました!
    81

    View Slide