Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習ソフトウェアにおけるテスト手法

Hiroki Tsuji
November 29, 2023

 機械学習ソフトウェアにおけるテスト手法

2023/11/29(水)の第36回MLOps勉強会に登壇した際の資料です。

Hiroki Tsuji

November 29, 2023
Tweet

More Decks by Hiroki Tsuji

Other Decks in Programming

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2023, Amazon Web Services, Inc. or its affiliates. 機械学習ソフトウェアにおける テスト⼿法 辻 浩季 Solutions Architect Amazon Web Services Japan G.K. 2023/11
  2. © 2023, Amazon Web Services, Inc. or its affiliates. 2

    Hiroki Tsuji Solutions Architect Amazon Web Services Japan G.K. • 主に⻄⽇本のお客様への AWS 導⼊⽀援 --- • 前職は電機メーカーで発電プラントの 異常予兆検知システムの設計・開発に従事 趣味 : ベースギター、作曲
  3. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. 今⽇のお話の整理 4
  4. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習を導⼊したソフトウェアの概略図

    5 処理 呼び出し 先⾏処理 ⼊⼒ データ 学習 データ データ 処理 ⼊⼒処理 学習 モデル モデル ロード 予測 出⼒処理 出⼒ 受け取り 後続処理 ML モデルレベル ML サービスレベル ML システムレベル 以降、このシステム全体を 機械学習ソフトウェア と呼称します。
  5. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習を導⼊したソフトウェアの概略図

    6 処理 呼び出し 先⾏処理 ⼊⼒ データ 学習 データ データ 処理 ⼊⼒処理 学習 モデル モデル ロード 予測 出⼒処理 出⼒ 受け取り 後続処理 ML モデルレベル ML サービスレベル ML システムレベル • ML モデルのテストには、学習が上⼿くできているか、Loss が減少しているか、 過学習を抑制できているかなどの評価指標を使ったものが挙げられる • モデルを扱う箇所を ML モデルと定義する
  6. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習を導⼊したソフトウェアの概略図

    7 処理 呼び出し 先⾏処理 ⼊⼒ データ 学習 データ データ 処理 ⼊⼒処理 学習 モデル モデル ロード 予測 出⼒処理 出⼒ 受け取り 後続処理 ML モデルレベル ML サービスレベル ML システムレベル • ML サービス箇所を呼び出す部分を ML システムと定義する • ML システムレベルのテストは通常のソフトウェアテストと同様のテストを ⾏うことができる(ex. 結合テスト、運⽤テスト、負荷テストなど)
  7. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習を導⼊したソフトウェアの概略図

    8 処理 呼び出し 先⾏処理 ⼊⼒ データ 学習 データ データ 処理 ⼊⼒処理 学習 モデル モデル ロード 予測 出⼒処理 出⼒ 受け取り 後続処理 ML モデルレベル ML サービスレベル ML システムレベル • ML モデル箇所を呼び出す部分を ML サービスと定義する • ML モデル、ML システムのテストだけでは、 「未知のデータが⼊⼒されたときに ML モデルを⽤いて推論結果を出⼒する」処理がテスト内に網羅されていないため、 品質を保証することができない 本セッションは ML サービスレベルに着⽬して、 どのようなテストを実施すべきかについてお話します
  8. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. そもそも「テスト」とは 9 - 従来のソフトウェアテスト
  9. © 2023, Amazon Web Services, Inc. or its affiliates. 「テスト」とは

    10 コスト (経済的/時間的) 信頼の失墜 重⼤な事故 機会の損失 • 要件レビューによる要件の正確性向上、余計な⼯数の排除 • テストしやすい設計による拡張性の⾼いソフトウェア • 不具合の少ないソフトウェアによりビジネスの成功の可能性をアップ もし作成したシステムに不具合があると… テストはビジネスを成功させるためにある
  10. © 2023, Amazon Web Services, Inc. or its affiliates. 従来のソフトウェア開発におけるテスト

    11 従来のソフトウェア開発において、テストでは 「作られたシステムが、期待する動作をするのかを確認」する必要がある。 単体テストの例 結合テストの例 def addition(x,y): return x+y x=2, y=3 のとき、返却値が 5 になるか確認する。 「カートに⼊れる」を押下して、カートに商品が 追加されるかを確認する。
  11. © 2023, Amazon Web Services, Inc. or its affiliates. 従来のソフトウェア開発と機械学習ソフトウェア開発の違い

    12 従来のソフトウェア開発 機械学習ソフトウェア開発 従来のソフトウェア開発は 演繹的 機械学習ソフトウェア開発は 帰納的 要件 仕様 SW テスト 具体化 具体化 作成 作成 実施 学習済モデル 学習⽤ データセット 評価⽤ データセット テスト 学習 評価 ?? • 開発作業が正しく⾏われれば要件・仕様を 満たすソフトウェアが出来上がる • 学習⽤データセット以外のデータでも正しい 推論結果を出⼒するかどうかはわからない
  12. © 2023, Amazon Web Services, Inc. or its affiliates. 従来のソフトウェア開発に適⽤するテストの考え⽅

    13 • 無数に存在する⼊⼒のすべてに対して、出⼒が正しいか確認するのは⾮現実的 同値分割 と 境界値 を⽤いてテストを⾏う 例︓某遊園地の⼊場料 年齢 ⼊場料 ⼤⼈︓18 歳以上 ¥ 10,900 中⼈︓12 – 17 歳 ¥ 9,000 ⼩⼈︓4 – 11 歳 ¥ 5,600 3 歳以下 無料 ⼤⼈︓18歳以上 中⼈︓12-17歳 ⼩⼈︓4-11歳 3歳以下 マイナス ¥ 10,900 ¥ 9,000 ¥ 5,600 ¥ 0 エラー処理
  13. © 2023, Amazon Web Services, Inc. or its affiliates. なぜ機械学習ソフトウェアに同値クラスの⼿法を適⽤できないか︖

    14 例︓画像分類 ML サービス 猫︕ • ⼊⼒に対して同値クラスを定義することができないため、同値クラスにおける 代表値を使ったテストや、境界値を使ったテストを実施できない p 境界を定義できたとしてもそれが正しいと判断することができない • ⼊⼒データの変化に対して推論結果が常に変化するとは限らない p ⼊⼒データのわずかな違いによって⼤きく推論結果が変わることがある 従来のソフトウェア開発で使うテスト⼿法を適⽤することができない
  14. © 2023, Amazon Web Services, Inc. or its affiliates. なぜ機械学習ソフトウェアに同値クラスの⼿法を適⽤できないか︖

    15 例︓画像分類 ML サービス 猫︕ • ⼊⼒に対して同値クラスを定義することができないため、同値クラスにおける 代表値を使ったテストや、境界値を使ったテストを実施できない p 境界を定義できたとしてもそれが正しいと判断することができない • ⼊⼒データの変化に対して推論結果が常に変化するとは限らない p ⼊⼒データのわずかな違いによって⼤きく推論結果が変わることがある 従来のソフトウェア開発で使うテスト⼿法を適⽤することができない 機械学習を扱うソフトウェアにおいて テストはどのように考えればよいのか︖︖
  15. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習ソフトウェアに適⽤できるテスト⼿法

    16 • メタモルフィックテスティング p ⼊⼒データの変化によって推論結果が変化するかという関係性に基づくテスト⽅法 • ニューロンカバレッジ p ニューラルネットを構成するすべての中間ニューロンが少なくとも⼀度は 活性化させるようテストを実⾏する⼿法 • 最⼤安全半径 p 「少なくともこの範囲であれば妥当な値が得られる」であろう範囲を定義して、 推論結果の妥当性を確認する⼿法
  16. © 2023, Amazon Web Services, Inc. or its affiliates. 機械学習ソフトウェアに適⽤できるテスト⼿法

    17 • メタモルフィックテスティング p ⼊⼒データの変化によって推論結果が変化するかという関係性に基づくテスト⽅法 • ニューロンカバレッジ p ニューラルネットを構成するすべての中間ニューロンが少なくとも⼀度は 活性化させるようテストを実⾏する⼿法 • 最⼤安全半径 p 「少なくともこの範囲であれば妥当な値が得られる」であろう範囲を定義して、 推論結果の妥当性を確認する⼿法
  17. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. メタモルフィックテスティング 18
  18. © 2023, Amazon Web Services, Inc. or its affiliates. 従来型のソフトウェアテスト

    19 𝒇(𝒙) ⼊⼒ 𝒙 出⼒ 𝒚 テスト対象 「正解」と出⼒ 𝒚 を⽐較 • テスト対象に⼊⼒データを与えて得た出⼒と「正解※ 」を⽐較する • ⼀致した場合は「成功」、⼀致しなかった場合は「失敗」と判定 テスト⼿順 ※︓期待通りの正しい出⼒データを指す この⼀連の⼿法をテストオラクルと呼ぶ
  19. © 2023, Amazon Web Services, Inc. or its affiliates. 「正解」を定義できない場合、どうなる︖

    20 • 「正解」を定義できない場合、⼊⼒データから得られた出⼒が正しいかを 判定できない この問題をテストオラクル問題と呼ぶ 例︓𝒇 𝒙 = sin 𝒙 の場合。⼊⼒ 𝑥 = 12.3° の時、正解をどう定義する…︖ 𝒇(𝒙) ⼊⼒ 𝒙 出⼒ 𝒚 テスト対象 「正解」と出⼒ 𝒚 を⽐較
  20. © 2023, Amazon Web Services, Inc. or its affiliates. 21

    メタモルフィックテスティングとは テストオラクル問題のあるソフトウェアをテストするために考案された⼿法 ⼊⼒ 𝒙 ⼊⼒ 𝒙′ 𝒇(𝒙) ① ② ③ ③ ④ ① テスト⽤の⼊⼒ 𝒙 を⽤意 ② ⼊⼒ 𝒙 を加⼯し、⼊⼒ 𝒙ʼ を作成 ③ 上記の⼊⼒をそれぞれテスト対象に ⼊⼒し、出⼒を得る ④ 出⼒ 𝒚, 𝒚′ の関係を評価し、テストの 成功・失敗を判定 テスト⼿順 テスト⽤の⼊⼒データごとに正解を定義する必要なくテストができる 出⼒ 𝒚 出⼒ 𝒚′
  21. © 2023, Amazon Web Services, Inc. or its affiliates. 22

    メタモルフィックテスティングとは テストオラクル問題のあるソフトウェアをテストするために考案された⼿法 𝒇(𝒙) テスト⽤の⼊⼒データごとに正解を定義する必要なくテストができる 出⼒ 𝒚 出⼒ 𝒚′ ⼊⼒ 𝒙 = 𝟏𝟐. 𝟑° ⼊⼒ 𝒙′ = 𝟏𝟗𝟐. 𝟑° 𝒙* = 𝒙 + 𝟏𝟖𝟎° なので、三⾓関数の定義より sin 𝑥 = − sin 𝑥′ が成⽴する 𝒚 = −𝒚*となればテストは成功と定義できる 「メタモルフィック関係」 と呼ぶ
  22. © 2023, Amazon Web Services, Inc. or its affiliates. メタモルフィックテスティングの機械学習ソフトウェアへの適⽤⽅法

    23 画像処理の場合 ⾃然⾔語処理の場合 • 画像を 10° 回転させる • 画像の解像度を荒くする • ⽂章中の単語を似た意味の単語に置き換える 「吾輩は猫である」という⼩説の書き出しを教えて 「吾輩は猫である」という本の書き出しを教えて レコメンデーションの場合 1位 本 2位 CD 3位 楽器 4位 ゲーム 1位 CD 2位 楽器 3位 ゲーム 4位 PC周辺機器 • ⼊⼒となる商品データの 1位を削除する
  23. © 2023, Amazon Web Services, Inc. or its affiliates. メタモルフィックテスティングでわかること

    24 • メタモルフィック関係を定義することで、メタモルフィックテストの結果によって なにか問題が発⽣している可能性を⾒つけることができる 画像 A 画像 A を10°回転 猫 ⽝ 画像を 10° 回転させると異なる結果が出る この画像に関する学習が不⾜している可能性がある • 出⼒を正解かどうか確認したい場合は別のテスト⼿法を適⽤する必要がある p 画像 A が猫であるかどうかはメタモルフィックテスティングでは確認しない。 みるのはあくまで関係性のみ。
  24. © 2023, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. まとめ 25
  25. © 2023, Amazon Web Services, Inc. or its affiliates. まとめ

    26 • 従来のソフトウェア開発で⽤いられてきたテストを機械学習ソフトウェアに適⽤する ことは難しい • 機械学習ソフトウェアの ML サービス箇所のテストにはメタモルフィックテスティングを 適⽤することができる p 正解データを定義せずにテストを実施することができる p メタモルフィックテスティングにより、機械学習ソフトウェアになにか問題が発⽣して いる可能性を⾒つけ出すことができる
  26. © 2023, Amazon Web Services, Inc. or its affiliates. 参考⽂献

    28 佐藤直⼈, ⼩川秀⼈, 來間啓伸, 明神智之. 『AI ソフトウェアのテスト』, リックテレコム, 2021 Dusica Marijan, Arnaud Gotlieb. “Software Testing for Machine Learning”, Proceedings of the AAAI Conference on Artificial Intelligence, 34(09), 13576-13582 (2020)
  27. © 2023, Amazon Web Services, Inc. or its affiliates. Thank

    you! © 2022, Amazon Web Services, Inc. or its affiliates.