본문 바로가기

【3】최근 CNN 응용 모델 이해하고 사용하기

GoogleNet (인셉션 모듈/평균 풀링/보조 분류기)

구글넷은 2014년 이미지넷 인식 대회(ILSVRC14)에서 VGG를 이기고 우승한 알고리즘이다. 구글넷은 신경망 내부 컴퓨터 자원의 활용을 높이기 위해 계산량을 일정하게 유지하면서 신경망의 깊이와 폭을 늘릴 수 있도록 설계되었다. 구글넷의 전체적인 구조는 다음의 그림과 같다.

 

출처: 논문

 

구조도와 함께 구글넷의 특징을 몇가지 살펴 보도록 하겠다. 그림에서 표시된 세개의 부분 중 첫번째 1번이라고 표시된 보라색 상자 부분을 보자.

 

인셉션 모듈(inception module)

구조도에서 보라색 상자로 색칠되어 있는 부분을 보자. 마치 작은 신경망을 연상케 하는 모듈들이 연결되어 있다. 구글넷에서는 이렇게 신경망안에 또 다른 신경망이 있는 일명 ‘인셉션 구조(inception architecture)’를 제안했고 이 작은 보라색 상자를 인셉션 모듈이라고 한다. 인셉션 모듈을 확대해서보면 아래의 그림 중 오른쪽에 위치한 (b)가 된다. 그 전에 설명을 위해 먼저 (a)를 보겠다.

 

출처: 논문 

 

(a)를 보면 이전 층의 출력을 입력으로 받아 합성곱과 풀링을 한 후 이를 이어붙인다(concat). 동작만 보면 기존의 CNN과 비슷하지만 여기서 등장하는 구글넷의 특징은 한번에 여러 종류의 필터를 같이 사용한다는 것이다. 한번에 한 종류의 필터만 사용하는 CNN과 다르게 구글넷은 (1,1), (3,3), (5,5)의 크기가 다른 세가지 필터를 병렬로 사용한다. 이 점이 무슨 차이를 가져올지 예시를 들어보겠다. 아래에 자동차가 있는 두 이미지가 있다. 여기에 (3,3) 크기의 필터를 하나만 사용해 이미지의 특징을 찾는다고 해보자. 그림에서도 볼 수 있듯이 같은 물체일지라도 서로 다른 비율로 위치할 경우 한 종류의 필터를 사용하는 것이 효율적이지 않다는 것을 생각할 수 있다.

 

 

 

이러한 아이디어에 따라 구글넷은 다른 크기의 필터를 가진 인셉션 모듈 9개가 직렬로 배치 되어 입력 이미지의 서로 다른 영역의 특징을 찾아 축적한다.

 

단, 크기에 따라 세종류의 필터가 생긴 만큼 합성곱의 계산 또한 사이즈 별로 여러번 진행 되어 비용이 증가하는 문제가 생긴다. 그래서 최종적으로 그림 (b)처럼 (1,1)사이즈의 필터를 추가 한 구조가 인셉션 모듈을 사용하는데 (1,1) 사이즈의 필터를 통해 피처맵의 깊이(장수)를 줄일 수 있기 때문이다. 가령 (100,100,80)의 이미지에 (1,1) 필터 40개를 사용한다면 피처맵은 (100,100,40) 사이즈가 된다. 이는 입력 이미지의 채널이 80개에서 20개로 ‘차원 축소’ 되었다고 볼 수 있다. 그 결과 합성곱 연산량이 감소되는 이점을 가져온다.

 

 


② 평균 풀링(global average pooling)

 

 

두번째로 소개할 구글넷의 특징은 출력층에서 나타나며 ②번으로 표시된 분홍색 상자이다. 일반적으로 출력층 직전에 완전 연결 층(fully connected layer)을 배치하여 마지막 피처맵을 일렬로 펼친 뒤 소트프 맥스를 이용해 분류한다. 그런데 구글넷에서는 완전 연결 층 대신에 평균 풀링을 사용하여 피처맵을 벡터화 하여 소프트맥스 처리를 한다. 

 

 

 

완전 연결층을 평균 풀링으로 대체 하였을 경우 얻는 이점은 학습 매개변수의 개수가 훨씬 줄어든다는 것이다. 사실 신경망에서 대부분의 매개변수는 완전 연결 층으로 넘어가는 단계에서 생성된다. 그만큼 마지막 분류의 과정에서 연결해야하는 가지의 수가 많다는 것인데 평균 풀링을 이용하면 입력 이미지가 무엇인지 분류하는데 필요한 수많은 가지를 하나도 안쓸 수 있다. 풀링을 소개할 때도 언급 했지만 풀링은 매개변수의 사용이 전혀 없어 학습이 필요 없기 때문이다. VGG와 비교하면 전체적인 계산량은 구글넷이 많지만 평균 풀링으로 인해 매개변수의 개수는 상당히 작은 수준이다.

 

 


③ 보조 분류기(auxiliary classifier)

 

마지막으로 소개할 특징은 하늘색 박스로 표시한 보조 분류기다. 구글넷은 인셉션 모듈 9개를 이어붙인 깊은 신경망의 구조를 띄고 있다. 여러분도 알다시피 신경망이 깊어지면 기울기 손실(vanishing gradient)문제를 피하기 어렵다. 기울기 손실은 신경망의 학습에서 역전파(back propagation)를 이용해  매개변수의 값을 업데이트 하는데 이때 갱신의 기준이 되는 기울기가 0이 되어버리는 문제를 말한다. 더이상 매개변수의 값이 갱신되지않아 결국 신경망의 학습이 잘 되지 않는 것이다. 구글넷에서는 이러한 문제를 해결하기 위해 아래의 그림과 같은 보조 분류기 두개를 신경망 구조안에 추가했다.

 

 

 

이 보조 분류기는 신경망이 학습하는 과정에서만 쓰이고 학습이 끝난 뒤에는 신경망에서 삭제된다. 

 

정리해보면 구글넷은 신경망을 더 깊게 만들어 성능을 향상시키면서도 연산량을 늘리지 않는 CNN 구조라고 할 수 있다. 이때 신경망을 깊게 만들기 위해 인셉션 구조를 개발, 연산량을 줄이기 위해 완전 연결층을 평균 풀링으로 대체하고 (1,1) 필터를 사용 했다. 추가로 깊은 신경망에서 발생할 수 있는 기울기 소실 문제를 보조 분류기를 학습과정에 포함시켜 해결하였다. 간단히 정리를 해도 복잡한 구조의 구글넷은 우승이라는 타이틀에 비해 잘 사용되지 않았다. 그리고 몇년 뒤 구글넷을 개선시킨 인셉션(Inception) 모델이 등장하게 되었다.

 

여기까지 구글넷의 이론적인 부분을 살펴 보았다.

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 ondslee0808@gmail.com

 

'【3】최근 CNN 응용 모델 이해하고 사용하기' 카테고리의 다른 글

이미지 분류하기 - 실습  (0) 2020.02.10
ResNet (이론)  (0) 2020.02.09
VGGNet (이론)  (0) 2020.02.07