· 

物体認識のためのRecurrent CNNまとめ

(著)山拓

 

視覚における再帰結合の重要性はかなり前から指摘されており、最近になってそのモデル化がある程度進んできたので、整理のためにまとめることにしました。論文化されていない自分のメモも含みます。

 

当初は計算神経科学的な動機による論文のみを扱う予定でしたが、とりあえず知っているモデルを列挙することにしました(元は"視覚モデルのためのRCNNまとめ"というタイトルにする予定でした)。紹介順は関連順なので論文が出た順ではなかったりします。

 

※画像はarXiv/bioRxivで公開されているものは引用しています。問題があれば削除します。

 

RCNN

論文は

M. Liang, X. Hu. "Recurrent convolutional neural network for object recognition". IEEE. (2015). (pdf) 

 

RNNを単純にConv化したのがRCNN(Recurrent convolutional neural network)です。 

式は入力を$x_t$, 1ステップ前の出力を$h_{t-1}$, バイアスを$\boldsymbol{b}$, 畳み込みのweight matrixを$W^{\text{in}}, W^{\text{rec}}$, 畳み込み演算子を$*$, 活性化関数を$f(\cdot)$とすると、 $$ h_{t+1} = f(W^{\text{in}}* x_t + W^{\text{rec}}* h_{t-1}+\boldsymbol{b}) $$ ただし、$h_0$は要素0のテンソルで初期化されています(こうすることで式を分ける必要がありません)。Local response normalization(LRN)を挟んでいたりしますが、省略します。

Gated RCNN

論文は

J. Wang, X. Hu. "Gated Recurrent Convolution Neural Network for OCR". NIPS. (2017). (NIPS)

 

RCNNにゲートをつけたものです。論文発表自体は遅いですがシンプルなので先に紹介します。 

 

モデルはGRUにインスパイアされたようで、$G_t$というゲートで過去の出力の時定数(減衰率)を動的に変化させています。 \begin{align*} G_t &= \text{sigmoid}(W_g^{\text{in}}* x_t + W_g^{\text{rec}}* h_{t-1})\\ h_{t+1} &= f(W^{\text{in}}* x_t + (W^{\text{rec}}* h_{t-1})\circ G_t) \end{align*} ただし$\circ$はアダマール積(要素積)。またbatch normalizationは表記していません。

ConvLSTM

論文は

X. Shi, et al. "Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting". NIPS. (2015). (NIPS). (arXiv)

 

式はpeephole-LSTMの行列積を畳み込みに変えたもの。

\begin{aligned} i_{t} &=\sigma\left(W_{x i} * x_{t}+W_{h i} * h_{t-1}+W_{c i} \circ c_{t-1}+b_{i}\right) \\ f_{t} &=\sigma\left(W_{x f} * x_{t}+W_{h f} * h_{t-1}+W_{c f} \circ c_{t-1}+b_{f}\right) \\ c_{t} &=f_{t} \circ c_{t-1}+i_{t} \circ \tanh \left(W_{x c} * x_{t}+W_{h c} * h_{t-1}+b_{c}\right) \\ o_{t} &=\sigma\left(W_{x o} * x_{t}+W_{h o} * h_{t-1}+W_{c o} \circ c_{t}+b_{o}\right) \\ h_{t} &=o_{t} \circ \tanh \left(c_{t}\right) \end{aligned}

視覚界隈ではPredNetに使われたことで有名ですね。

 

なおLSTMの生理学的理解としては後述するsubLSTMの方が分かりやすいですが、ここでも少し説明します。LSTMはけったいな構造をしていますが、feed-forwardとfeed-backの抑制が抑制性介在ニューロンによってかかっていると考えれば少しは生理学的妥当性もあると思われます("少しは"です)。

subConvLSTM

論文化はされていませんが簡単な拡張なので紹介します。subConvLSTMはsubLSTM(subtractive inhibition LSTM)の拡張で勝手に名付けました。

 

元の論文は

R. Costa, Y. Assael, B. Shillingford, N. Freitas, T. Vogels. "Cortical microcircuits as gated-recurrent neural networks". NIPS. (2017). (arXiv

 

Canonical cortical circuitsのモデルとしてLSTMが適応できるという論文です。ゲートは全てsubtractive inhibition(減算抑制)に置き換わっています。介在ニューロンはinhibitory basket cellsを想定したそうな。

(Costa, et al., 2017. Fig.1)

 

上段はそれぞれ皮質回路(のモデル)、提案されたsubLSTM, LSTMのモデル図で下段は抑制の強度に応じたI/O firing rateの変化です。LSTMのような乗算による抑制は皮質回路の挙動とは異なるので、正しくモデルを作ったということです。

 

このsubLSTMの行列積を畳み込みに変えたsubConvLSTMの式は次のようになります。

\begin{aligned} i_{t} &=\sigma\left(W_{x i} * x_{t}+W_{h i} * h_{t-1}+b_{i}\right) \\ f_{t} &=\sigma\left(W_{x f} * x_{t}+W_{h f} * h_{t-1}+b_{f}\right) \\ o_{t} &=\sigma\left(W_{x o} * x_{t}+W_{h o} * h_{t-1}+b_{o}\right) \\ z_{t} &=\sigma \left(W_{xz} * x_{t}+W_{hz} * h_{t-1}+b_{c}\right)\\ c_{t} &= c_{t-1} \circ f_{t} + z_{t} - i_{t}\\ h_{t} &= \sigma \left(c_{t}\right) - o_{t} \end{aligned} ただし、$\sigma$は活性化関数にsigmoidを用いるという意味です。

 このsubConvLSTMを用いてPredNetを学習させた結果が次のgifアニメーションです。t=11から外挿(extrapolation)、つまり内的な予測のみで次の予測を生み出しています。

ConvLSTMを使った場合と遜色ない精度で予測できていると思います(漠然とした評価ですが…)。

 

Leaky RCNN

なぜか論文が無いのですが、RNN界隈でよく用いられるcontinuous-time recurrent neural networkの式の簡単な拡張をしてみます。

 

出力を$\boldsymbol{r}$, 入力を$\boldsymbol{x}$とします。$\boldsymbol{r}$が従う式を $$ \tau \frac{d\boldsymbol{r}}{dt}=-\boldsymbol{r}+f(W^{\text{rec}}*\boldsymbol{r}+W^{\text{in}}*\boldsymbol{x}+\boldsymbol{b}) $$ とします。ただし、$\tau$は時定数(あるいはsynaptic decay)です。これをシミュレーション可能にするためにオイラー法を用いて離散化します。タイムステップ幅$\Delta t$で離散化すると $$ \boldsymbol{r}_t=(1-\alpha) \boldsymbol{r}_{t-1}+\alpha f(W^{\text{rec}}*\boldsymbol{r}_{t-1}+W^{\text{in}}*\boldsymbol{x}_{t}+\boldsymbol{b}) $$ となります。ただし、$\alpha = \Delta t/ \tau$です。$\Delta t=\tau/10$とすることが多いので、$\alpha$は0.1~0.2くらいの数です。ただし、ユニットごと(チャネルごと)に時定数を設定することもできます。定数の$\tau$を $$\boldsymbol{\tau}=\tau_{\min}+\tau'\cdot \text{sigmoid}(\boldsymbol{\xi})$$ とするなどの方法もあります($\boldsymbol{\xi}$は学習可能なパラメータ)。この時定数をユニットごとに変化させるのみならずタイムステップごとに変化させるのがGRUの発想です。

 

畳み込みをしない行列積の場合の離散化した後のRNNをleaky RNNと呼ぶ場合もあります。このように過去の出力に定数倍をかけて足し合わせることで、ResNetなどと同様のバイパスが生まれているので、学習が進みやすくなっています。

 

重み共有したResNet

論文は

Q. Liao, T. Poggio. "Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex".  (2016). (arXiv)

 

要は層ごとに重みを共有したResNetはRNNとほぼ等価であるという話です。ResNetにおける$t$層目の出力、あるいはRNNにおける$t$ステップ目の出力は次の式で書けます。 $$ h_{t}=K \circ\left(h_{t-1}\right)+h_{t-1} $$ ただし、$K$は非線形演算子です。

ResNetは視覚野における再帰的計算に似た処理を行うことで物体認識の精度を上げているのかもしれません。このことはこの記事で最後に紹介する論文でも触れます。

 

論文内では多数のモデルの検討が行われていますが省略します(省略しちゃダメな気がしましたが)。ただ、層を超えたfeed-forward / feed-back結合を取り入れている点はこの後に紹介する論文よりも先進的だと思います。

 

(cf.) Deep Learning JPさんの解説スライド(slideshare)

 

BLT RCNN

論文は

C. J. Spoerer, P. McClure, N. Kriegeskorte. "Recurrent Convolutional Neural Networks: A Better Model of Biological Object Recognition". Front. Psychol. (2017).  (Front. Psychol.)

 

BLTはベーコン、レタス、トマト...ではなく、bottom-up, lateral, top-down の略。要はこれらの結合を持つCNNを提案したということです。またタスクも通常の物体認識ではなく、occlusionの元での物体認識です。

 

occlusionについて簡単に説明すると、一部が遮られて物理的には分割されて見えているものを統合して1つのものとみることです。例えば以下の画像の左側では青い円がオレンジの四角に隠されているように見えますが、そうである保証はありません。また、右側では1つの黒い線があるように見えますが、実際には2つの黒い線かもしれません(まあ、ペイントで書いたときは青い円と一本の黒い線で書きましたが…)。

 

 

このocclusionの処理にはlateral, feed-back投射が役立っているという話があるので、そのようなモデルとタスクを設定したということです(この辺の論文はintroduction参照)。

 

タスクは数字の切れ端でマスクした下にある1つの数字を分類する課題(ただしこれはヒトが見ても分からないのでタスクの設定が悪いと思います)など。他には複数の数字を重ね合わせ、それらの数字が認識できるかなどのタスクです。この際、表示されている全ての数字に対応する番号の要素を1とするベクトルとのクロスエントロピー誤差を最小化しています。

 

モデルの重要な部分は $$ h^l_{t+1} = f(W^{\text{B}}* h^{l-1}_{t} +W^{\text{L}}* h^l_{t-1} +W^{\text{T}}* h^{l+1}_{t-1} +\boldsymbol{b}) $$ です。ただし、これは$l$番目の層の更新式です。lateralとtop-downに関しては$t-1$の出力を畳み込んでいます。なお、これに近いモデルは1つ上のResNetの論文でも触れられています。

Predictive coding networks

少し毛色が変わりますが、再帰計算を用いたモデルなので紹介します。これまでのモデルは再帰的活動の変換を現在の活動に加算するだけ、など再帰的結合の役割を明示的に設定していませんでした(ゲートなどはありましたが)。紹介するモデルはPredictive codingというモデルを実装したものです。Predictive codingについては、以前(あまりよろしくない)記事を書きました(検索すると上位に出てきて恐縮でしかない)。→ 予測符号化 (predictive coding) とは何か

 

PCN with Global Recurrent Processing

論文は

H. Wen, et al. "Deep Predictive Coding Network for Object Recognition". ICML. (2018). (arXiv). (GitHub)

 

通常のCNNの計算に加え、逆向き投射により入力画像を予測するようなモデルとなっています。(学習時ではなく予測時の)タイムステップが進むにつれ予測誤差が減少し、反復を繰り返すほど精度が上がる仕組みになっています。つまり時間が経過すれば処理が進み、精度があがるということです。

(Wen, et al., 2018. Fig.1)

 

アルゴリズムは次のようになっています。

アルゴリズムを文章で説明します(意味あるか分かりませんが)。$t=0$では普通のCNN同様に処理を行い、これを状態$r_l(0)$とします。次に$r_l(t)$を用い、下層に予測$p_{l-1}(t)$を逆向き投射します。そして0層目(=入力画像)以外は状態$r_l(t)$を元の出力と逆向き投射された$p_{l-1}(t)$を一定の比で加算したもので更新します。その後、$r_l(t)$と$p_{l}(t)$の差分(=予測誤差)を$e_l(t)$とし、$r_l(t)$を元の出力と予測誤差$e_l(t)$を一定の比で加算したもので更新します。最後に最終時間ステップにおける出力$r_L(T)$を分類に用います。各層ごとに予測誤差を計算しますが、全体として入力画像の予測誤差を最小するようになっています。また、最小化の際にはクロスエントロピー誤差を用いています。注意したいのは予測誤差を損失関数に加えているのではなく、予測誤差が勾配法により最小化されるように状態$r_l(t)$の更新式を設定しているということです。この辺りはPredNetとは異なるので注意が必要です。

PCN with Local Recurrent Processing

上と同じメンバーの論文。

K. Han, et al. "Deep Predictive Coding Network with Local Recurrent Processing for Object Recognition". NIPS. (2018). (arXiv). (GitHub)

 

上の論文と異なり、入力画像を予測するだけでなく、各層の出力を予測するというモデル。

(Han, et al., 2018. Fig.1)

 

アルゴリズムは以下の通り。上の論文よりもシンプルな作りになっています。

ますシミュレーション的には変な感じですが、層ごとに$t=T$までの反復した計算結果を次の層に送るという構造になっています。

Reciprocal Gated Cell

論文は

A. Nayebi, D. Bear, J. Kubilius, K. Kar, S. Ganguli, D. Sussillo, J. DiCarlo, D. Yamins. "Task-Driven Convolutional Recurrent Models of the Visual System". (2018).  (arXiv). (GitHub)

 

6層程度のfeed-forward CNNモデル(例えばAlexNet)にRNNやLSTMをつけるとImagenetタスクにおける分類性能が微増するが、より深いFFCNN(例えばResNet)よりも性能は上がらなかった。そこで"Reciprocal Gated Cell"という新しいRecurrent CNNを提案。層の数・パラメータ数を減少させ、経過時間ステップを増加させた場合にはTop1 ImageNet AccuracyもResNetに匹敵。

 

Reciprocal Gated Cellは「ゲート」と「バイパス」を持ったモデルです。ゲートはLSTMなどと同様です。ただしバイパスはResNetのようなものではありません。LSTMのようなfeed-forward inhibitionをなくし、隠れ状態の初期値を0にしておくことで1度目の処理においては抑制を受けずに通過することによるバイパスです。LSTMはゲートを持ちますが、feed-forward inhibitionのためにバイパス性はありません。また、通常のRNNはバイパス性はありますが、ゲートは持ちません。

 

(Nayebi, et al., 2018. Fig.2A)

 

Reciprocal Gated Cellは2つの隠れ状態を持ち、自己およびもう一方の隠れ層への入力にFeed-back inhibitionを相互にしています。この相互作用が"Reciprocal"という名前の理由です。計算式は次のようになっています。

\begin{align*} h_{t+1}^{\ell}&=f\left(\left[1-\sigma\left(W_{ch}^{\ell} * c_{t}^{\ell}\right)\right] \circ x_{t}^{\ell}+\left[1-\sigma\left(W_{hh}^{\ell} * h_{t}^{\ell}\right)\right] \circ h_{t}^{\ell}\right)\\ c_{t+1}^{\ell}&=f\left(\left[1-\sigma\left(W_{hc}^{\ell} * h_{t}^{\ell}\right)\right] \circ x_{t}^{\ell}+\left[1-\sigma\left(W_{cc}^{\ell} * c_{t}^{\ell}\right)\right] \circ c_{t}^{\ell}\right) \end{align*}

ただし、この論文は「Reciprocal Gated Cellを提案したよ」という内容ではなく、「このモデルをベースにCRNNのモデルをTree-structured Parzen Estimatorで探索しました」という内容です。探索した結果の最適だったモデルは次図。

(Nayebi, et al., 2018. Fig.4, left)

 

比較したモデルのハイパーパラメータは詳しく載っているのに、ConvRNNのハイパーパラメータは十分に記されていないように思いました。また論文中では最後にConvRNNでマカクザルの腹側路の神経活動の時間変化を予測できることを示しています。

 

CORnet

論文は

J. Kubilius, M. Schrimpf, A. Nayebi, D. Bear, D.L.K. Yamins, J.J. DiCarlo. "CORnet: Modeling the Neural Mechanisms of Core Object Recognition". (2018). (bioRxiv). (GitHub)

 

CORは"core object recognition"(視野の中央にある物体)の略です。"cortex"と語感を揃える意図もあるそうな。1つ上のReciprocal Gated Cellの論文と著者が大きく被っているので、動機も被っている気がします。

 

モデルの設計としては、①視覚野の活動が予測可能であること(Brain-score(Schrimpf et al.,2018)が高いこと)、②シンプルなモデルであること(Feedforward simplicityで評価)、③再現が容易であること、④視覚野と内部表現が一致すること、⑤少ない層数であること、⑥単一のcanonical circuitryを積み上げたモデルであること、⑦再帰性のあること、が挙げられています。

 

今度はハイパーパラメータも全て記載されているので読みやすい論文でした。CORnetは4つのRCNNのブロックを積み重ねた構造となっています。

(Kubilius, et al., 2018. Fig.1, top)

 

そして、CORnetのブロックの種類としてZ, R, Sの3種類が提案されています。

(Kubilius, et al., 2018. Fig.1, bottom)

 

Z("zero"の意味)は再帰結合のない普通のFF-CNNです。R("Recurrent"の意味)は出力をfeed-backするモデルです。S("Skip"の意味)はskip-connectionとfeed-backを持つモデルです。このうち、CORnet-SはBrain-scoreと物体認識の精度が最も高かったということです。 

 

論文の最後にCORnetが解決できていない問題が列挙されているのでまとめておきます。

 

① 網膜やLGNに対応するユニットがないこと

これについては以下の論文参照。

J. Lindsey, S. Ocko, S. Ganguli, S. Deny. "A Unified Theory of Early Visual Representations from Retina to Cortex through Anatomically Constrained Deep CNNs". ICLR (2019). (arXiv). (GitHub)

 

② モデルが解剖学的に完全に模倣されていないこと

層数の制限や再帰結合により既存のANNよりは近いが、それでも異なる点は多です。例えばskip-connectionも脳内には存在しますが、どちらかといえば勾配の減衰を防ぐ目的でいれたとのこと。解剖学的な類似度よりも、機能的に脳に類似するモデルの計算メカニズムが脳内で利用されているという考えのようです。

 

③ Decoderが静的で再帰性を持たないこと

線形分類器はIT野に対応する最後の層の出力のみから判別していますが、それまでの出力を元に判断するという再帰性があってもよいという話です。

 

④ 学習法が生物学的妥当性を持たないこと

これはANN共通の問題ですね。

 

霊長類の腹側路は物体認識に再帰的計算を利用する

最後にこの記事を書こうと思った動機となった論文を紹介します。上で説明したCORnetが出てくる論文です。

 

K. Kar, J. Kubilius, K. Schmidt, E.B. Issa, J.J. DiCarlo . "Evidence that recurrent circuits are critical to the ventral stream’s execution of core object recognition behavior". Nat. Neurosci. (2019). (Nat. Neurosci.), (bioRxiv)

 

霊長類の腹側路は物体認識に再帰的計算を利用するという論文です。以下読んだ時のメモです。

 

① タスクは背景に浮かんでいる3Dモデルの物体(= core object)を刺激提示中の100ms内に判別し、blank後にcore objectが左右のどちらであったか選ぶというもの。サルやヒトは容易に判別できるがDCNNが判別できない画像を「Challenge画像」として定義し、反対にCNNでも判別できる画像を「Control画像」とした。

 

② サルやヒトはChallenge画像でも物体を判別できるが、Control画像に比べると判別できるようになる時間 (=IT野をSVMでデコードしたときのAccuracyが最大となる時間, object solution time (OST))は平均して30ms遅かった。この遅延中において再帰的結合による処理を行っていると推察。OSTが遅い画像刺激時のIT野の活動の分散の説明度はAlexnetなどのDCNN(4層程度)より、ResNetなどのDeeper CNN(>10層)や再帰結合をもつCORnetにおいて良く説明できた。また、より深層なCNNやCORnetにおけるChallenge画像のOSTはAlexnetにおけるChallenge画像のOSTよりも長かった。長いOSTがより再帰的な計算を必要とするならば、ResNetなどのより深いCNNは腹側路の再帰的計算を部分的に近似している可能性がある。

 

③ ResNetは重みを共有した場合にはRNNに近似できることが分かっているので、CVでのDeeperなCNNの成功は再帰計算による追加の計算を近似することによるかもしれない。CORnetは4層の再帰結合を持つCNNであるが、ResNetなどよりも総数は少なくてすんでいるので、物体認識も再帰計算を含むCNNを利用することに切り替える方がよい。

 

④ 再帰的計算の物体認識における重要性はかなり前から言われていたし、RNNのモデルも存在するが、OSTという指標を定義したことによりにより物体認識に再帰計算が使われており、その際の神経活動をRecurrent CNNでよりよく説明できるという点でインパクトがあった論文?

 

まとめ

ということでRCNNのモデルをざっと見てみました。要点は

・物体認識は反復計算を行うことでより高精度に行える。

・ResNetなどのDeeperなCNNは反復計算に当たる追加の計算をすることで高精度を出せている。

・視覚野のモデルとしては少ない層数に再帰結合を加えた方がよい。

 

というところです。これ以外にもモデルはあると思いますが、計算神経科学的な立場からのモデルはまとめたつもりです。Deep neural networkと脳の相違点はまだまだありますが、視覚系については結構近づいてきたかなという印象です。他の論文については詳しく知りたい方はhttps://github.com/takyamamoto/BNN-ANN-papersを参照ください(宣伝)。