How to evaluate the effect of deep learning model
1. 背景
機械学習のトレーニングプロセスにおけるデバッグ、可視化、トレーニング効果の評価は、業界において常に困難な課題でした。データが少なく、LR、GBDT、SVM などのモデルがシンプルでハイパーパラメータも少ない場合、モデルの調整可能性と解釈可能性がある程度保証されるため、シンプルなトレーニングを行い、再現率、適合率、AUC などの指標を観察して対応できました。
ディープラーニングの時代では、モデルの複雑さは想像を絶するものになっています。層ごとにネストされたネットワーク構造、オプティマイザの選択、多数のハイパーパラメータ、そして層間で受け継がれる特徴が相まって、複雑な深層モデルを構築しています。効果が思わしくない場合、その原因は多岐にわたります。これらの問題を特定して解決するため、アルゴリズム研究開発の担当者は膨大な労力を費やして繰り返し試みる必要がありますが、正確な答えにたどり着けない可能性も高いでしょう。端的に言えば、ネットワークモデルはブラックボックスに近い存在です。
2. DeepInsight
研究を通じて、トレーニングおよび評価プロセスにおける多数の中間指標がモデルの効果と相関関係を持つことを発見しました。テンソル、勾配、重み、更新量を体系的に分析してモデル化することで、アルゴリズムのチューニングや問題の特定を支援する意思決定サポートの役割を果たせます。さらに、AUC の計算手法を改善し、ROC、PR、推定分布などの評価指標をより多く分析することで、モデルの効果をより包括的に評価できるようになります。
2 か月以上の開発期間を経て、DeepInsight プラットフォームをリリースしました。このプラットフォームは、モデルのデバッグや問題の特定といった一連の課題の解決に特化しています。モデルを投入してトレーニングを開始すると、ユーザーは DeepInsight プラットフォームを通じて、トレーニングの中間指標から予測指標、パフォーマンスデータまでをワンストップで確認・分析できます。トレーニングに明らかな問題がある場合、プラットフォームが自動的にハイライトして通知します。将来的には、C++ 向け GDB のように、一部のサブネットワークの最適化アルゴリズムの変更や学習率のモメンタム調整などの適切なプロンプトを提供し、ユーザーがトレーニングの問題をより的確に発見・特定できるよう支援できるプラットフォームを目指しています。
2.1 目標
トレーニングデータの蓄積と永続化。ディープラーニングのデータは非常に貴重です。各トレーニングのネットワークトポロジー、パラメータ、トレーニングの中間プロセス、モデル評価指標を永続的に保存することで、後続の手動分析や二次モデル化を容易にします。
モデルトレーニングに関する知見を蓄積し、分析手法と最適化手法を提供して意思決定を支援するとともに、既知のさまざまな問題を回避します。
ビッグデータ分析とモデル化を活用して中間プロセス指標間の関連性を発見し、より良い意思決定を支援します。この目標を Model on Model と呼びます。すなわち、新しいモデルを用いて深層モデルをより深く分析・評価するということです。
ビッグデータ分析とモデル化の基盤の上に、既存モデルに対する深層強化学習 (DRL) を試み、ディープラーニングのデバッグ効率を向上させます。
2.2 アーキテクチャ
システムは主に 4 つの層、すなわち入力層、分析層、評価層、出力層に分類されます。
また、5 つの主要コンポーネントを含みます。TensorBoard+ 可視化分析、TensorViewer ログ表示と比較、TensorDealer 統合設定、TensorTracer データ抽出、TensorDissection 分析とチューニングです。
2.3 進捗
2.3.1 TensorBoard+、高性能な可視化コンポーネント
Google の TensorBoard (以下 TB) は TensorFlow (以下 TF) の可視化コンポーネントで、ディープラーニングのネットワーク構造と中間指標を確認できます。従来の TB はスタンドアロンのコマンドラインモードで動作するため、複数ユーザーが利用できませんでした。ユーザビリティが低く、ログパスを切り替えるたびにプロセスを終了する必要がありました。同時にパフォーマンスも低く、工業レベルのモデルデータを読み込むとすぐにフリーズします。指標の階層化が不十分で、数千の指標がすべて一覧表示され、閲覧が困難でした。複雑な機能も乏しく、表示グラフの二次データ比較や X 軸の浮動小数点データ表示などがサポートされていませんでした。
そこで、TB のコアコードを再構築して GB レベルのログ読み込みとデータ階層化に対応し、サービス全体をマルチユーザ版に改造しました。Docker を使用してリソースを柔軟に管理し、自動回収を行っています。UI ではカスタム指標のハイライト、階層表示、データ比較、ログアップロードなどがサポートされており、具体的には以下の通りです。
TensorFlow のログパスをオンラインで切り替え可能
グラフデータのオンライン集約と比較をサポート
X 軸の浮動小数点値タイプ表示をサポート
グラフィックデータのサブディメンション表示をサポート
フロントエンドのリフレッシュタイミングを手動調整し、リアルタイムにデータを表示
2.3.2 統合設定ログ管理システム TensorViewer
TF タスクには効果的な管理機能がなく、ユーザーが必要に応じてデータを確認・分析したり、履歴データを振り返ったりできませんでした。TensorFlow と DeepInsight を接続してすべてのタスクの情報を収集し、ユーザーは各トレーニングのリアルタイムデータとすべての履歴データを確認できるようになりました。マルチタスクの比較分析もサポートしています。同時に、ワンクリックで TensorBoard+ に遷移し、現在のログデータを直接可視化できます。
2.3.3 TensorFlow の可視化データ抽出の改善
すべての内部データを統一されたサマリ形式で抽出し、TensorBoard+ で処理できるデータ抽出手法を定義しました。PS アーキテクチャでは、Master が中間データを集中処理できないため、テンソルや勾配などの指標のデータ抽出は非常にリソースを消費します。どのようにデータを抽出するかは深く研究する価値のある課題です。現在は Worker0 でデータを抽出しており、通常のモデルトレーニングの要件を満たしています。今後は Snapshot データ抽出スキームを検討し、大規模ネットワークでもより良い結果が得られるようにします。
現在、TensorFlow から抽出されたプロセス指標の初期分析を開始し、これらの大規模指標に対する教師ありおよび教師なしモデル化の検討を進めています。
2.3.4 モデル評価指標の改善
TensorFlow の組み込み AUC 計算方式はバケット数が少なく、計算精度にバグがあり、大量のデータを処理する際に性能不足でした。さらに、AUC のみを計算でき、ROC や PR などの曲線を描画できませんでした。
計算方式を改良してバケット数を増やし、計算効率を向上させました。同時に、より多くの新しい指標を描画できるようになりました。現在描画されている指標には、AUC、ROC、PR、変動率、正のサンプルと負のサンプルのバケット分布が含まれます。正のサンプルと負のサンプルの分布を観察した結果、TensorFlow の非同期計算の欠陥により一部のバケットのサンプル数に誤差が生じ、AUC に極めて小さな変動を引き起こすことを発見しました。このバグはまだ修正されていません。すべての推定指標は DeepInsight プラットフォームにシームレスに統合されています。
2.3.5 モデルトレーニング中間指標の研究
大規模な埋め込みサブネットワークのトレーニング指標を深く観察・モデル化した結果、重み (バイアス) の値の変化から、該当するネットワーク構造が効果的にトレーニングされているかを判断できることを発見しました。重み (バイアス) の値がわずかにしか変化しない領域はトレーニングの「デッドスポット」、すなわちトレーニングされていないネットワークの部分です。重み (バイアス) の勾配を観察することで、勾配消失や勾配爆発などの問題の診断、ネットワークのその部分のトレーニングの難易度の分析と理解、オプティマイザと学習率の設定を的を絞って調整することに役立ちます。ネットワーク全体の各部の活性化と勾配を包括的に調べることで、ネットワーク全体のマルチチャネル情報の相互結合と協調伝達の複雑なメカニズムを理解し、モデル構造をより効果的に設計および最適化できます。
中間指標の研究結果は蓄積されて DeepInsight に反映されます。トレーニング指標が生成されると、ユーザーにプロンプトが提供され、意思決定を支援します。
機械学習のトレーニングプロセスにおけるデバッグ、可視化、トレーニング効果の評価は、業界において常に困難な課題でした。データが少なく、LR、GBDT、SVM などのモデルがシンプルでハイパーパラメータも少ない場合、モデルの調整可能性と解釈可能性がある程度保証されるため、シンプルなトレーニングを行い、再現率、適合率、AUC などの指標を観察して対応できました。
ディープラーニングの時代では、モデルの複雑さは想像を絶するものになっています。層ごとにネストされたネットワーク構造、オプティマイザの選択、多数のハイパーパラメータ、そして層間で受け継がれる特徴が相まって、複雑な深層モデルを構築しています。効果が思わしくない場合、その原因は多岐にわたります。これらの問題を特定して解決するため、アルゴリズム研究開発の担当者は膨大な労力を費やして繰り返し試みる必要がありますが、正確な答えにたどり着けない可能性も高いでしょう。端的に言えば、ネットワークモデルはブラックボックスに近い存在です。
2. DeepInsight
研究を通じて、トレーニングおよび評価プロセスにおける多数の中間指標がモデルの効果と相関関係を持つことを発見しました。テンソル、勾配、重み、更新量を体系的に分析してモデル化することで、アルゴリズムのチューニングや問題の特定を支援する意思決定サポートの役割を果たせます。さらに、AUC の計算手法を改善し、ROC、PR、推定分布などの評価指標をより多く分析することで、モデルの効果をより包括的に評価できるようになります。
2 か月以上の開発期間を経て、DeepInsight プラットフォームをリリースしました。このプラットフォームは、モデルのデバッグや問題の特定といった一連の課題の解決に特化しています。モデルを投入してトレーニングを開始すると、ユーザーは DeepInsight プラットフォームを通じて、トレーニングの中間指標から予測指標、パフォーマンスデータまでをワンストップで確認・分析できます。トレーニングに明らかな問題がある場合、プラットフォームが自動的にハイライトして通知します。将来的には、C++ 向け GDB のように、一部のサブネットワークの最適化アルゴリズムの変更や学習率のモメンタム調整などの適切なプロンプトを提供し、ユーザーがトレーニングの問題をより的確に発見・特定できるよう支援できるプラットフォームを目指しています。
2.1 目標
トレーニングデータの蓄積と永続化。ディープラーニングのデータは非常に貴重です。各トレーニングのネットワークトポロジー、パラメータ、トレーニングの中間プロセス、モデル評価指標を永続的に保存することで、後続の手動分析や二次モデル化を容易にします。
モデルトレーニングに関する知見を蓄積し、分析手法と最適化手法を提供して意思決定を支援するとともに、既知のさまざまな問題を回避します。
ビッグデータ分析とモデル化を活用して中間プロセス指標間の関連性を発見し、より良い意思決定を支援します。この目標を Model on Model と呼びます。すなわち、新しいモデルを用いて深層モデルをより深く分析・評価するということです。
ビッグデータ分析とモデル化の基盤の上に、既存モデルに対する深層強化学習 (DRL) を試み、ディープラーニングのデバッグ効率を向上させます。
2.2 アーキテクチャ
システムは主に 4 つの層、すなわち入力層、分析層、評価層、出力層に分類されます。
また、5 つの主要コンポーネントを含みます。TensorBoard+ 可視化分析、TensorViewer ログ表示と比較、TensorDealer 統合設定、TensorTracer データ抽出、TensorDissection 分析とチューニングです。
2.3 進捗
2.3.1 TensorBoard+、高性能な可視化コンポーネント
Google の TensorBoard (以下 TB) は TensorFlow (以下 TF) の可視化コンポーネントで、ディープラーニングのネットワーク構造と中間指標を確認できます。従来の TB はスタンドアロンのコマンドラインモードで動作するため、複数ユーザーが利用できませんでした。ユーザビリティが低く、ログパスを切り替えるたびにプロセスを終了する必要がありました。同時にパフォーマンスも低く、工業レベルのモデルデータを読み込むとすぐにフリーズします。指標の階層化が不十分で、数千の指標がすべて一覧表示され、閲覧が困難でした。複雑な機能も乏しく、表示グラフの二次データ比較や X 軸の浮動小数点データ表示などがサポートされていませんでした。
そこで、TB のコアコードを再構築して GB レベルのログ読み込みとデータ階層化に対応し、サービス全体をマルチユーザ版に改造しました。Docker を使用してリソースを柔軟に管理し、自動回収を行っています。UI ではカスタム指標のハイライト、階層表示、データ比較、ログアップロードなどがサポートされており、具体的には以下の通りです。
TensorFlow のログパスをオンラインで切り替え可能
グラフデータのオンライン集約と比較をサポート
X 軸の浮動小数点値タイプ表示をサポート
グラフィックデータのサブディメンション表示をサポート
フロントエンドのリフレッシュタイミングを手動調整し、リアルタイムにデータを表示
2.3.2 統合設定ログ管理システム TensorViewer
TF タスクには効果的な管理機能がなく、ユーザーが必要に応じてデータを確認・分析したり、履歴データを振り返ったりできませんでした。TensorFlow と DeepInsight を接続してすべてのタスクの情報を収集し、ユーザーは各トレーニングのリアルタイムデータとすべての履歴データを確認できるようになりました。マルチタスクの比較分析もサポートしています。同時に、ワンクリックで TensorBoard+ に遷移し、現在のログデータを直接可視化できます。
2.3.3 TensorFlow の可視化データ抽出の改善
すべての内部データを統一されたサマリ形式で抽出し、TensorBoard+ で処理できるデータ抽出手法を定義しました。PS アーキテクチャでは、Master が中間データを集中処理できないため、テンソルや勾配などの指標のデータ抽出は非常にリソースを消費します。どのようにデータを抽出するかは深く研究する価値のある課題です。現在は Worker0 でデータを抽出しており、通常のモデルトレーニングの要件を満たしています。今後は Snapshot データ抽出スキームを検討し、大規模ネットワークでもより良い結果が得られるようにします。
現在、TensorFlow から抽出されたプロセス指標の初期分析を開始し、これらの大規模指標に対する教師ありおよび教師なしモデル化の検討を進めています。
2.3.4 モデル評価指標の改善
TensorFlow の組み込み AUC 計算方式はバケット数が少なく、計算精度にバグがあり、大量のデータを処理する際に性能不足でした。さらに、AUC のみを計算でき、ROC や PR などの曲線を描画できませんでした。
計算方式を改良してバケット数を増やし、計算効率を向上させました。同時に、より多くの新しい指標を描画できるようになりました。現在描画されている指標には、AUC、ROC、PR、変動率、正のサンプルと負のサンプルのバケット分布が含まれます。正のサンプルと負のサンプルの分布を観察した結果、TensorFlow の非同期計算の欠陥により一部のバケットのサンプル数に誤差が生じ、AUC に極めて小さな変動を引き起こすことを発見しました。このバグはまだ修正されていません。すべての推定指標は DeepInsight プラットフォームにシームレスに統合されています。
2.3.5 モデルトレーニング中間指標の研究
大規模な埋め込みサブネットワークのトレーニング指標を深く観察・モデル化した結果、重み (バイアス) の値の変化から、該当するネットワーク構造が効果的にトレーニングされているかを判断できることを発見しました。重み (バイアス) の値がわずかにしか変化しない領域はトレーニングの「デッドスポット」、すなわちトレーニングされていないネットワークの部分です。重み (バイアス) の勾配を観察することで、勾配消失や勾配爆発などの問題の診断、ネットワークのその部分のトレーニングの難易度の分析と理解、オプティマイザと学習率の設定を的を絞って調整することに役立ちます。ネットワーク全体の各部の活性化と勾配を包括的に調べることで、ネットワーク全体のマルチチャネル情報の相互結合と協調伝達の複雑なメカニズムを理解し、モデル構造をより効果的に設計および最適化できます。
中間指標の研究結果は蓄積されて DeepInsight に反映されます。トレーニング指標が生成されると、ユーザーにプロンプトが提供され、意思決定を支援します。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
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
