B-CNN: Branch Convolutional Neural Network for Hierarchical Classification 리뷰

신희준·2024년 1월 9일
0

Paper Review

목록 보기
13/30

Paper : B-CNN: Branch Convolutional Neural Network for Hierarchical Classification (Xinqi Zhu, Michael Bain / arxiv)

Motivation

  1. Hierarchical한 label structure를 가진 데이터의 classification 방법론에 대해 공부
  2. CNN intermediate layer의 역할에 대한 고찰

Overview

CNN classification에서는 대부분 마지막 layer의 feature를 이용해서 분류를 수행한다. 하지만 hieracical한 category를 가지는 데이터의 경우에는 그렇게 "flat"한 방식으로 분류하기보다는 그러한 hierarchy를 고려해주는 것이 더욱 효율적일 수 있다.

예를 들어, "개"나 "고양이"는 "동물"이라는 상위 category에 속할 수 있고, "사과"나 "오렌지"는 "과일"에 속할 수 있다. 이를 모두 관련없는 각각의 output branch로 학습시키는 것보다는 네트워크로 하여금 이를 인지할 수 있도록 해주면 더욱 효과적일 것이라는 것이 이 논문의 핵심

특히 CNN architecture는 기본적으로 hierarchical한 특성을 가지고 있다. 예를 들어서 CNN의 lower layer에서는 이미지의 전체적인 모양이나 색 등의 정보를, higher layer에서는 더욱 abstract한 정보를 담게 된다.

이러한 동기를 바탕으로 본 논문의 저자들은 CNN의 중간 layer에서 branch를 달아 coarse -> fine prediction을 hierarchical한 label과 매칭시켜 학습시켜 좋은 성능을 얻었다.

Method

위 그림은 전반적인 B-CNN (Branch Convolutional Neural Network)의 구조이다. 여러개의 CNN layer를 갖는 어떠한 CNN에도 적용이 가능하며, (b)와 같이 hierarchical한 label이 정의된 상태에서 CNN의 coarse한 branch에서는 더욱 상위 category를 구분할 수 있도록, fine한 branch에서는 더욱 하위 category를 구분할 수 있도록 학습시킨다.

Loss function은 아래와 같이 정의된다.

Li=k=1KAklog(efyikjefyik)L_i=\sum^K_{k=1}-A_klog(\frac{e^{f^k_{y_i}}}{\sum_je^{f^k_{y_i}}})

여기서 ii는 sample, kk는 label tree의 coarse level 수이고, AkA_k는 각 level의 weight이다.

예를 들어, 쥐가 있는 그림의 label은 [natural, small mammals, mouse]일 것이고, 위 그림의 (a)에서 Coarse 1 branch에서는 "natural", Coarse 2에서는 "small mammals", 그 다음은 "mouse"를 output으로 내도록 학습이 된다.

Discussion

분류 문제를 푸는데는 label structure를 이해하는 것이 매우 중요하다고 생각한다. 그리고 이러한 label의 상관관계에 대한 정보를 네트워크에 넣어준다면 훨씬 더 문제를 풀기 쉬워질 것이라 생각한다. 매우 simple한 아이디어이지만 잘 설계한다면 효과적일 것 같다.

profile
공부하고 싶은 사람

0개의 댓글