しえログ

qiita との使い分けに悩んでる

Batch Normalization について軽くまとめ

Deep Learning の基礎学習の一環として名前だけ聞いたっきりになっていた Batch Normalization についてゼロから作る Deep Learning に載っていたので軽く読んで勉強した。

Batch Normalization とは

[1502.03167] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

2015 年に Google の Loffe さんらによって提案された手法。
ニューラルネットワークの各活性化関数における出力(activation)の分布が偏っていると色々問題を起こす可能性がある。例えば 0, 1 付近に集中していたりすると勾配消失問題が起こりやすくなるし、かといって他の特定の箇所に集中していても今度は表現力がなくなってしまい複数のニューロンが存在する意味がなくなってしまう。

解決法として活性化関数に応じた以下のような初期値設定法が提案されている。

  • 活性化関数が Sigmoid, tanh の場合
    • Xavier の初期値
  • 活性化関数が ReLU の場合
    • He の初期値

適切な初期値の設定とはまた別として、分布に適度な広がりをもたせたいわけだが、そこで Batch Normalization が考案されている。
具体的には

  • 学習係数を適度に大きくし学習の進行速度を上げられる
  • 初期値にそれほど依存しない
  • 過学習を抑制する

などの利点が。
やることはデータ値の平滑化なので計算は難しくない。

計算法

{m} 個の入力データ値を平均0、分散1に平滑化する形で変換する以下の様な写像 {\mathbf{BN}_{\gamma,\beta}} となる。

{\mathbf{BN}_{\gamma,\beta} \colon \{x_i\}_{i=1}^m \to \{y_i\}_{i=1}^m}

1. 平均を求める: {\mu_B \gets \displaystyle \frac{1}{m}\sum_{i=1}^m x_i}
2. 分散を求める: {\sigma^2_B \gets \displaystyle \frac{1}{m}\sum_{i=1}^m (x_i-\mu_B)^2}
3. 平滑化する: {\hat{x}_i \gets \displaystyle \frac{x_i-\mu_B}{\sqrt{\sigma^2_B+\varepsilon}}}

  • {\varepsilon} はゼロ除算対策の微小値

4. あらかじめ定めておいたパラメータでもってスケーリングする: {y_i \gets \gamma \hat{x}_i + \beta}

この {y_i} を各層の活性化関数の出力として置き換えることでデータの Batch Normalization が完了する。

原著論文周辺

このやり方によって当時の SoTA な画像分類モデルにおいて学習ステップを1/14に減らしたらしい。

ただ、今となっては Loffe からさらに新しく Batch Renormalization という手法が提案されている。
これはミニバッチのサイズが小さかったり、その中のサンプルに独立性があまりない場合に Batch Normalization がそれほど有効でなかった問題を解決したもので、ミニバッチにあまり関係なく独立性を保てる工夫がされているらしい。

[1702.03275] Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-Normalized Models

自宅のソファをリニューアルした

腰を悪くした原因の1つじゃないかと気になっていた自宅のソファを一新した。2シーターのローソファを1シーターの普通(?)のソファに買い替え。旧ソファの廃棄に約9,000円、新ソファ本体約13,000円、ソファカバー9,000円、ソファの脚2,000円と、何ともカネのかかるリニューアルとなってしまった・・・。

今回購入したのは無印良品のこれ↓。昨日の悪天候の中、配達の方が頑張って部屋まで搬入してくれた。

www.muji.net

当たり前だけどこれまで使っていたのとはまた違う座り心地というか、膝を折り曲げないで座れるのでとても楽チンである。これなら腰もこれ以上悪くすることはないのではなかろうか。

そもそも何で以前ローソファにしたんだっけ?って思い返してみたけど、もう5年近く前の話だし全然思い出せない・・・。リクライニングを倒せば簡易ベッドにできる、ってのも理由の1つだった気もするけどずっと壁に沿って配置してたので倒せない(し、使う機会も特になかった・・・)。アームの方は倒せる空間的余裕があり、しかも倒せば枕っぽくなるので、飲み帰りに友達が泊まりに来たときなんかは寝床として使ってもらっていたけど、そう起こるイベントじゃあないしなぁってことで今回は1シーターにしてみた。

丁度いいので早速ソファに座りながら映画を2本通して観てみたけど、満足度は高い。中々いいソファだよ無印さん。最初間違ってソファカバーのみ購入しちゃったのでサイトはもっと分かりやすくしてくれ無印さん。


今日は土日の嵐が嘘のように晴れて気温もアゲアゲって感じだったので久々にドライブしてきた。羽田空港第1ターミナルから望む夕日が素晴らしかったので、良い3連休の締めくくりが出来た気がしている。

網というか柵というかワイヤーというか。

話題のビジホ開発合宿を行った

前回の記事いつ書いたっけ・・・とすっかり忘れるぐらいにはエントリさぼりしてた。。。

結構忙しかったという言い訳はあるのでそこまで悲観的にはなっていないのだけれど、今月もなんとか2,3記事いかせたい・・・。

ツイッターを遡って記憶をたどることにする。


8月下旬は今更ながら PS4 を買った。いつぞやのエントリで書いていたとおり、ここ最近ずっと PS3 の起動に難が生じていたので少ない財布から絞り出してえいやっと購入してしまった。ソフトはクラッシュ・バンディクー ブッとび3段もりバイオハザード7

クラッシュのほうは原作3作のリメイクなのでまぁいいとして、バイオ7、前情報あまり取り入れずに原点回帰とだけ聞いていたけどまぁなんつーかホラー映画的なエッセンスを取り入れたって感じですかね。原作1〜3に近いというよりは映画版でやっていたような驚かし系の演出が多くてそりゃ確かに VR 映えするかもなーって感じ。

ちなみに PSVR も売ってはいたんだけどあれ5万もするんですね。流石に一月に10万以上もゲーム代につぎ込む気にはならんす。クリスマスあたりにサンタさんがプレゼントしてくれないかな。


PS4 とソフト一式を買ったのはいいものの、その2週後の金曜には社内での論文読み会プレゼンとレポート締め切りが被っていたのである。土日どちらかつぶさないと間に合わんぞこれ、、、ってなっていた際に下記の qiita エントリを思い出した。

qiita.com

もともとビジネスホテルは大好きなほうで、旅行に行ったときにもチェックインする際に異常にワクワクするクセがある。自宅から離れた都内で飲むときなんかは時々ホテル取るなんてことをしていたので、渡りに船とばかりに1人でビジホ開発合宿もといレポート執筆缶詰を試してみることにした。

上野の高層階のみに客室があるちょい豪華目なホテルを予約。都心へ面した部屋ではないものの、自室からはスカイツリー含めた夜景が見える好立地っぷり。

ちゃんと夜は布団で眠ったのでホテルで作業した時間は実質8時間程度なのだけれど、自宅でやってたときの1.5倍ぐらいのパフォーマンスは出せたんじゃなかろうか。次は研究ネタがあって、ガッツリ取り組みたいときとかに利用してみたい。2泊3日予約にして、1泊目:研究開始、2泊目:仕上げ&夜飲み、みたいなプランに憧れる帰りの電車内であった。

広島の帰りに京都観光

8月も半ば過ぎたというのに今月は1本もポエムエントリを書けてないことに気づいた。あかん。

7月末に帰国してからというもの、2週間後にはまたヒロシマで行われる MIRU に行かなきゃいけなかったということもあって、企業展示について考えたりと色々やることが多かったのである。 どうしてこう色々重なるんだと思いつつも、夏秋は学会シーズンだし仕方ない。ウマイお好み焼きも食べられたし宮島にも上陸できたし、出張したかいはあったと言えよう。

ちなみにヒロシマからの帰りに京都で途中下車してアニメ的な聖地巡礼に赴いていた。もともと機会があったら有頂天家族聖地巡礼に行こうと考えていた矢先だったので渡りに船とばかりに色々巡ってきたのである。京都を観光するのは3度目なんだけれど、過去2回とも京都には1泊しただけの慌ただしい旅だったので今回は2泊することである程度ゆっくり回れた。腰が万全の状態ではなかったので朝から歩き通せなかったのは辛かったけど観光以外にもウマイ飲み屋を2件見つけられたので大満足である。以下フォトログ

f:id:cielan:20170811110747j:plain 平等院鳳凰堂

f:id:cielan:20170811123307j:plain 宇治のシャレオツなスタバ。

f:id:cielan:20170811145403j:plain 下鴨神社

f:id:cielan:20170811152930j:plain 3匹。次男はいない。

f:id:cielan:20170812105801j:plain へそ石様。

f:id:cielan:20170812114935j:plain 六道珍皇寺

宇治周辺だけ有頂天家族ではなくてユーフォ響かす系だけど、一度平等院鳳凰堂見てみたかったのよね。次はいつになるかわからんけど京都は見どころが沢山あるので機会があればいつでも立ち寄りたいが、サクラクエストでまた富山がフィーチャーされていたしそっちでもいいかもしれない。

KDD 2017 の Visual Search at eBay を読んだメモ

最近お仕事で CBIR 関連やっているので半ば義務感でさらっと目を通してみた。
結果まで書ききる体力なかったので手法とアーキテクチャのみ軽く・・・。

[1706.03154] Visual Search at eBay

www.youtube.com

タイトル

Visual Search at eBay

著者

Fan Yang, Ajinkya Kale, Yury Bubnov, Leon Stein, Qiaosong Wang, Hadi Kiapour, Robinson Piramuthu

概要

eBay の運営するサービスである ShopBot および Close5 の2つに関する技術事例・システム論文。リストに上がっては売れていくという揮発性のあるオンラインマーケットプレイスに対する画像検索へのアプローチ。画像検索技術だけでなく、スケールするシステムアーキテクチャと実装にまで触れている。

手法

DNN アーキテクチャ

例によって DNN でアプローチしているわけだが、 共通 conv 層の先を2つに分割し、セマンティックハッシュ生成用とカテゴリ認識用に別々の fc 層を構築したネットワークを用いている。

f:id:cielan:20170806112032p:plain
論文中より Fig. 3

検索結果のランキングはバイナリハッシュのハミング距離でソートするわけだが、より検索結果を改善するために以下の計算による属性スコアを取り入れて、そのうえで再度ランキング化している。

 {
S = \lambda S_{appearance} + (1 − \lambda)S_{aspect} \\
S_{aspect} = \frac{1}{\sum_{i=1}^nw_i}\sum_{i=1}^n\sum_{j=1}^mw_i\mathcal{I}(a_i^q=a_j)
}

 {S_{appearance}}: バイナリハッシュの正規化されたハミング距離
 {w_i,0 \leq i \leq n}: reward point。ハードコードされているが、属性によって可変設定。
 {a_i^q,0 \leq i \leq n}: クエリ画像  {q} から予測して得られた属性
 {a_j,0 \leq j \leq m}: 検索結果の画像から得た ground-truth な属性
 {\mathcal{I}(\cdot)}: 中身が一致していたら1を返す indicator 関数

システムアーキテクチャ

画像の取り込み及び保存はこんな感じ。
BigTable には MD5 を、CloudStorage には画像本体を格納している。

f:id:cielan:20170807002827p:plain
論文中より Fig. 6

さらに画像ランキングを保持するアーキクチャは Hazelcast を Kubernetes 上に構築。

f:id:cielan:20170807002841p:plain
論文中より Fig. 7

帰国した

怒涛の CVPR を経て無事帰国。着陸後は日本の味を求めてすぐさま成田空港内のフードコートでラーメン花月を食してしまった。夏は蒸し暑く冬は寒すぎるとはいえ、ちゃんと換気扇まわってウォッシュレットのあるトイレといい、早くて乗り心地の良い電車といい、やっぱ日本は素晴らしいと思いますわ。


せっかくなので CVPR を経ての所感を書き留めておく。

まず目の前の研究者と話せないのが本当につらい。まぁもちろん旅行英語ぐらいはできるつもりだよ。しかしながらちゃんと相手の研究解説を聞いて質疑応答を同期的にできるかというと全然ダメ。数式と図を指しながら色々やり取りしている状態では、飯食ったり酒飲みながらお互いの研究について議論を深めるなんて夢のまた夢だろう。ちとどげんかせんといかん。確か池尻に英会話喫茶なるところがあったのでちょっと尋ねてみようかしら。

あと、半年前と比べると格段にキャッチアップ出来てきたと思えるけど、やっぱまだまだ知らない単語や概念多いのはもちろんのこと、最近名前が知れてる研究者や会社・グループについても全然把握できてない。知ってても院生やってた6,7年前の話だよね?それ、的な感じにもなったりするしお笑いモノ。やっぱ場馴れ感出して初めて立てる場所もあると思うので、地道に頑張っていくしか無いんだろうけど、こんなんも知らんの?的な視線に耐えるのはなかなかしんどい。

そんな状態のくせして現地で知り合った日本の方々と比べても手が全然動かせてない現状もツライ。皆論文の実装をちゃっちゃと済ませてギッハブのスター稼いだり、自前データに適用してみたりといったことをイテレーション早くやってる方多い。基礎も大事だけどしっかり実績や結果も積んで行かないといかんね。


意識高く反省ポイント書き出したくせに、今日はこれまでずっと騙し騙し見ていた前の部署のシステムをようやっとクローズできたので酒飲みに行ってくるのである。また明日から頑張ろうと思ったけど、来週はもう MIRU だし、時間てのはホントにないもんだ。

観光じゃないハワイを満喫している

腰の調子もそれなりになったということでハワイに心置きなくやってこれた。 目的はもちろん CVPR なるコンピュータビジョンのトップカンファレンス。 現在2日目で、初日チュートリアル・ワークショップからのメインカンファレンスの1日目が終わったところだけど予想以上に刺激を受けている。

f:id:cielan:20170721083316j:plain

各セッションはスポットライト・オーラルの発表で構成。スポットライトは持ち時間が4分程度と短いので所謂ライトニングトークといったところだろうか。とはいえ話される内容は研究成果であり、しっかりと査読をクリアしているので上から目線で変な言い方でだけど安心して話を聞いていられる。むしろ話す側が4分程度に納めなきゃならないということでとても辛そうである。早口でまくしたてられる英語はいつもより周波数高めに感じられてなかなかなもんであった。そんな感じで英語をがんばって聞き取ってはいるものの、やはり理解まで出来るかというとそうではないので、ポスター発表に期待するのである・・・が、しかし、そこでも英会話能力が試されるため、カタコトで頑張っていると常にボロが出てしまうのであった。数式と図がある程度助けてくれるとはいえ、やっぱりちゃんと英会話訓練頑張ろうと思ったのは人生初かもしれない。

ホテルは会場からすぐ近くのショッピングセンターに隣接。さすがに日本とはスケール違うなと思いつつも、ゾンビ映画によく出てくるようなオーソドックスなショッピングセンターのなりをしており、いらぬ不安を抱いてしまった。ホテルの売店で売ってる酒も日本とそんなに変わらないのだけれど、マティーニとかマルゲリータが缶で飲みやすい形で売られているのには驚いた。ぜひ日本でもどっかが卸して欲しい。

ちなみに今夜は同じチームの偉大な先生のツテもあって、日本人参加者で軽くディナー。いろんな会社の研究者や博士課程の学生がいたりと、刺激的なのは飲み会も変わらなかったのでござる。特におそ松さんの六つ子認識で有名な bohemia さんとたまたま同じテーブルで飲ませていただけたのは幸運にしか思えない。ブログは論文と違ってレポートとしても軽く使えるし良いですよね、とか偉そうなこと言ったけど自分もちゃんとやってなんかの結果出せって話ですね。サーセン。ちなみに飲み代もなぜか少しおごってもらった。

あと、各 IT 系メディアでちょっと話題になってた Intel の USB ディープラーニングキットを会場で手に入れた。

f:id:cielan:20170723192136j:plain

まだ何にも使えてないんだけど、推論用にそれなりに強力らしいし日本に戻ったら色々試してみたい。