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

Dive into TensorFlow Data Validation

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

Asei Sugiyama

November 22, 2021
Tweet

More Decks by Asei Sugiyama

Other Decks in Technology

Transcript

  1. Dive into TensorFlow Data Validation
    Asei Sugiyama

    View Slide

  2. TL;DR
    TensorFlow Data Validation は TFX の一部で、データの検証を行うコン
    ポーネントで用いられるライブラリ
    Google 社内では Data Validation に関してスキーマをもとにした実践的
    な取り組みが進められている
    OSS として TFDV が公開されており、表形式のデータについて可視化や
    異常値の検出が実装されている
    非構造化データについての Data Validation はあまり整備されていないた
    め、自分たちで検討が必要

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. TensorFlow Data Validation

    View Slide

  8. Case study: Google
    Play Store
    学習環境だと値が入るもの
    の、本番環境だと値が入ら
    ない特徴量が存在
    モデルのパフォーマンスに
    影響
    該当の特徴量を取り除いた
    ところ、2%の改善

    View Slide

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

    View Slide

  10. Data Validation で取り組む問題
    論文 Data Validation For Machine Learning を例に紹介
    導入
    システム概要
    単一バッチ内でのデータ検証
    複数バッチ間でのデータ検証
    モデルの単体テスト
    Google での実例

    View Slide

  11. 導入 (1/3)
    次のような機械学習パイプラインを考える
    毎日データを取得してモデルを訓練しサーバーにデプロイする
    モデルの入力はラベルデータと結合されて次の日の入力になる
    ある日、エンジニアがサーバーサイドのリファクタリングを行った際
    に、不幸にもバグを混入させてしまった
    結果、特定のデータ (OS のバージョンなど) では特徴量がエラーを意味
    する -1 になった
    そのバグはもともと整数値を取るべき箇所で発生したとしよう
    何が生じるだろうか?

    View Slide

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

    View Slide

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

    View Slide

  14. システム概要

    View Slide

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

    View Slide

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

    View Slide

  17. 複数バッチ間でのデータ検証
    Training/Serving Skew (訓練時と推論時のデータの偏り) は本番環境でよ
    く起こる
    次の3タイプに分類できた
    1. Feature Skew
    2. Distribution Skew
    3. Scoring/Serving Skew

    View Slide

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

    View Slide

  19. 3. Scoring/Serving Skew
    動画のリコメンドを行うため、ユーザーが動画を再生するかどうか予測
    するモデルを作成する
    リコメンドした結果画面に表示できる動画の数よりも、リコメンドの対
    象になる動画のほうが遥かに大きいものとする (e.g. Youtube)
    リコメンド結果に現れない大半の動画は、ユーザーの目に触れる機会が
    ないために再生されない
    結果「リコメンドされなかったためにリコメンドされない」という負の
    フィードバックが生じる

    View Slide

  20. Quantifying Distribution Distance (1/2)
    訓練時と推論時の分布が異なっていることを検出するためには、2つの
    分布の異なり方を距離として定量的に示す必要がある
    KL Divergence やコサイン類似度はプロダクトチームが理解しにくく、
    偽陽性を防ぐためのしきい値の調整ができなかった
    統計的な手法、たとえば 検定はデータ数が多くなってしまうと機能
    しなかった
    サンプル数が多くなりすぎると、小さな差しかなかったとしても検
    定に書けると差が有意になる
    解釈のしやすさと原因の切り分けやすさから 距離を採用した
    χ2
    L


    View Slide

  21. Quantifying Distribution
    Distance (2/2)
    検定について検証
    から1億件をサンプリ
    ング
    から1億件をサンプリ
    ングし、1万件 (0.01%) を
    で置換
    大した差ではないのに、検定を
    10回行うと8回が有意
    χ2
    N(0, 1)
    N(0, 1)
    N(0, 2)

    View Slide

  22. モデルの単体テスト
    機械学習モデルが内部で入力値に対して対数変換を行うとする
    int float
    といった型だけでは不十分
    型として int
    が指定されていても -1 が入力されると落ちる
    このようなケースに対応するため、スキーマには値域や欠損の有無を記
    述できるようにした
    また、スキーマに対応する入力値を生成し、モデルに入力するような
    fuzz testing (ファジング) を行うようにした
    振る舞いが決定論的になるよう、生成時にはシードを指定できるように
    した

    View Slide

  23. Google での実例 (1/2)
    Data Validation を用いてい
    る 700 以上の機械学習パイ
    プラインを対象に調査
    パイプラインをデプロイし
    てからスキーマに変更を加
    えた回数を調査
    概して5回未満は変更が発生
    していた

    View Slide

  24. Google での実例 (2/2)
    より詳細な使われ方を調査
    Used: Validation が実装された
    Fired: アラートがあがった
    Fixed given Fired: アラートが上
    がったあと修正された
    修正されなかった理由は次
    1. どうしようもなかった (データを
    再生産できない)
    2. アラート担当者に無視された

    View Slide

  25. Google での実例 (1/3)
    Google Play Store (再掲)
    学習環境だと値が入るもの
    の、本番環境だと値が入ら
    ない特徴量が存在
    モデルのパフォーマンスに
    影響
    該当の特徴量を取り除いた
    ところ、2%の改善

    View Slide

  26. Google での実例 (2/3)
    動画のレコメンドの例
    機械学習基盤を旧環境から新環境へ移行する際に、新環境ではデータが
    欠損していることに気がついた
    データをパースする処理において、期待と異なるフォーマットのデータ
    があった場合、それらを単に捨てていたのが原因
    典型的にはこのようなケースでは問題の特定が困難 (仕様外のシステム
    の振る舞いにモデルが依存していたケース)
    このケースでは原因の特定と修正に2日しかかからなかった (類似のケー
    スでは数ヶ月かかっていた)

    View Slide

  27. Google での実例 (3/3)
    Data Validation だけ使っていたチームの例
    機械学習パイプラインはすでに作っていた
    システムによる Data Validation が行えていなかったので、ここまでに見
    てきた問題に直面していた
    パイプラインに入力するデータを検証するといった使い方をしていた
    (ので、あとからでも追加できる)

    View Slide

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

    View Slide

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

    View Slide

  30. Facets の紹介
    PAIR (People + AI
    Research) が作成している
    データ可視化用ツール
    特徴量を可視化する Facets
    Overview
    探索的データ分析を行う
    Facets Dive
    ライブデモ https://pair-
    code.github.io/facets/

    View Slide

  31. TFX のコンポーネント
    StatisticsGen
    SchemaGen
    Example Validator

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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
    使い方はさっぱりわからない

    View Slide

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

    View Slide

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

    View Slide

  38. Discussion
    画像についてはまだまだ議
    論が必要
    https://discuss.tensorflow.o
    rg/t/tfx-for-vision/1282/16

    View Slide

  39. Recap
    TensorFlow Data Validation は TFX の一部で、データの検証を行うコン
    ポーネントで用いられるライブラリ
    Google 社内では Data Validation に関してスキーマをもとにした実践的
    な取り組みが進められている
    OSS として TFDV が公開されており、表形式のデータについて可視化や
    異常値の検出が実装されている
    非構造化データについての Data Validation はあまり整備されていないた
    め、自分たちで検討が必要

    View Slide