--- tags: B-CNN, , , --- # B-CNN: Branch Convolutional Neural Network for Hierarchical Classification ### (階層型分類のための分岐型畳み込みニューラルネットワーク) - [論文(https://arxiv.org/abs/1709.09890)](https://arxiv.org/abs/1709.09890) - [参考(https://accel-brain.co.jp/machine-learning/branch-convolutional-neural-network-for-hierarchical-classification/)](https://accel-brain.co.jp/machine-learning/branch-convolutional-neural-network-for-hierarchical-classification/) CNN画像分類器は、単一の出力層を持つ連続した畳み込み層を持つように設計されている。 - 階層的なレイヤー構造に基づいて、入力データを抽象化した内部表現を学習するように設計されている。 ## B-CNNモデル ## 0. Abstract - 対象クラスの階層構造に対応する畳み込み層に沿って、複数の予測値を出力する。 - B-CNNモデルの学習には、分岐学習戦略(BT-strategy)という新しい学習戦略が導入され、事前知識の厳密さと損失を最小化するために出力層にパラメータを追加する自由度のバランスをとる。 - 出力段階において、中間層で粗い概念から細かい概念を順次学習させることができ、CNNモデルの分類性能を高めるために、階層的な事前知識を採用できることを示す。 ------------------------------------------------------------------------ ## 1. Introduction * 一般的なCNNモデルは、出力が逐次的であり、ネットワークの分岐がなく、唯一の予測値を出力するように署名されている。 * クラス間には、特定のカテゴリーへの順序付けという性質があり、これを考慮した分類が階層的な方法で行えることがある。 * 階層型分類の利点は、誤りを小分類に限定できることで、平面型分類よりも形成的であることです。 * CNNモデルにクラスの階層を埋め込む可能性があるのは、<span class="att0">下位層が画像の低レベルの特徴を、上位層が高レベルの特徴を捉えることができるため</span>である。 * 階層的な事前情報が分類器への良いガイドとなり、最終的な分類を高めることも可能である。 * 本論文では、階層的なカテゴリ関係の事前知識を統合した特別なCNNベースのモデル(B-CNN)を紹介します。 * B-CNNは、複数のブランチネットワークを含み、階層的に予測を行うため、Branch Convolutional Neural Network (B-CNN)と名付けられる。 * B-CNNモデルは、CNNの各層がネットワーク内の特徴の階層的な性質を含んでいるというアイデアに基づいている。 * B-CNNは、画像分類タスクにおいて、高い精度を達成できる。 ## 2. Related Work * 既存のCNNモデル内の潜在的な弱点に焦点を当て、それを改善するための代替品や戦略を見つける試みが行われている。 * B-CNNモデルは、既存のCNNをビルディングブロックとして利用し、CNNの自然な階層的特性を利用し、カスタマイズされた訓練戦略で性能を向上させるものである。 * クラスの階層は、人間によって事前に定義されるか、トップダウンとボトムアップのアプローチによって自動的に構築される。 * 最近、木構造の事前定義とCNNモデルの組み合わせが注目されている。 ----- ## **3. Model Description** ### 3.1.0 Branch Convolutional Neural Network ![](https://i.imgur.com/Q2IyT4L.jpg) * ラベルツリー内の細かいラベルはターゲットクラスであり、葉として表示される。 * ラベルツリーの異なる層を指すためにレベル、ニューラルネットワークの層を指すためにレイヤー、B-CNNの分岐出力ネットを指すためにブランチを使用する * B-CNNモデルは、従来の畳み込みニューラルネットワークを<span class="att0">ビルディングブロック</span>として使用し、内部出力ブランチを持つネットワークを構築する * B-CNNの出力枝網は、ラベルツリーの対応するレベルの予測を生成し、各枝の上部には全結合層とSoftmax関数が使用される * B-CNNモデルは、対応するラベルツリーが持つレベルの数だけ予測値を出力し、各レベルの損失は損失重み分布に基づく最終損失関数に寄与する。 ### 3.1.1 Concatenate Branch 各ブロックの枝から出力された特徴量ベクトルを統合する方法は、主に2つの方法がある。 - Concatenation 各枝から出力された特徴量ベクトルを、単純に結合 - Pooling 各枝から出力された特徴量ベクトルを、平均や最大値などの統計量で集約 また、統合する際に、それぞれのBrachから出力された特徴量ベクトルの形状は異なるため、Flattenなどで成型する必要がある。このとき、空間的な情報の欠如や局所特徴の減衰される可能性がある。特に局所的なエッジや角などの特徴が失われる可能背がある。 ### 3.2. Loss Function 損失関数は、すべての粗い予測損失と見つける予測損失の重み付き合計 ![](https://i.imgur.com/vjW2L6k.jpg) $i$: ミニバッチの$i$番目のサンプル $K$: ラベルツリーの粗いレベルの数 $Ak$: 損失関数に寄与する$k$番目のレベルの損失重み $f_j$: モデルの最終層から出力されるクラススコアのベクトル$f$の$j$番目の要素を示す 損失関数は全てのレベルの損失を考慮し、構造先行がモデル全体の内部ガイドの役割を果たし、勾配を浅い層に戻すことを容易にする。 ### 3.3. Loss Weight * $Ak$は、各分岐ネットワークが最終的な損失関数にどの程度寄与するかを定義しており、相対的な値であり、0から1の間の値(両方含む)であり、合計は1になるように設定される。 * 損失重みを[0, 0, 1]に固定すると、最後の出力枝だけが学習可能な従来のCNNモデルに収束する。 * 損失重みが[1, 0, 0]の場合、ネットワーク全体の前段部分のみを活性化し、2つ上の階層は未学習のままとなる。 * 損失重みが[0.98, 0.01, 0.01]の場合、モデルは低レベルの特徴抽出を重視するが、深層も少し学習させたいことを意味する。 ### 3.4. Branch Training Strategy * ブランチトレーニング戦略(BT-strategy)は、消失勾配問題の影響が少ないエンドツーエンドのトレーニング手順を達成するために、損失重み分布の可能性を利用することを目的としている。 * BT-strategyはB-CNNモデルの学習中に損失重み分布を変更することができる。 * 損失重みの割り当てにおける最大の値は"focus"と見なすことができる。通常、分布の"focus"は、低レベルから高レベルへ(粗いものから細かいものへ)移行する。 * "focus"は、すべてのレベルが同じように重要である可能性があるため、分布に必要ではない。 * このように、粗い指示で下位の特徴を先に抽出し、後で細かい指示でパラメータを微調整することで、分類器の消滅をある程度防ぐことができる。 * BT-strategyを使用することで、ネットワークが非常に深い場合でも、下層のパラメータ更新が非常に困難になる消失勾配問題をある程度防ぐことができる。 ----------- ## **4. Experiments** ### 4.1. Overview * 実験の目的は、3つのベンチマークデータセットにおいて、階層的な分類タスクを処理するB-CNNモデルの性能を評価し、従来のCNNモデルと比較することである。 * すべての実験で使用したオプティマイザは確率的勾配降下法(SGD)であり、モーメンタムは0.9に設定した。 * 学習エポック数はすべてのデータセットで80未満に制限されている。 ### 4.2. Hierarchical Classification ベースラインモデルBと対応するブランチネットワークを用いて、学習中のB-CNNモデルの挙動を示す。 学習エポック数は60に制限し、学習率を変化させた。 CIFAR-10データセットを使用し、クラスの自然な分類のためにラベルツリーを手動で構築している。 モデルは、ラベルツリーに基づいて、粗い1レベル、粗い2レベル、細かいレベルの3つの精度結果を出力する。 Coarse 1レベルは最も高い精度を達成し、最も速く学習され、次にcoarse 2レベル、fineレベルが続く。 coarse 1ブランチより前の層は、輸送と動物を高い信頼性で区別するのに十分な特徴を学習している。 この結果は、B-CNNが階層的な分類に有用であることを確認するものであり、常識と一致するものである。 <!-- <span class="att0"></span> --> <style> .att0 {color: #eb4034;} .att1 {color: #3465eb;} .att2 {color: #69c976;} </style>