maxnorm制約とは何ですか?たたみ込みニューラルネットワークではどのように役立ちますか?


回答:


16

http://cs231n.github.io/neural-networks-2/#regから:

最大ノルム制約。正則化のもう1つの形式は、すべてのニューロンの重みベクトルの絶対値に絶対上限を適用し、射影勾配降下を使用して制約を適用することです。実際には、これは通常どおりパラメーターの更新を実行し、すべてのニューロンの重みベクトルをクランプしてを満たすように制約を適用することに相当します一般的な値は3または4のオーダーです。この形式の正則化を使用すると、改善が報告される人もいます。その魅力的な特性の1つは、更新が常に制限されているため、学習率が高すぎる場合でもネットワークが「爆発」できないことです。ww2<cc


8

私が見つかりました。McLawrenceによって答え別の質問は非常に有用であることを。以下に再現:

重量制限は何をしmax_normますか?

maxnorm(m)は、重みのL2ノルムがを超えるm場合、ノルムをに減らす係数で重み行列全体をスケーリングしますm。あなたがkerasコードで見つけることができるようにclass MaxNorm(Constraint)

def __call__(self, w):
    norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True))
    desired = K.clip(norms, 0, self.max_value)
    w *= (desired / (K.epsilon() + norms))
    return w

さらに、ノルムが計算さmaxnormれるaxis引数があります。この例では、軸を指定していないため、ノルムはウェイトマトリックス全体で計算されます。たとえば、tf次元の順序付けを使用していると仮定して、すべての畳み込みフィルターのノルムを制約する場合、重み行列はの形状になり(rows, cols, input_depth, output_depth)ます。ノルムオーバーaxis = [0, 1, 2]を計算すると、各フィルターが指定されたノルムに制約されます。

なぜそれをするのですか?

重み行列を直接制約することは、別の種類の正則化です。単純なL2正則化項を使用する場合、損失関数で高い重みにペナルティを課します。この制約により、直接正則化します。これもkerasコードでリンクされているように、これはdropoutレイヤーと組み合わせると特にうまくいくようです。詳細については、このペーパーの 5.1章を参照してください。


正解ですが、注意してください。「この例では、軸を指定しないため、ノルムはウェイトマトリックス全体で計算されます。」-これは真実ではないようです(少なくとも現時点では)。むしろ、ノルムはデフォルト値を超えて計算されますaxis=0
Bobson Dugnutt

私は同意します。最大ノルムは、隠れ層のノードにファンインする重みの長さ、つまり、と見なされます。 。また、ドロップアウトの正規化では、すべての実行にmax-normが使用されていたことに気づきましたか(cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdfの 1934ページの最後の段落を参照)。||w||
NXGロジック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.