[paper review] Going Deeper with Convolutions
#Vision #Segmentaion #Inception
Inception은 deep network structure와 영화 Inception에서 나왔던 대사인 "we need to go deeper"의 결합으로 이름을 붙이게 되었다.
Inception은 심층 컨볼루션 신경망 아키텍처다. 네트워크 내 리퓨팅 리소스의 활용률을 향상시키며, 계산을 일정하게 유지하면서 네트워크 깊이와 폭을 늘릴 수 있도록 조작되어 설계된다.
또한 Inception은 새로운 차원의 새로운 것을 도입한다는 의미를 가지고 있고, 인셉션 모듈의 형태로 구성되며 네트워크 깊이가 증가한다는 직접적인 의미를 가지고 있다.
메모리 효율성으로 인해 하위 계층은 전통적인 컨볼루션 방식, 상위 계층만 인셉션 모듈을 사용하는 것이 유리하다.
인셉션 아키텍처의 장점은 무엇인가?
1. 계산 복잡성 상관 없이 각 단계에서 폭과 단계수, 장치의 수를 크게 늘릴 수 있다.
2. 시각 정보가 다양한 척도로 처리된 후 다음 단계가 동시에 다른 척도의 특징을 추상화 할 수 있다.
인셉션 아키텍처를 약간 성능이 떨어지지만 계산적으로 더 저렴한 모델을 만드는 것이, 비인셉션을 사용하는 것보다 2~
배 더 빠르다.
심층 신경망의 성능을 향상시키는 방법으로는
1. 신경망의 depth를 증가시키는, 즉 수준수를 증가시키는 방법
2. width를 증가시키는, 즉 각 레벨의 단위수를 증가시키는 방법 이 있다.
하지만 단점이 따른다.
1. 크기가 크면 매개변수 수가 많아져서 과적합이 되기 쉽다.
트레이닝 데이터의 레이블링 된 예제 수가 제한되는 경우가 더 많고, 비용이 많이 든다.
2. 무분별하게 크기를 늘리는 것은 계산 리소스의 사용을 크게 증가시킨다.
따라서 위 두가지 단점을 해결하는 방법으로 '완전히 연결된 아키텍처보다 sparse한 형태로 변경하는 것'이다.
convolution은 이전 계층의 패치에 대한 조밀한 연결들로 구현된다.
변환 불변성 가정은 네트워크가 convolution building block으로 구축되는 것이다.
마지막 계층의 상관 관계가 높은 단위의 그룹으로 군집화(= 계층별 구성) -> 이런 클러스터는 다음 계층의 단위를 형성 -> 이전 계층의 단위(= 입력 이미지의 일부 영역)에 연결 (필터 뱅크로 그룹화 됨)
이런 순서로 진행되며, 하위 계층(=입력 가까이에 있는 계층)에서는 상관관계가 있는 단위로 로컬 영역에 집중된다.
Network-in-Network는 신경망의 표현력을 증가시키기 위해 사용한다. 컨볼루션 레이어에 적용할 때, 일반적으로 1x1 컨볼루션 레이어를 사용한다.
1x1 컨볼루션은 1. 계산 병목 형상을 제거하기 위한 차원 축소로 사용된다. 2. 네트워크 크기를 성능저하 없이 늘린다. 는 점에서 성능 저하 없이 깊이 뿐만 아니라 네트워크 폭도 높일 수 있는 장점이 있다.
인셉션 아키텍처는 1x1, 3x3, 5x5 크기를 필터링 하도록 제한된다. 더 높은 층으로 이동할 수록 3x3과 5x5 컨볼루션의 비율이 증가해야 한다. 이렇게 함으로써 차원 축소를 하여 파라미터 개수를 줄이고, 계산 리소스를 줄일 수 있게 된다.
GoogLeNet은 22개의 심층 신경망 구조로 이루어져있고, 인셉션 모듈 아키텍처로 구성하고 있다.
GooLeNet은 매개변수를 12배 적게 사용하면서도 훨씬 정확한 모델을 만들어냈다.
Inception 모델의 모든 필터는 학습되었고, Inception 계층을 여러번 반복되어 GoogLeNet 모델의 22계층 심층 모델이 되었다.
inception 모듈 내부를 포함한 모든 convolution에는 ReLu가 사용된다.
네트워크 깊이는 22개, 풀링 포함 시 27개 계층해서 전체 계층은 100개 정도 된다.
GoogLeNet은 총 9개의 Inception module을 사용했다.
1) Type : layer에 사용된 type |
또한 완전 연결된 계층에서 평균 풀링을 쓰면 성능이 향상되지만 완전히 연결된 계층을 제거한 후에도 드롭아웃의 사용은 필수적인 것으로 나타났다.
중간 계층에 연결된 보조 분류기를 추가함으로써 분류기의 아래 단계는 차별을 장려하고, 역전파되는 그레이디언트 신호를 증가시키며, 추가 정규화가 됨을 기대할 수 있다.
보조 분류기를 포함하여 측면에 있는 추가 네트워크의 구조는 아래와 같다.
- average pooling 5x5 filter size/stride 3 적용, (4a) stage output 4x4x512 (4d) stage output 4x4x528
- 128개의 필터가 포함된 1x1 convolution
- 1024개의 유닛과 정류된 선형 활성화로 완전히 연결된 레이어
- 손실된 출력의 비율이 70%인 드롭아웃 계층
- 분류기로써 소프트맥스 손실을 가진 선형 계층
GoogLeNet은 gpu를 사용하여 훈련될 수 있으며 가장 큰 제한은 메모리 사용량이다.
0.9 모멘텀의 비동기 확률적 경사 하강, 고정 학습 속도 일정을 사용했다.
ILSVRC 2014 Classification Challenge Setup and Results 는 다음과 같다.
traing 120만개 + val 5만개 + test 10만개의 데이터에서, 첫번째 예측 등급과 지상 진리를 비교하는 상위 1의 정확도 비율과 처음 5개의 예측 클래스에 비교한 상위 5의 오류율이 나왔다.
1. GoogLeNet 7가지 버전을 앙상블 예측 훈련
2. 4개의 척도로 이미지 크기를 조정
224x224 크롭 -> 이미지당 4x3x6x2=144개가
생성됨
3. 소프트맥스 확률로 최종 예측값 구함
(최대풀링과 분류기했을 때 성능이 더 낮았음)
GoogLeNet은 top-5 test error가 66.7%로 우승했다.
ILSVRC 2014 Detection Challenge Setup and Results 는 다음과 같다.
200개의 가능한 클래스 중에서 이미지의 개체 주위에 경계 상자를 생성하는 것으로, 탐지된 개체는 실제 클래스와 일치하고 경계 상자가 50% 이상 겹칠 경우 올바른 개체로 계산된다.
GoogLeNet은 앙상블을 사용하여 더 강력한 결과를 얻는다.
결론은 이런 방법은 계산이 조금 증가하지만 좋은 결과를 얻을 수 있고, 컨텍스트와 경계 상자 회귀를 수행하지 않아도 결과가 괜찮은 장점이 있고, 덜 비싼 네트워크로 좋은 성능 실현 가능하다는 점이다.