タグ付けされた質問 「batch-normalization」

2
バッチ正規化では、移動平均を使用して、トレーニング中のモデルの精度を追跡する方法と理由を教えてください。
私はバッチ正規化(BN)論文(1)を読んでいて、モデルの精度を追跡するために移動平均を使用する必要があることを理解していませんでした。彼らがまさにやっていること。 私の理解(これは間違っている)に、論文では、モデルがトレーニングを終了した後、ミニバッチ統計ではなく人口統計を使用していることに言及しています。偏りのない推定についての議論の後(それは私には接線のようであり、なぜそれについて話すのか理解できない)、彼らは行って言う: 代わりに移動平均を使用して、トレーニング中のモデルの精度を追跡します。 それは私を混乱させている部分です。なぜ移動平均を行ってモデルの精度とどのデータセットを推定するのですか? 通常、人々はモデルの一般化を推定するために行うことで、モデルの検証エラーを追跡します(そして、勾配降下を早期に停止して正則化する可能性があります)。ただし、バッチの正規化はまったく異なることを行っているようです。誰かが何を、なぜ違うことをしているのかを明確にできますか? 1:Ioffe S.およびSzegedy C.(2015)、 「バッチ正規化:内部共変量シフトの削減によるディープネットワークトレーニングの加速」、 第32回機械学習に関する国際会議の議事録、リール、フランス、2015年。 機械学習研究ジャーナル: W&CPボリューム37

1
バッチ正規化による逆伝播の行列形式
バッチの正規化は、ディープニューラルネットのパフォーマンスが大幅に向上したとされています。インターネット上の多くの資料は、アクティベーションごとにそれを実装する方法を示しています。私はすでに行列代数を使用してバックプロップを実装しましたが、高レベル言語で作業していることを考えてRcpp(そして、最終的にはGPUの高密度行列乗算に依存しています)、すべてをリッピングして- forループに頼るとおそらくコードが遅くなります実質的に、大きな痛みに加えて。 バッチ正規化関数である b(xp)=γ(xp−μxp)σ−1xp+βb(xp)=γ(xp−μxp)σxp−1+β b(x_p) = \gamma \left(x_p - \mu_{x_p}\right) \sigma^{-1}_{x_p} + \beta xpxpx_pは、アクティブ化される前のppp番目のノードです。 γγ\gammaとββ\betaはスカラーパラメーターです μxpμxp\mu_{x_p}とσxpσxp\sigma_{x_p}平均値とのSDいるxpxpx_p。(分散の平方根とファッジファクターが通常使用されることに注意してください-コンパクト化のために非ゼロ要素を仮定しましょう) 行列形式では、層全体のバッチの正規化は次のようになり b(X)=(γ⊗1p)⊙(X−μX)⊙σ−1X+(β⊗1p)b(X)=(γ⊗1p)⊙(X−μX)⊙σX−1+(β⊗1p) b(\mathbf{X}) = \left(\gamma\otimes\mathbf{1}_p\right)\odot \left(\mathbf{X} - \mu_{\mathbf{X}}\right) \odot\sigma^{-1}_{\mathbf{X}} + \left(\beta\otimes\mathbf{1}_p\right) ここで XX\mathbf{X}はN×pN×pN\times p 1N1N\mathbf{1}_Nは1の列ベクトルです γγ\gammaとββ\betaは、レイヤーごとの正規化パラメーターの行pppベクトルです。 μXμX\mu_{\mathbf{X}}及びσXσX\sigma_{\mathbf{X}}でありN×pN×pN \times p各列は行列、NNN -ベクトル列方向手段と標準偏差の ⊗⊗\otimesはクロネッカー積であり、⊙⊙\odotは要素単位(アダマール)積です。 無バッチの正規化及び連続結果に非常に単純な1層ニューラルネットであり y=a(XΓ1)Γ2+ϵy=a(XΓ1)Γ2+ϵ y = a\left(\mathbf{X\Gamma}_1\right)\Gamma_2 + \epsilon どこ Γ1Γ1\Gamma_1あるp1×p2p1×p2p_1 \times p_2 Γ2Γ2\Gamma_2ありp2×1p2×1p_2 \times …

1
バッチ標準に学習可能なスケールとシフトがあるのはなぜですか?
私が理解している限り、バッチノルムは、レイヤーへのすべての入力フィーチャを単位正規分布正規化します。平均と分散μは、σ 2は、現在のミニバッチのそれらの値を測定することによって推定されています。N(μ=0,σ=1)N(μ=0,σ=1)\mathcal{N}(\mu=0,\sigma=1)μ,σ2μ,σ2\mu, \sigma^2 正規化の後、入力はスケーリングされ、スカラー値によってシフトされます。 x^′i=γx^i+βx^i′=γx^i+β\hat{x}_i' = \gamma \hat{x}_i + \beta (私がここで間違っている場合は修正してください-ここで私は少し不確かになり始めます。) と βはスカラー値で、バッチノルムレイヤーごとにそれぞれのペアがあります。それらは、バックプロップとSGDを使用して重みとともに学習されます。γγ\gammaββ\beta 私の質問は、これらのパラメーターは冗長ではないかということです。これは、レイヤー自体の重みによって、入力をスケーリングおよびシフトできるためです。つまり、 y=Wx^′+by=Wx^′+by = W \hat{x}' + b そして x^′=γx^+βx^′=γx^+β\hat{x}' = \gamma \hat{x} + \beta その後 y=W′x^+b′y=W′x^+b′y = W' \hat{x} + b' W′=WγW′=WγW' = W\gammab′=Wβ+bb′=Wβ+bb'=W\beta + b では、ネットワークにそれらを追加することのポイントは、すでにスケールとシフトを学習することができるのでしょうか。それとも私は完全に誤解していますか?

2
バッチ正規化やReLuユニットを使用せずに、非線形性を飽和させるための消失勾配に対処する方法はありますか?
私は、消滅(または主に消滅しているが、勾配問題の爆発)に苦しむ非線形性を持つネットワークを訓練したかった。(現在の)標準的な方法は、バッチ正規化1 [BN] 1を使用するか、単に非線形性を放棄してReLu 整流器/ ReLuユニットを使用することです。 私は2つのことを望んでいました: 私の非直線性に固執するので、それを放棄してReLuを使用したくありません(つまり、ReLuは許可されません!)。非線形性の再パラメータ化は問題ありません。たとえば、ようにその前に乗法を置くとしましょう。θ (s )θ(s)\theta(s) 理想的には、あまりにも多くのバッチ正規化に依存したくなかった(または、少なくともそれが使用された場合、元の論文での使用方法以外の新しい方法で使用するか、多くの非直線性に一般化する必要がある)。バッチ正規化を避けたかった理由の1つは、特定の非線形性に対してのみ機能するように見えるためです。たとえば、シグモイドの場合、tanhですが、他の非線形性に対してどのように機能するかは不明です、とガウシアンは言います。 これらの制約がある理由は、特定の非線形性に対してのみ機能するソリューションをハッキングしたり、単に問題を回避することで問題を回避したりするのではなく、直接問題を数えることによって勾配を消失または爆発させる問題に対処したいためですReLu。 これらの2つの制約があるため、勾配の消失問題に対処するための代替方法は何ですか?(考慮される別の非線形性は、ユークリッドノルムの事前アクティブ化、シグモイド、tanhなどのRBFガウスカーネルです) 私が考えていた(漠然とした)考えられるアイデアは次のとおりです。 飽和状態の非線形性が既に飽和状態にならないように、適切な初期化を行ってください(飽和状態の非線形性により、勾配がゼロに近くなります)。 RBFの場合も同様に、ガウシアンは主に0に近い大きな値を持っているため(つまり、フィルターがそのアクティブ化またはデータに類似している場合)、適切な初期化が重要になる場合があります。したがって、大きすぎたり小さすぎたりすると、同様の勾配の問題が消えます。 これが制約が強すぎるかどうかは本当にわかりませんが、元の論文での従来の提案(またはおそらく、より大きな非線形性、現在のところ、ほとんどの研究は、私が知る限り、シグモイドで機能することを示すことです)。 もう1つのアイデアは、非線形性を使用する代わりにするです。場合以前のレイヤーで「消失」するのを避けるために、非線形性がレイヤーごとに逆方向に複数回乗算されないことを意味します。学習ルールが不安定になる可能性があるため、レギュラライザーを使用することをお勧めします。θ (Z )A ∈ R A &gt; 1θ (z)θ(z)\theta(z)θ (Z)aθ(z)a \theta(z) a∈Ra∈Ra \in \mathbb{R}a&gt;1a&gt;1a > 1 本質的に消滅勾配を処理する(または少なくとも各パラメーターを別々に更新する)オプティマイザー。たとえば、その層が入力に近い場合、学習ステップは大きくなるはずです。学習アルゴリズムがこれを単独で考慮に入れて、消失勾配に対処するのは良いことです。 バッチノルムまたはReLu以外の消失勾配に対処する方法について提案がある場合は、それらについてお聞かせください。 勾配の消失は主に非線形性がという特性を持っているために発生するようです であり、で、それを何度も掛けた後、爆発または消失します。問題を明示的に言って解決するのに役立つかもしれません。問題は、下位層が更新されないか、ネットワークを介した信号を妨害することです。順方向パスと逆方向パスの間(および初期化時だけでなくトレーニング中も)、この信号がネットワークを流れるように維持するとよいでしょう。| θ ′(s )| &lt; 1|a|&lt;1|a|&lt;1 |a| < 1|θ′(s)|&lt;1|θ′(s)|&lt;1 | \theta'(s) | < 1 1:Ioffe …

2
バッチ正規化は、トレーニング後に人口統計をどのように計算しますか?
私はバッチ正規化(BN)ペーパー(1)を読んでいて、それは言った: このため、ネットワークがトレーニングされたら、正規化を使用します バツ^=x − E[ x ]Va r [ x ] + ϵ−−−−−−−−√x^=x−E[x]Var[x]+ϵ\hat{x} = \frac{x - E[x]}{ \sqrt{Var[x] + \epsilon}}ミニバッチではなく、人口統計を使用します。 私の質問は、どのようにしてこの人口統計をどのように計算し、どのトレーニングセット(テスト、検証、トレーニング)を超えているかです。私はそれが何を意味するのかは知っていたと思いましたが、しばらくして、これがどのように計算されるのかわかりません。私はそれがどのように行うかはわかりませんが、それは真の平均と分散を推定しようとしていると思います。おそらく、データセット全体に従って平均と分散を計算し、それらの瞬間を推論に使用します。 しかし、私が間違っているのではないかと疑ったのは、同じセクションの後半の不偏分散の推定についての彼らの議論です。 不偏分散推定を使用します Va r [ x ] =メートルm − 1⋅EB[σ2B]Var[x]=mm−1⋅EB[σB2]Var[x] = \frac{m}{m-1} \cdot E_{\mathcal{B}}[\sigma^2_{\mathcal{B}}] サイズのミニバッチのトレーニングに期待が集まっている場所 メートルmm そして σ2BσB2\sigma^2_{\mathcal{B}} それらは標本分散です。 私たちは人口統計について話しているので、この紙面上のコメントは、どこからともなく(私にとって)出てきたようなものであり、彼らが何について話しているのかわかりませんでした。彼らは(ランダムに)トレーニング中に不偏推定値を使用することを明確にしていますか、それとも不偏推定値を使用して人口統計を計算していますか? 1:Ioffe S.とSzegedy C.(2015)、 「バッチ正規化:内部共変量シフトの削減によるディープネットワークトレーニングの加速」、 第32回機械学習に関する国際会議の議事録、リール、フランス、2015。Journalof Machine Learning Research: W&CPボリューム37
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.