본문 바로가기
카테고리 없음

AlexNet ImageNet Claasification with Deep Convolutional Neural Networks _ Geoffery E. Hinton

by 포로리다 2023. 8. 31.
728x90
반응형
SMALL

 

 

1. 아키텍쳐에 대한 질문

- 6천만 파라미터

- 뉴런 65만 개

2. 학습 방식

3. 성능 개선 전략

4. 평가 방식

 

* Abstract에서 중요 부분 확인, 학습 목표 찾기

 

6천만 개의 파라미터와 65만 개의 뉴런, 컨볼루션 레이어 5개, 이 중 일부는 최대 풀링 레이어

 

non-saturating neurons = Relu 사용

 

 dropout 규제 전략, 오버피팅 해소 전략, 완전 연결 계층

초창기엔 완전연결계층이 과적합의 주범이라고 생각하고 완전연결계층에만  드랍아웃 하는 것에 초점을 두었음.

 

- Dataset  

imagenet은 22000 카테고리에 속하는 15 million labeled high-resolution images  1500만 개 이상의 라벨링된 고해상도 이미지로 구성된 데이터 셋

약 1000개의 카테고리 지님

(최소 한 개 라벨당 1000개 정도가 있어야 학습 가능하지만, 일반적으로 최소한 10000 만 개 필요)

입력이미지가 동일한 이미지가 들어와 줘야 플래튼 레이어가 일정함. 완전연결계층 때문임. 

 

독창성 : multiple GPU 사용

 

overlapping pooling 했을 때 (겹쳐서 풀링하면) 오버핏이 덜 나온다. 

여기서는 스트라이드 유지하고 사이즈를 키워서 오버래핑하는 것을 말함.

3x3를 주면서 스트라이드를 2로 고정하는 것을 말함.

 

처음에만 패딩 주지 않고 뒤에는 패딩을 주기 때문에 사이즈가 유지됨을 확인할 수 있다.

마지막 컨볼루션 레이어의 마지막 피쳐맵 사이즈는 모델 복잡도에 직결되는 부분이다. w 수에 직접적으로 영향을 주는 부분이다. 컨볼루션 레이어를 더 깊게 쌓자니 기울기 소실 발생우려가 존재함.

 오퍼빗이 나옴. 120만의 데이터의 개수가 6000만 파라미터의 w수 학습시키기에는 불충분하다.

데이터 핸들링을 해서 데이터 복잡도를 올리고 모델 핸들링을 통해 모델 복잡도를 낮춰야 해결할 수 있음.

 

Data Augmentation 데이터 증강

놀고 있는 CPU이용해서  GPU에서 학습하는 동안 배치단위로 불러들여서 증강함.

배치가 하드디스크에 들어가 있으면 CPU에서 어그맨테이션,  GPU에서는 학습. 반복.

타임코스트가 더 발생하지 않는다. 

 1 장으로부터 -> a factor of 2048 

 

momentum = 0.9  현재 기울기가 0이더라도 기울기 방향으로 0.9만큼 기세를 주겠다.

weight decay = 0.0005  weight 감소 파라미터

 

GoogleNet = inception

convolution layer를 매우 깊게 쌓음 약 22층 정도(알렉스넷 conv 5개 쌓았는데 22층 쌓음)

사람보다 정확도가 높아짐 -> 6% 까지 떨어짐

 

1. 아키텍쳐 정답 코드 안 보고 쌓기

2. 리뷰 목표

- 아키텍쳐

- 학습방식

- 성능 개선 전략의 독특한 점

 

detection디텍션 은 이미지가 뭔지 맞추는 게 아니라 이미지에 어떤 객체가 어느 위치에 있는지 맞추는 것

 

 14년에 알렉스넷보다 w개수 12배나 더 적은 파라미터 썼음

 

6천만 파라미터의 5천만 개가 풀리 커넥티드에 있음. 플리커넥티드가 3층이라면 1층만 쓰는 것이 비결

 

모델 크기가 크다 = 모델 복잡도가 높다 = 웨이트 개수, 파라미터 수 가 많다. = 오버 피팅 야기하기 쉽다. 하이퀄리티 트리이닝셋 만들기가 어렵기 때문에bottleneck을 만들어 냄. imagenet과 같이 데이터 증축할 때 카테고리 분류 시 전문가 고용해야 하면 시간, 비용 적인 buttleneck이 많이 필요하므로 데이터 증축하기가 어려움. 

-> 22층이지만 8층보다 웨이트 개수가 적다는 것을 강조함. (=알렉스넷보다 12배 적다.)

 

마지막에  max pool이 아니라 avg pool(=global avg pooling )로 풀링을 걸어버림 -> 오히려 추상화 시킴.

논문에서도 편의상 성능을 기대하지 않고 사용했는데 성능이 미세하게 좋아짐 사실 거의 유지된 수준. 

원래 5천 만개가 나올 것을 100만 개로 줄였는데도 성능이 유지되었음. (발견)

1x1으로 줄인다는 것은 w의 개수를 줄인다는 것  = 오버핏을 해소한다. 

cropping

 

VGGNET - Oxford, 2014

 

네트웤 깊이와 정확도 간 상관관계를 연구함.

깊이는 16~19층까지 쌓는 동안 성능이 매우 좋아짐. (발견)

차별화 : 3x3 매우 작은 필터 하나를 사용

구글넷과 성능에서 큰 차이가 없었음.

결론: 깊을 수록 좋다. ㄷㄷㅇㅅ  즉, deep하면 deep할 수록 좋다!

깊게 쌓을 수록 비선형성이 많이 풀리니까.

(알렉스넷은 8층밖에 가지 못했음, 구글넷은 인셉션 모듈, 애버리지풀링 등 여러 전략을 많이 사용하여 22층)

3x3 두 층 쌓으면 5x5와 같은 receptive field 같는 효과를 지님.

5x5하나 쓰는 것보다 3x3 두 개 쓰는 것이 낫다.

5x5

receptive field  = 25
w = 25
activation fuction = 1
3x3 2층

receptive field  = 25
w = 9 x 2 = 18
activation fuction =2

 

 

local response normalisation쓰면 오히려 안 좋아졌다고 제시함.

알렉스넷에서 차용한 것 : Relu & dropout

 

💡 16 layer : 시작 64채널(2) -(2) - (3)- (3)- (3)마지막 512채널

💡19 layer : 시작 64채널(2) - (2) - (4)- (4) - (4)마지막 512채널

 

 

 

728x90
반응형
LIST