Save 37% off PRO during our Black Friday Sale! »

Dive into TensorFlow Data Validation

8fa31051503b09846584c49cd53d2f80?s=47 Asei Sugiyama
November 22, 2021

Dive into TensorFlow Data Validation

TFDV (TensorFlow Data Validation) を中心に、Data Validation について現状の取り組みをまとめた資料です。

Reference

Data Validation For Machine Learning https://mlsys.org/Conferences/2019/doc/2019/167.pdf
TFDV Notebook https://colab.research.google.com/github/tensorflow/tfx/blob/master/docs/tutorials/data_validation/tfdv_basic.ipynb

8fa31051503b09846584c49cd53d2f80?s=128

Asei Sugiyama

November 22, 2021
Tweet

Transcript

  1. Dive into TensorFlow Data Validation Asei Sugiyama

  2. TL;DR TensorFlow Data Validation は TFX の一部で、データの検証を行うコン ポーネントで用いられるライブラリ Google 社内では

    Data Validation に関してスキーマをもとにした実践的 な取り組みが進められている OSS として TFDV が公開されており、表形式のデータについて可視化や 異常値の検出が実装されている 非構造化データについての Data Validation はあまり整備されていないた め、自分たちで検討が必要
  3. TOC 背景 <- Data Validation で取り組む問題 TFDV ライブデモ 非構造化データを対象とした Data

    Validation
  4. 背景 機械学習はとにかく複雑 TFX TensorFlow Data Validation Case Study: Google Play

    Store
  5. 機械学習はとにかく複雑 Machine Learning: The High Interest Credit Card of Technical

    Debt – Google Research
  6. TFX (TensorFlow Extended) TFX: A TensorFlow-Based Production-Scale Machine Learning Platform

    – Google Research
  7. TensorFlow Data Validation

  8. Case study: Google Play Store 学習環境だと値が入るもの の、本番環境だと値が入ら ない特徴量が存在 モデルのパフォーマンスに 影響

    該当の特徴量を取り除いた ところ、2%の改善
  9. TOC 背景 Data Validation で取り組む問題 <- TFDV ライブデモ 非構造化データを対象とした Data

    Validation
  10. Data Validation で取り組む問題 論文 Data Validation For Machine Learning を例に紹介

    導入 システム概要 単一バッチ内でのデータ検証 複数バッチ間でのデータ検証 モデルの単体テスト Google での実例
  11. 導入 (1/3) 次のような機械学習パイプラインを考える 毎日データを取得してモデルを訓練しサーバーにデプロイする モデルの入力はラベルデータと結合されて次の日の入力になる ある日、エンジニアがサーバーサイドのリファクタリングを行った際 に、不幸にもバグを混入させてしまった 結果、特定のデータ (OS のバージョンなど)

    では特徴量がエラーを意味 する -1 になった そのバグはもともと整数値を取るべき箇所で発生したとしよう 何が生じるだろうか?
  12. 導入 (2/3) 機械学習モデルはおそらく動き続ける、だが精度は低くなる -1 は妥当な値であるためエラーは検出されない 次の日のモデルは誤ったデータで訓練される その特徴量がもともとモデルにとって有用であった場合、-1 が書き込ま れる特定のデータに対して推論結果が悪化する 事象はこの問題が発見され修復されるまで収束しない

  13. 導入 (3/3) このような場合、典型的には on-call エンジニアが問題を分析し、コー ドからバグを取り除き、学習環境にも推論環境にもコードをデプロイす ることで対応される ということは、アラートは高い確度でなければならないし、on-call エン ジニアが問題の真因に手早くたどり着けるような情報を提供するもので

    なければならない また、on-call エンジニアは確度が低かったり行動に繋げられないアラー トを無視しがちになる、というのも重要なエラーに気が付きにくくなっ てしまうから
  14. システム概要

  15. 単一バッチ内でのデータ 検証 (1/2) 入力データのスキーマを用 意し、それに従っているか どうかを検証 一方、特徴量は数千にのぼ る場合もある また、特徴量に関する知識 がエンジニアの間でどこか

    に消えることがある
  16. 単一バッチ内でのデータ 検証 (2/2) データからスキーマを推論 できるようにした アラートが頻発するのを防 止するため、スキーマに従 わないデータを許容できる ようにした スキーマはコードと同時に

    バージョン管理されるよう になった
  17. 複数バッチ間でのデータ検証 Training/Serving Skew (訓練時と推論時のデータの偏り) は本番環境でよ く起こる 次の3タイプに分類できた 1. Feature Skew

    2. Distribution Skew 3. Scoring/Serving Skew
  18. 1. Feature Skew 推論環境では実装した処理が訓練用データの集計パイプラインに未実装 タイムトラベル: 推論環境ではリアルタイムに集計処理が行われるもの の、学習環境では時間がたってから集計処理が行われるために値がずれ る (e.g. 動画の再生回数や総クリック数)

    2. Distribution Skew 適切ではないサンプリングはこの現象を引き起こす
  19. 3. Scoring/Serving Skew 動画のリコメンドを行うため、ユーザーが動画を再生するかどうか予測 するモデルを作成する リコメンドした結果画面に表示できる動画の数よりも、リコメンドの対 象になる動画のほうが遥かに大きいものとする (e.g. Youtube) リコメンド結果に現れない大半の動画は、ユーザーの目に触れる機会が

    ないために再生されない 結果「リコメンドされなかったためにリコメンドされない」という負の フィードバックが生じる
  20. Quantifying Distribution Distance (1/2) 訓練時と推論時の分布が異なっていることを検出するためには、2つの 分布の異なり方を距離として定量的に示す必要がある KL Divergence やコサイン類似度はプロダクトチームが理解しにくく、 偽陽性を防ぐためのしきい値の調整ができなかった

    統計的な手法、たとえば 検定はデータ数が多くなってしまうと機能 しなかった サンプル数が多くなりすぎると、小さな差しかなかったとしても検 定に書けると差が有意になる 解釈のしやすさと原因の切り分けやすさから 距離を採用した χ2 L ​ ∞
  21. Quantifying Distribution Distance (2/2) 検定について検証 から1億件をサンプリ ング から1億件をサンプリ ングし、1万件 (0.01%)

    を で置換 大した差ではないのに、検定を 10回行うと8回が有意 χ2 N(0, 1) N(0, 1) N(0, 2)
  22. モデルの単体テスト 機械学習モデルが内部で入力値に対して対数変換を行うとする int float といった型だけでは不十分 型として int が指定されていても -1 が入力されると落ちる

    このようなケースに対応するため、スキーマには値域や欠損の有無を記 述できるようにした また、スキーマに対応する入力値を生成し、モデルに入力するような fuzz testing (ファジング) を行うようにした 振る舞いが決定論的になるよう、生成時にはシードを指定できるように した
  23. Google での実例 (1/2) Data Validation を用いてい る 700 以上の機械学習パイ プラインを対象に調査

    パイプラインをデプロイし てからスキーマに変更を加 えた回数を調査 概して5回未満は変更が発生 していた
  24. Google での実例 (2/2) より詳細な使われ方を調査 Used: Validation が実装された Fired: アラートがあがった Fixed

    given Fired: アラートが上 がったあと修正された 修正されなかった理由は次 1. どうしようもなかった (データを 再生産できない) 2. アラート担当者に無視された
  25. Google での実例 (1/3) Google Play Store (再掲) 学習環境だと値が入るもの の、本番環境だと値が入ら ない特徴量が存在

    モデルのパフォーマンスに 影響 該当の特徴量を取り除いた ところ、2%の改善
  26. Google での実例 (2/3) 動画のレコメンドの例 機械学習基盤を旧環境から新環境へ移行する際に、新環境ではデータが 欠損していることに気がついた データをパースする処理において、期待と異なるフォーマットのデータ があった場合、それらを単に捨てていたのが原因 典型的にはこのようなケースでは問題の特定が困難 (仕様外のシステム

    の振る舞いにモデルが依存していたケース) このケースでは原因の特定と修正に2日しかかからなかった (類似のケー スでは数ヶ月かかっていた)
  27. Google での実例 (3/3) Data Validation だけ使っていたチームの例 機械学習パイプラインはすでに作っていた システムによる Data Validation

    が行えていなかったので、ここまでに見 てきた問題に直面していた パイプラインに入力するデータを検証するといった使い方をしていた (ので、あとからでも追加できる)
  28. TOC 背景 Data Validation で取り組む問題 TFDV ライブデモ <- 非構造化データを対象とした Data

    Validation
  29. TFDV ライブデモ TensorFlow Data Validation のサンプルを実行しながら解説

  30. Facets の紹介 PAIR (People + AI Research) が作成している データ可視化用ツール 特徴量を可視化する

    Facets Overview 探索的データ分析を行う Facets Dive ライブデモ https://pair- code.github.io/facets/
  31. TFX のコンポーネント StatisticsGen SchemaGen Example Validator

  32. TOC 背景 Data Validation で取り組む問題 TFDV ライブデモ 非構造化データを対象とした Data Validation

    <-
  33. 非構造化データを対象とした Data Validation まだまだフロンティア TFX Pipelines TFDV Discussion

  34. TFX Pipelines 画像分類を行うサンプルは 一応ある https://github.com/tensorfl ow/tfx/tree/master/tfx/exam ples/cifar10 画素を特徴量の1つとして扱 うだけのサンプル

  35. TFDV 実装は一応ある 画像 https://github.com/tensorflow/data- validation/blob/master/tensorflow_data_validation/statistics/generator s/image_stats_generator.py 自然言語 https://github.com/tensorflow/data- validation/blob/master/tensorflow_data_validation/statistics/generator s/natural_language_stats_generator.py

    使い方はさっぱりわからない
  36. 画像の Validation で使われる特徴 (推定) 画像の縦(横)の長さの最大値 画素値のヒストグラム フォーマット (PNG, JPEG) ごとの画像の割合

  37. 自然言語の Validation で使われる特徴 (推定) トークンの種類の数 トークンの総出現回数、トークンごとの出現回数 トークンのうち辞書にあったトークンの数・四分位数 例数 文の長さの最小値・最大値・四分位数 トークンごとに、そのトークンが使われた文の数

    トークンの文の中での出現位置のカウント
  38. Discussion 画像についてはまだまだ議 論が必要 https://discuss.tensorflow.o rg/t/tfx-for-vision/1282/16

  39. Recap TensorFlow Data Validation は TFX の一部で、データの検証を行うコン ポーネントで用いられるライブラリ Google 社内では

    Data Validation に関してスキーマをもとにした実践的 な取り組みが進められている OSS として TFDV が公開されており、表形式のデータについて可視化や 異常値の検出が実装されている 非構造化データについての Data Validation はあまり整備されていないた め、自分たちで検討が必要