畳み込みフィルターが同じにならないようにするものはありますか?
mnistデータセットから手書きの数字を認識するための単純なモデルをトレーニングしました。ここにあります:
model = Sequential([
Conv2D(filters=1, kernel_size=(3,1), padding='valid', strides=1, input_shape=(28, 28, 1)),
Flatten(),
Dense(10, activation='softmax')])
他のパラメーターを一定に保ちながら、畳み込み層のフィルターの数を変えて実験しました(学習率= 0.0001、エピソード数= 2000、トレーニングバッチサイズ= 512)。1、2、4、8、16のフィルターを使用しましたが、モデルの精度はそれぞれ92〜93%でした。
私の理解では、トレーニング中に、フィルターは画像内のさまざまなタイプのエッジ(たとえば、垂直、水平、円形)を認識することを学習する場合があります。この実験では、フィルターのいずれかが重複してしまうのではないかと思いました。同じまたは類似の重みを持っています。それを妨げるものはありますか?
回答
いいえ、重みの違いを実際に妨げるものは何もありません。実際には、モデルがより表現力豊かになる(つまり、より強力になる)ため、ほとんどの場合異なる結果になりますが、最急降下法はそれを行うことを学習します。モデルが持っている場合$n$ 機能が、それらの2つが同じである場合、モデルは事実上 $n-1$ 機能、これはより表現力の低いモデルです $n$ 機能、したがって、通常、より大きな損失関数があります。
ただし、重みが異なっていても、それらのいくつかは非常に類似している可能性があります。畳み込みフィルターの最初のレイヤーを視覚化し、それらが多数(たとえば、100)ある場合、それらのいくつかがほぼ同じエッジ(同じ方向と配置)を検出することを学習していることがわかります。これらの機能は非常に類似しているため、モデル内で事実上冗長であり、予測力を高めることはありません。
実際には、冗長な機能を特定してそれらを整理することに関する研究分野全体があります。Le Cunは、Optimal Brain Damageで、冗長な機能を削除すると、モデルが小さくなり、推論が速くなるだけでなく、モデルの精度も向上することを示しています。
ここでは詳細は剪定方法の一つの高レベルの概要については、ブログ記事です。