How to improve the interpretability of deep learning models

1. 背景:

画像認識や NLP の分野では可視化と解釈可能性に関して一定の進展がありましたが、コンピューティング広告の分野ではまだ空白が多く、参照できるプラットフォームやツールはほとんどありません。可視化の前提は、まずトレーニングモデルから関連データを抽出し、可視化による分析と評価を行い、最終的にニューラルネットワークをブラックボックスからホワイトボックスへと転換させ、モデルの解釈可能性をある程度向上させることにあります。しかし、既存のディープラーニングフレームワークではデータ公開機能が不十分であり、日常のトレーニングニーズを完全には満たせていません。特に難しい問題ほど、特定や分析が困難であり、デバッグも不可能に近い状況です。

同時に、ネットワークの複雑さが急速に増す中、学習不足/過学習/精度 (PR)/再現率といった従来の機械学習評価指標では、ディープラーニングモデルを包括的に評価できなくなっています。そのため、ディープラーニングの品質体系を定義する方法を探求し、モデル自体に対する理解と評価を深めることが求められています。すなわち、特定の条件下でディープラーニングの解釈可能性と信頼性を向上させることで、ニューラルネットワークモデルに対する制御能力を強化することです。

これに基づき、トレーニングタスクのライフサイクル管理を改善すると同時に、プラットフォームはより包括的なデータ抽出方法 (本エディションで新たに追加されたオンライン動的データ更新機能など) の提供に取り組み、ディープラーニング特有の多次元可視化などを中核機能として開発しています。

2. DeepInsight システムアーキテクチャ:

現在までのところ、データサイエンスはインサイトの取得、機械学習は予測、AI は行動をそれぞれ担当し、これら 3 つの分野間には多くの重複があります。データサイエンスは他の 2 つの分野と異なり、その目的がインサイトの取得と理解という人間に密接に関連するものであるため、プラットフォーム名も DeepInsight と名付けられました。

DeepInsight は、分散型マイクロサービスクラスターのデプロイに基づくディープラーニング可視化評価プラットフォームです。フロントエンド Web プラットフォーム、バックエンド マイクロサービス、ディープラーニングコンポーネントという 3 つのサブシステムで構成されています。各マイクロサービスのインスタンスは相互に分離されており、影響を与えません。現在、TensorflowRS およびオリジナル TensorFlow トレーニングタスクのライフサイクル管理をサポートしています。データ公開と可視化を通じて、モデルのデバッグや問題の所在分析といった一連の課題を解決し、ニューラルネットワークの解釈可能性を向上させます。トレーニングタスクをライフサイクル管理方式で実行することで、ワンストップの可視化評価サービスを提供します。プラットフォームがビジネスに力を与える一方で、ビジネス側からもポストプロセスデータがプラットフォームにフィードバックされ、DeepInsight をデータ中核とした AI 可視化エコシステムを構築していきます。

3. データ抽出に基づく多次元可視化分析:

現在、ディープラーニングコンポーネント (TF-Tracer/TF-Profiler など) は主にデータ抽出、リアルタイムモニタリング、出力制御などを担当し、モデルトレーニングプロセスで出力されるデータは主に未処理の統計データ (Raw Data) です。バックエンドのマイクロサービス (Tensorboard+/Notebook+ など) とフロントエンド Web プラットフォーム (高次元可視化) は、関連データの可視化分析と評価を担当し、オンラインおよびオフラインのインタラクティブな側面をサポートします。モデルトレーニングタスクのライフサイクル管理が全体を貫くことで、多次元可視化分析の生態サイクルを形成しています。

3.1 ディープラーニングコンポーネント:

元のディープラーニングフレームワークが提供する機能には制限があり、日常のトレーニングにおけるデバッグや分析のニーズを完全には満たせません。DeepInsight のディープラーニングコンポーネントは TensorFlow フレームワークに透過的に接続され、ローカルトレーニングと分散トレーニングの両方をサポートし、サードパーティライブラリとしてインストールできます。

1) TensorFlow API (tf.train.SessionRunHook) に基づくプラグアンドプレイ型のコンポーネントで、ユーザーは追加のコードを開発する必要がなく、設定ファイルに対応する設定情報を追加するだけで利用できます。

2) 設定情報はコンポーネントスイッチとコンポーネントパラメータ設定情報の 2 部分から構成されます:

対応するコンポーネントスイッチをオンにしても、元のトレーニングタスクのパフォーマンスに大きな影響を与えず、オンライントレーニングの効率を確保します。

対応するコンポーネントスイッチをオフにすれば、元のトレーニングタスクに対する機能的または性能上の影響はありません。

3.1.1 TF-Tracer: 計算グラフに基づく包括的なデータ公開:

TF-Tracer データ公開コンポーネントは TensorFlow の計算グラフ (tf.Graph) に基づいて開発されており、計算グラフ内のすべての変数 (tf.Variable) を完全に公開できます。グラフコレクション (tf.GraphKeys) に基づき、正規表現によるマッチングフィルタリングを行って対応する変数データセットを公開します。また、変数リストを直接指定してデータ公開することも可能で、NumPy/Bin の 2 種類のデータ形式での出力をサポートしています。

計算グラフ外の変数についても、再充填により公式プリセットのグラフコレクションまたはカスタムグラフコレクションに追加できます。

トレーニング中に一定の値を保持する定数や変数については、トレーニング開始時に [AT BEGIN] の形式で一度だけ公開することがサポートされており、パフォーマンスの向上とストレージ容量の節約を実現します。

出力変数のストレージ容量フィルタリングを提供し、デフォルト値がプリセットされています。ユーザーはアプリケーションシナリオに応じて設定をカスタマイズでき、[AT BEGIN] の方法では numpy.ndarray.shape の変数サイズ制限を個別に設定できます。

分散マルチセッション出力に対応し、chief_only 設定オプションを提供し、worker0 のデータファイルのみを出力するかどうかを指定できます。

3 種類のデータサンプリングモードをサポートしています:

1) every_steps: ステップ数に基づくサンプリング

2) every_secs: 時間に基づくサンプリング

3) step_range: ステップ範囲に基づくサンプリング

4 種類の出力モードをサポートしています:

1) HDFS: 変数を最小単位としてログファイルを生成し、各ワーカーに対応するフォルダを作成して、リアルタイムで HDFS ファイルシステムにデータをエクスポートします。Text/Bin の 2 形式をサポートし、現在はデフォルトで CSV 形式で保存され、ODPS からの直接読み取りをサポートしています。

2) ODPS: Swift Client を通じてリアルタイムで ODPS にデータをストリーミングし、関連する UDF を提供します。

3) Logview: フロントエンド Web プラットフォームにデータを公開し、データをリアルタイムで更新します。大量のログ情報には、サマリー (具体的な情報は上記の HDFS または ODPS の方法で照会可能) や詳細情報など、複数のログレベルをサポートしています。

4) Tensorboard+: TensorBoard+ Text プラグインにリアルタイムでデータをエクスポートします。大量のログ情報には、ログサマリーとファイル保存パスの 2 レベルをサポートしています。

多様な可視化表示方法:

1) フロントエンド Web プラットフォームは高次元データの可視化表示をサポートしています。複数のモード (エリアチャート/ヒストグラムなど)、異なる時間軸 (レイヤー入力/グローバルステップに基づく)、動的な回転やズームイン/ズームアウト表示をサポートし、データ (単一/バッチ) の ODPS へのアップロードもサポートしています。

2) オンラインワークベンチ (マイクロサービス Notebook+) を使用してデータをインタラクティブに可視化分析できます。HDFS データを読み取るための TF-Tracer Reader を提供し、PyODPS/scikit-learn/Matplotlib などのデータサイエンスソフトウェアがプリインストールされています。

現在、TF-Tracer はオンライントレーニングタスクに適用されており、オンライン学習などにおいてリアルタイムで ODPS にデータをエクスポートしています。パフォーマンステストの結果は以下のとおりです:

3.1.2 TF-Tracer の中核テクノロジー: オンライン動的更新データセットのリアルタイム公開:

既存のディープラーニングフレームワークのデータ抽出方法は一般的に静的かつ不完全であり、特に分散アーキテクチャにおいて顕著です。ユーザーはトレーニングタスク開始前に公開するデータセットを指定し、タスク実行後は変更できません。変更する場合はタスクを中断してコードや設定を再度変更する必要があります。オンライン学習など長期間実行されるモデルトレーニングでは、トレーニング中に異常が発見されても、既存の抽出データだけでは問題を特定するのが困難な場合があります。また、タスクを再起動して抽出データセットを更新しても、一部の問題は再現できません (ディープラーニングの統計的特性による)。

上記の問題に対応するため、TF-Tracer はトレーニングタスクを再起動せずに公開データセットのオンライン動的更新をサポートしています:

モデルトレーニング中に公開データセットをオンラインで修正し、変更されたデータセットをリアルタイムで公開できます。

当該モデルトレーニングの計算グラフ内の全変数リストを提供し、ユーザーはグラフコレクション (tf.GraphKey) に基づいて特定の変数リストを選択でき、複数データセット間の変数の重複排除をサポートしています。

chief_only が False の場合、つまり全ワーカーがデータをエクスポートする場合、特定のワーカーに対して動的更新をサポートし、指定されないワーカーは変更なくデータをエクスポートします。これは双方向比較に適しています。

オンライン修正とリアルタイム公開の例: layer2/biases:0 と layer2/weights/part_0:0 から layer1/weights/part_1:0 と layer4/weights/part_0:0 の変数への変更:

TF-Profiler: パフォーマンスチューニングコンポーネント
現在の TensorFlow のタイムラインファイルは単一の session.run のみを表示でき、複数の session.run を表示できません。オンライントレーニングは分散オペレーションに基づき、複数の session.run が生成されます (各ワーカーに少なくとも 1 つ)。分散モデルのトレーニングが遅い場合、全体的な位置特定と分析が必要であり、タイムラインは複数の session.run の集合を表示する必要がありますが、TensorFlow はこの要件を満たせません。

TF-Profiler は元のディープラーニングフレームワークのパフォーマンスサンプリングインターフェースに基づいて二次開発され、クロスセッションのパフォーマンスデータ自動生成、データレイヤー化、設定ファイルに基づく自動分析統計などの機能をサポートしています。また、Tensorboard+ Profile プラグインに対して二次開発を行い、オンラインでのパフォーマンスファイルの可視化表示を実現しています。(TF-Profiler の具体的な機能については、「DeepInsight ディープラーニング評価プラットフォーム -- パフォーマンスチューニングコンポーネント」を参照してください)

3.2 Docker バックエンド マイクロサービス:

現在、主に Notebook+ (インタラクティブ可視化分析) と Tensorboard+ (可視化ツール) の 2 種類の Docker マイクロサービスを含みます。フロントエンド Web プラットフォームがコンテナの管理を担当し、NGINX のリバースプロキシを通じて動的ポート転送機能を提供し、複数ユーザーの同時アクセスをサポートしています。クラスターは複数のサーバーにデプロイされています。同一サーバー上のコンテナは異なるポートを使用して異なるユーザーに対応し、高い並行性を維持しながらプロセス間の分離を実現し、システムの安定性を確保しています。

各マイクロサービスのインスタンスは自動リソースリリースをサポートしています。すなわち、対応する条件を満たすと自動的に終了し、フロントエンドプラットフォームのクラスター管理モジュールインターフェースを呼び出してコンテナの状態を更新します。同時に、ユーザーリソースに基づく認証サービスもサポートしています。現在のユーザーはプラットフォームが割り当てたリソースにのみアクセスできます。URL リソースについても、他のユーザーの URL にはアクセスできず (リダイレクトと再ログインが強制されます)、データの分離を実現しています。また、バックエンドはマイクロサービス方式を採用しているため、後続の新しいサービスタイプをいつでもオンラインで追加・拡張できます。

3.2.1 Notebook+: インタラクティブ可視化分析:

オープンソース版 Jupyter Notebook に基づく二次開発の Docker イメージサービスで、インタラクティブ可視化分析やオンラインローカルデバッグなどのサービスを提供します。

TF-Tracer Reader を提供し、オンラインでログファイルを読み取ってインタラクティブな可視化分析を行えます。HDFS/OSS/ODPS/Git からのデータ読み取りと書き込みをサポートしています。

TensorflowRS のオンラインローカルモデルトレーニングをサポートし、iPython と Terminal の 2 種類の操作モードを提供しています。

フロントエンド Web プラットフォームのラボとの双方向接続に対応しており、ローカルデバッグ完了後にスクリプトを直接フロントエンド Web プラットフォームのラボに送信して、後続の分散トレーニングを実行できます。オンライントレーニング中に異常が発生した場合は、オンラインワークベンチ (Notebook+) に移動してオンラインローカルデバッグを行え、効率を向上させリソースを節約できます。

Python2 と Python3 の動作環境をサポートしており、Python2 は TensorflowRS の動作環境、Python3 は最新のオリジナル TensorFlow の動作環境です。Keras などのディープラーニングフレームワークや関連データサイエンスソフトウェアがプリインストールされています。

3.2.2 Tensorboard+ 2.0: 高性能リアルタイムオンライン可視化:

Tensorboard+ のコアバージョンはオリジナルバージョンからアップグレードされ、1.2.0rc から 1.5.0a になりました。オリジナルバージョン 1.0 の機能であるオンライン動的データディレクトリの動的切り替えやレポート集計比較は維持されています (バージョン 1.0 の機能詳細については、「ディープラーニングモデルの効果をどのように評価するか -- Ali エンジニアの実践」を参照):

データ読み込みモジュールが最適化され、起動パフォーマンスが約 3〜5 倍向上しました。大容量データファイルのオンライン読み込みが遅い問題を解決し、ユーザー体験を向上させています。

同一パフォーマンスの前提で、スカラーグラフに読み込まれるデータポイント数を従来の 200 ポイントから 1,000 ポイントに増加させ、グラフの精度が向上し、可視化分析により適しています。

3.3 フロントエンド Web プラットフォーム:

Web UI および HTTP API を通じて外部サービスを提供します。フロントエンド UI は主にエンドユーザー向け、API インターフェースは主に PAI や XDL などのサードパーティプラットフォーム向けです。フロントエンドプラットフォームは主にクラスター管理、ダッシュボード、設定管理、権限管理、データ管理を含み、トレーニング関連のライフサイクル管理モジュール (可視化管理、ログ管理、ワークベンチ管理、ラボ管理、コンポーネント管理など) も含みます。

3.3.1 ライフサイクル管理: 可視化分析の生態的基盤:

TensorflowRS のイメージリリースからローカルモデル開発・デバッグ、オンライン分散実行までのトレーニングタスクの全プロセスをカバーする包括的なソリューションを提供し、モデルトレーニングのライフサイクル管理全体を網羅しています。一般的なユーザーシナリオ (ユーザーパス) は以下のとおりです:

ステップ 1. まず、ユーザーはオンラインワークベンチ (Notebook+) でオンラインローカル開発とデバッグを行い、iPython を使用してインタラクティブな可視化分析 (TF-Tracer が生成したログデータのオンライン分析など) を行えます。同時に、ラボからトレーニングタスクをインポートしてローカルデバッグを行うこともサポートしています。

ステップ 2. ローカルデバッグが完了したら、ユーザーは対応するファイルを選択してラボに保存し、分散トレーニングタスクを実行できます。同時に、TF-Tracer などのディープラーニングコンポーネントを適用して、ログデータを公開し、後続の分析または二次消費を行います。設定ファイルに基づく拡張サービス (Early Stopping/GAUC など) をサポートし、Metaq を通じて拡張サービスと通信し、関連する拡張結果をプラットフォーム上に表示します。ラボとローカルワークベンチはトレーニングタスクに対して双方向です。

ステップ 3. ローカルワークベンチまたはラボで、ユーザーはコンポーネント管理機能を通じて現在のモデルまたはコンポーネントをインポート・エクスポートし、自身または他のユーザーの後続利用に供することができます。

ステップ 4. タスク実行中または実行後、ユーザーはログ管理モジュール (Logview) を通じて現在のタスクログまたは実行結果を照会し、関連する付加サービスを利用できます。可視化管理モジュールを通じて、プラットフォームや Tensorboard+ で関連データの可視化結果を閲覧できます。

3.3.2 クラスター管理: 可視化サービスのオンライン拡張とワンクリックデプロイ:

クラスター管理モジュールは主に分散マイクロサービスのクラスター管理機能を提供します:

リアルタイムなオンラインリソース拡張、バックエンドコンテナのオーケストレーション (ジョブスケジューリングやリソース管理など)、ワンクリックでのマイクロサービスデプロイなどの機能をサポートしています。

オンラインでのコンテナ作成、削除、停止、再起動などのコンテナ管理操作をサポートし、データベースのコンテナ状態を同期的に更新し、バックエンドの Docker マイクロサービス向けに関連インターフェース (コンテナが自動でリソースを解放する際のステータス更新インターフェースなど) を提供します。

3.4 外部可視化サービス:

DeepInsight プラットフォームは現在、主に 2 つの方法でサードパーティプラットフォームにサービスを提供しています:

マイクロサービスのミラーリング: サードパーティプラットフォームの既存マイクロサービスのミラーリングまたはプラットフォームベースのミラーテンプレートを使用し、対応するミラーとサーバーリソースを提供します。プラットフォームはミラーリリース、クラスター管理、コンテナオーケストレーションなどのマイクロサービスを一括管理します。

基盤データサービス: サードパーティプラットフォームがプラットフォームの関連データサービスを利用し、HTTP API を通じて関連サービスを呼び出します。

現在、PAI プラットフォーム、XDL プラットフォーム、Lotus プラットフォームに対して関連サービスを提供しています:

PAI プラットフォームに対して Tensorboard+ 1.0 サービスを提供し、OSS によるログファイルの直接読み取りをサポートしています:

XDL プラットフォームに対して Tensorboard+ 2.0 サービスを提供し、MXNet のログ形式ファイルをサポートすると同時に、Notebook+ 1.0 サービスも提供しています:

Lotus などのプラットフォームに対して基盤データサービスを提供しています。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.