ディープニューラルネットワークの感度分析


14

既に回答された質問(1層フィードフォワードネットワークからの重みの重要性の抽出)に続いて、ニューラルネットワークの入力の関連性に関する推論を探しています。

対象の出力ノードからレイヤーを逆方向にたどって入力の重要度を再構築するのが難しいか時間がかかる深いネットを考えると、ニューラルネットワークの感度分析を実行する際に、基本的にわずかに変化する理論的な枠組みがあるのではないかと思いました入力し、対象のouptutノードがどのように変化するかを検討します。

ニューラルネットワークで何らかの感度分析を実行する標準的な方法はありますか?

もしあれば、Pythonコードを歓迎します。

回答:


12

提案する感度分析は、入力に対する出力の偏微分を調べることに対応します。出力ベクトル言うによって与えられる。Y = F X X Rと Dは入力ベクトルであり、fは関数ネットワークが実装されています。入力に対する出力のヤコビアンは次のとおりです。yRmy=f(x)xRdf

Jij(x)=xjfi(x)

fxΔjiΔJij(x)

Jij(x)ijxf一般的に、非線形であり、感度のこの概念は入力に依存します。一部の地域では大きく、他の地域ではゼロに近い場合があります。出力が入力にどれだけ強く依存しているかのある種の要約尺度が必要な場合は、複数の入力値にわたって集計する必要があります。たとえば、トレーニングセットのすべての入力で平均化されたヤコビアンの絶対値を取得できます(これは、入力の基礎となる分布に対する期待値のサロゲートとして機能します)。もちろん、この種の要約では情報が破棄されるため、状況によっては誤解を招く可能性があります。

backpropで使用するパラメーターに対して損失関数の勾配を導出する方法と同様に、チェーンルールを使用してヤコビアンの式を導出できます。Theano、TensorFlowなどのライブラリを使用して、自動微分を使用して計算することもできます。ネットワークで実装する関数が微分不能でない限り、有限差分を実行する理由はほとんどありません(つまり、実際に摂動をシミュレートし、出力の変化を測定します)その場合、ヤコビアンは存在しません)。

いくつかの注意点:入力の単位/スケールが互いに異なる場合、感度も異なる単位/スケールになり、直接比較することはできません。入力の標準化/スケーリングは、可能な解決策の1つです。また、このタイプの分析はモデル自体について教えてくれますが、必ずしもデータを生成した基礎となる分布ではないことを心に留めておくことが重要です。たとえば、2つの入力が相関している場合、モデルは2番目の入力ではなく最初の入力を使用する可能性があります。この場合、最初の入力の感度は高く、2番目の入力の感度は低いことがわかりますが、一般に出力を予測するには最初の入力が本質的に重要であると結論付けるべきではありません。

この記事は興味深いものです。


素晴らしい回答と素晴らしい記事!誰もがこの方法を実行するに関心がある場合、あなたはヤコビアンの計算の素敵な実装をここに見つけることができます:medium.com/unit8-machine-learning-publication/...
pcko1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.