Slide 1

Slide 1 text

Dive into TensorFlow Data Validation Asei Sugiyama

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

TensorFlow Data Validation

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

システム概要

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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