Branch Convolutional Neural Networkの階層分類機能

問題設定:ラベル付きサンプルの階層構造

ラベル付きサンプルを対象とした畳み込みニューラルネットワーク(Convolutional Neural Networks: CNNs)による画像分類器は、従来ならば単一の出力層を有する順伝播の畳み込み層を持つように設計されてきた。これは、ラベル付きサンプルの全てのクラスを等しく排他的に扱う必要があるという前提に基づいている。

しかし、一部のラベルは他のラベルよりも区別することが難しい場合もある。例えば、複数のラベル間の関連が階層的に構造化されている場合だ。「猫」と「犬」は通常「ペット」としてグループ化できる。一方、「椅子」と「ベッド」は「家具」のグループに属すると考えられるだろう。多くの場合、「猫」と「犬」を識別することよりも、「猫」と「ベッド」を識別することの方が簡単である。

典型的なニューラルネットワークのSoftmax層は、このような諸概念の階層的に分化した構造を無視した上で、「猫」、「犬」、「椅子」、「ベッド」のSoftmax確率を一次元のベクトルとして一纏めに、つまり「フラット(flat)に」してしまう。ラベル付きサンプルを観察するシステムの観点に立つならば、初めに「ペット」と「家具」を識別した上で、「猫」と「犬」の識別や「椅子」と「ベッド」の識別に取り組む方がより多くの利得を得られる。何故なら、たとえ「犬」と「猫」の識別を誤った場合でも、その識別対象が少なからず「家具」のカテゴリに属した概念ではないということがわかるためだ。

問題解決策:Branch Convolutional Neural Network(B-CNN)

多くのCNNは、階層的なネットワーク構造に基づき、入力された観測データ点の抽象化された内部表現を学習するように設計されている。このことからZhu, X., & Bain, M. (2017)は、このCNNの階層構造を応用することで、階層的に分化しているラベル付きサンプルの予測を可能にしたモデルを提案している。そのBranch Convolutional Neural Network(B-CNN)のモデルは、ラベル間の階層構造に対応した「連結畳み込み層(concatenated convolutional layers)」を導入することで、相対的に粗いものから細かいものまで順序付けられた複数の予測結果を出力する。

ラベル間の階層構造はツリー構造としても表現できる。ツリーのルートに近いノードほど、その指し示す概念の粒度は粗くなる。逆にルートから遠く枝分かれした下部の子ノードほど、その指し示す概念は細分化された個別具体的な概念となる。B-CNNのネットワーク構造は、ラベル間の階層構造がこのツリー構造に従うという事前知識の形式と見做すことができる。

Zhu, X., & Bain, M. (2017). B-CNN: branch convolutional neural network for hierarchical classification. arXiv preprint arXiv:1709.09890., p2.

誤差関数の設計

上図からもわかるように、B-CNNの誤差関数は全ての階層におけるクロスエントロピー誤差の加重和として設計されている。

$$L_i = \sum_{k=1}^{K}-A_k \log \left(\frac{e^{f^k_{y_i}}}{\sum_{j}^{}e^{f^k_j}}\right) \tag{1}$$

ここで、iはミニバッチにおけるi番目のサンプルを表わす。Kはラベルツリー(label tree)における階層数、つまり粒度水準(coarse levels)の個数を意味する。$$A_k$$はk階層目の誤差関数の重みを表わす。$$f_j$$は最終隠れ層から伝播されたベクトルfにおけるj番目の要素を表わす。

この誤差関数は、全ての階層での誤差を考慮することで、一つ前の構造がモデル全体に対する内的な方向付けの役割を果たす。そのため、ネットワーク全体として、勾配を浅い層に戻し易くしている。

$$A_k$$のパラメタはトレードオフのハイパーパラメタとして機能する。このハイパーパラメタにより、モデルの設計者はどの階層の誤差を重視するべきなのかを方向付けることができるようになる。

参考文献

  • Zhu, X., & Bain, M. (2017). B-CNN: branch convolutional neural network for hierarchical classification. arXiv preprint arXiv:1709.09890.

執筆者