초기 모델 : 5X5필터, 컨볼루션 레이어 뒤에 FC레이어
최초의 큰 크기의 모델 ConvNet의 부흥을 일으킴
Conv-pooling-Narm
5개의 Conv, 2개의 FC레이어를 가진다..
첫 입력 데이터는 2272273
첫 conv의 경우 1111필터가 4stride로 96개 존재
-> 55 55 96의 차원을 가짐 ->
파라미터는 1111963 = 35K
2번째 풀링레이어 3X3, stride 2
272796 파라미터는 없음 (그냥 차원축소만 담당)
이후 3개의 FC레이어를 가지고 Softmax를 통과함
Local response Normalization, ReLU를 사용했고
data augumentation을 엄청나게 사용함
SGD 모멘텀과, Dropout,
Learning rate 1e^-2를 사용하다 학습이 종료되는 시점에 1e^-10까지 떨어짐
앙상블도 사용
모델이 두개로 나뉘어 뉴런을 반반씩 사용 (GTX850 메모리 3G의 한계)
Imagenet 2012 우승!
다양한 전이학습에 사용됐으나 지금은 더 좋은 뛰어난 모델이 많다.
2013 우승
AlexNet과 같은 구조이나 stride size, 필터 수와 같은 하이퍼파라미터 개선
2014년
googlenet VGGnet 우승
각각 22, 19개 레이어로 늘어남
아주 작은 필터 3X3필터만 사용함(레이어를 늘리고 파라미터가 작아짐)
필터를 겹쳐쌓으면 더 큰 Receptive Field를 가질 수 있다
Conv와 pooling 레이어의 반복은 비슷함
레이어가 많음(학습가능한 파라미터를 가진 레이어가 많음) = 깊은 모델
레이어가 깊으면 Spatial Area가 줄어드므로 필터를 많이쓰는경향이 있다
FC7의 능력이 좋다고 함
높은 계산량을 효율적으로 수행하도록 디자인
Inception Module
Local Networe를 만듬, 서로다른 필터들을 병렬적으로 구성해 출력을 합쳐 다음 레이어로 전달
높이와 폭은 일정하지만 Depth를 쌓는 방식으로 가능해짐
그러나 Depth가 점점 늘어나므로 연산량이 엄청나게 많아지는 문제가 있음
-> Bottleneck Layer를 사용 (입력의 Depth를 줄이는 층을 사용) 일부정보 손실은 일어나지만
선형 결합을 통해서 극복이 되는 편이고 도움이 된다.
보조 분류기를 통해 앙상블효과를 가지기도 함
FC레이어가 없음(파라미터 5M <-> VGG 60M보다 현저히 적음)
(FC레이어 (Dense)는 연산이 많으므로 최근에는 아예 안쓰기도 한다고함)
152레이어 사용 (엄청 깊다!)
Residual connections이라는 방법을 사용
과연 Conv, pooling만 계속 사용하면 성능이 늘어날까?
(아니었음 training error도 같이 증가함, overfitt의 문제가 아니었다)
연구결과 optimizer가 문제가 있다고 밝혀짐
깊은레이어 중 초반 레이어의 가중치를
후반부 레이어에 복사하면 최소 얇은 모델만큼의 성능은 나올것이다.!
또한 레이어를 단순하게 쌓지 않고 Residual(잔차) mapping을 사용
레이어가 직접 H(x)를 학습하는 것이 아니라
F(x)-x(잔차)를 학습하도록 함.
다시 말해 지속적으로 변화율을 계산하도록 학습한다.
평범한 H(x) 함수를 배우는거보단 입력받은 F(x)의 변화를 학습하는것이 쉽다.
단순가설임 진짜인지는 몰?루
Residual blocks은 2개의 3x3 conv layer로 구성된다
Depth가 50이상인 경우 Google처럼 Bottlenect Layer를 사용함
매 Conv Layer 이후엔 BatchNorm을 사용하고 Xavier로 초기화함
마찬가지로 Learning rate는 점점 줄여준다.
최종 Error는 3.6%로 인간의 판단 성능보다 좋았다.
성능 좋은 전이학습을 찾는다면 Rasnet은 아주 조음!
어러 버젼중 V4가 가장 좋은 모델
MLP conv layer 네트워크에 작은 네트워크 만들기
처음에 Conv가 있고 이후 FC가 연결된다.
FC-Layer는 1x1 conv와 비슷하고
이러한 Bottlenect layer의 선구자라 의미가 있음
1) Block path를 조절 (더 많이 건너뛰게함)
2) 사실 중요한것은 레이어 깊이가 아니라, residual network 일수도?
3) ResNeXt
4) Stochastic Depth
Residual이 별로 중요치 않고 shallow/deep 네트워크 정보가 모두 중요
다양한 경로가 존재하지만 일부 경로만 이용하여 학습함
Dense block 여러 Layer의 출력이 하나의 concat layer에 들어가고
이것이 다시 conv레이어를 통과해 Feature를 잘 전달하도록 도와줌
효율적인 네트워크 구성 (파라미터를 많이 줄임)
'네트워크 구성과 연결구조는 활발하게 연구되는 분야임'
대부분 연결을 어떻게 구성할지, Depth를 어찌할지 고민함.
Model zoo가 있으니 어떻게 쓸지 잘 고민해보자