各チャンネルごとに平均・分散を求めることは有名ですね。時に移動平均をどう扱うべきかよくわからないといった難点も併せ持っており、いつでも使えるわけではありません。このためミニバッチに依存しない正規化手法が待ち望まれていました。比べてかなり劣っており、主流とはなっていません。匹敵する精度を実現しました。値に対して敏感ではないようです。複数のチャンネルの組み合わせによって表現される特徴を歪めてしまう問題があると考察されています。こちらは大域的すぎて、特に重要ではないチャンネルが画像全体にわたって高い値を示した場合に他の全てのチャンネルが抑制されてしまいます。良いとこ取りをできるというわけです。なんだか素晴らしそうですね。サポートされているのでお手軽に使えます。この疑問を検証します。置き換えるだけでは精度がかなり落ちてしまいました。使う場合は精度の確認やパラメータチューニングをきちんとやるべきでしょう。全体の実行速度を大きく下げてしまうことがわかりました。この原因や、より効率のいい実装方法についても詳述します。用いるよう変更したバージョンでそれぞれ画像分類の学習を行いました。ような大規模データセットの学習には時間がかかる猫かわいいという理由で決めました。枚ずつのデータがあります。割を検証用に用いました。挙動が実験ごとに変わらないようにしています。内でのスレッドスケジューリングに依存することによる、数値計算的な非決定性は存在します。7.3.0となります。律速するという事態は回避できました。フルに動いてくれませんでした。学習を行った結果を以下に示します。検証は毎エポックごとに中心クロップ画像に対して行いました。圧勝ですね......。decay・グループ数などの調整を行うと違った結果にはなるでしょう。つのバージョンは実装の違いだけですので、当然ながらほぼ同じ結果になっています。かなりの差が出たのは印象的でした。ここで挙げる実行時間は学習・検証全体で測定したものです。単体のマイクロベンチマークをすればさらに差は開くでしょう。実装されているので、勝つのはなかなか困難だと予想されます。分かかってしまっていました。倍と、かなり近い実行時間にまで最適化できています。行う関数を利用する巧妙な実装となっています。適用するだけというわけです。ためのメモリを確保するためにメモリ消費が倍になる弱点はあるものの、一見したところ高速に動作しそうです。(なお適切な再計算をすればメモリ確保はほぼなくせますが、この記事では扱いません。詳しい実装や論文が公開されています。カーネル)が積もり積もることで時間が消費されているとわかりました。間通信がボトルネックになっているだろうと推測できました。カーネル発行が起こっているか確認してみましょう。行われていることがわかります。カーネル呼び出しが起こっていたのです。自動微分は便利ですが細かいカーネルが増えがちです。ネットワーク内部で何度も使われる関数を自動微分に頼って書くと、全体の実行時間に大きな影響を与えうることがわかります。回ずつにまで低減することは可能です。深層学習フレームワークは急速に進歩していますので、近い将来には自力でがんばらなくても自動的に最適化されるようになるでしょう。勝てませんし、メモリ確保も減らせません。使わずフルスクラッチで実装することにしました。誤差逆伝搬フルスクラッチで実装するなら、まずすべきことは微分です。よって表すことにします。