モンテカルロドロップアウト
モンテカルロドロップアウト(モンテカルロドロップアウト)は、MCドロップアウトと呼ばれます。
ドロップアウトは、ベイズ理論を逸脱その方法は、ベイズドロップアウトは、近似ガウスプロセスとして解釈理解しました。
:フォギー、証明論我々は興味を持っている、かなり複雑に見えますが、紙を参照することができディープ学習におけるベイジアン近似:.表すモデルの不確実性ASドロップアウトし、紙の付録。
しかし、実際には、それが標準ドロップアウトや、ドロップ接続としてその変異体、であるかどうか、既存のニューラルネットワークモデルを修正するための簡単な、不要、ドロップアウトレベルを持つ唯一のニューラルネットワークモデル、上の彼らとMCのドロップアウトが可能です。
、MCドロップアウトドロップアウトフォームを訓練し、差異がない場合には、通常のモデルのトレーニング方法トレーニングに従うことができます。
試験中、前方の伝播は、ドロップアウトのニューラルネットワークは無効にすることはできません。これが唯一の違いであり、通常は使用しています。
ドロップアウトを祝福して出力する「異なるネットワーク構造」を得ることができるようにMC MCのドロップアウトは、我々はプロセスに同じ入力を広めるために必要とする前に、何回にも反映され、これらの統計情報の出力が平均と分散は、モデルを得ることができます予測と不確実性。また、このプロセスは、並列に動作することができ、そう時間前伝搬時間に等しくすることができます。
生成されたソフトマックス確率的ニューラルネットワークは、不確実性を表現することができないのですか?
実際には、我々は、そのような政策、マージン、エントロピーの少なくとも自信を持って能動学習クエリとして、不確実性の確率ソフトマックスを計算するために多くの時間を要しました。エントロピー戦略において、より均一な確率SOFTMAXエントロピ大きく、我々は、より大きな不確実性と信じている。逆に、1に近い1次元ソフトマックスで、他は、最小不確か0に近いです。
しかし、ソフトマックス値および信頼性はカウンターサンプルの分類結果ではありません。モデルも高いソフトマックス出力との予測に不確実であることができる[1]。
ときに、モデルの検証セット; MNISTの分類には、例えば、時に効果の上に設定されたモデルの検証は、ニューラルネットワークへの映像入力は、我々はまだ非常に価値の高いソフトマックス、分類結果が信頼できない、この時間を得ることができます吸いますテストセット上でも非常に良い非常に良い効果が、この時間は、我々はいくつかの画像ノイズを追加します、またはデジタル手書きで撮影し、ネットワークに入力された、より価値の高いソフトマックスを取得するには、この時、我々は信頼性の高い結果であることを信じますか?私たちが理解することができます。この時間は、既知の情報では、モデルは、彼らは非常に良いことだと思いますが、モデル自体が行き、すべてのサンプルおよびスペースに一般化することができない、それを見ていないデータのために、それは可能な一般ですそう、モデルはまだデータに知られた情報に基づいており、この時間は、当然のことながら、時には非常に良い裁判官を(偉大なディメンション値ソフトマックス)この強力な判断を強い見ていないが、しかし、裁判官は時々持っているかもしれません間違い、しかしモデルは、この判断を持っている多くの自信を与えるものではありません。
MCのドロップアウトは、予測値を与え、ベイズ深研究嘘の利点である、この予測値に自信を与えることができます。
MCドロップアウトサンプルコード
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
inp = tf.keras.layers.Input(shape=(28, 28))
x = tf.keras.layers.Flatten()(inp)
x = tf.keras.layers.Dense(512, activation=tf.nn.relu)(x)
x = tf.keras.layers.Dropout(0.5)(x, training=True) # dropout 在训练和测试时都将开着
out = tf.keras.layers.Dense(10, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inp, out)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=3)
# 在测试过程,dropout 也是打开的,得到的结果将会有波动,而不是完全一致
for _ in range(10):
print(model.predict(x_test[:1]))
ドロップアウト層が開状態にされている、検査プロセスが数回繰り返されます。
リファレンス
[1]ギャル、Y.、&Ghahramani、Z.(2015)。ベイジアン近似としてドロップアウト:ディープ・学習におけるモデルの不確定性を表します。http://arxiv.org/abs/1506.02142から取得
[2]ギャル、Y.、&Ghahramani、Z.(2015)。付録:ベイズ近似としてドロップアウト。http://arxiv.org/abs/1506.02157より作成
実験的な不確実性の二種類の[ノート]深学習(上) -張紫ヤン
ドロップアウトの過去と現在-機械の心の
深いベイジアンニューラルネットワーク- 。ステファノCosentinoさん