備忘録とか日常とかスマートフォン用の表示で見る備忘録とか日常とか学んだこととかを書きます。この広告は、90日以上更新していないブログに表示しています。theanoによる実装,アルゴリズムを勉強中。研究では主にCNNをtheanoを使っているが、正規化層による効果はどんなものか試してみたくなったので実装する。theanoはあくまで数値計算ライブラリなので、はじめから正規化のための関数が用意されているわけではない。その他にも機械学習でよく使うような関数が用意されていないこともままある。そこでtheanoをベースとしている機械学習ライブラリであるpylearn2の中から、コードを参考にして実装していく。subtractionなどがある。Learningに限らず、画像認識で一般的に行われる前処理としての正規化はGCNとかが多いらしい。CNNが世に知られるきっかけとなったKrizhevsky氏のImageNetの論文では、RGBの画素値の平均を引くだけにしているので、前処理の必要の有無はタスクによるのかもしれない。Caffeとかでもデフォルトで平均画像を引くようになってたような気がする。CNN内の正規化層としては、LCNやらLRNが使われる。お恥ずかしい話ではあるが、つい最近までLCNとLRNをごっちゃにして考えていた・・・。以下、画像のチャネルを特徴マップと呼ぶ。(元画像はRGBの3チャネルを持つ)LCNはその名の通り、特徴マップの局所領域内でコントラストを正規化する。この処理は一つの特徴マップ内で完結するので、すべての特徴マップに対して独立して行う。対してLRNでは、同一位置における異なる特徴マップ間で正規化する。どちらもいくつかのハイパーパラメータはあるが、学習の対象となるパラメータはないので、誤差伝播が容易に可能である。今回はLCNを実装するのでLRNはまた今度説明することとする。