일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- R시각화
- ggplot
- lstm
- R그래프
- 머신러닝
- AI
- r
- 데이터시각화
- Python
- 데이터
- 딥러닝
- SQL
- 기계학습
- 빅데이터
- Hadoop
- 자연어처리
- 빅데이터처리
- 데이터분석
- pandas
- Deeplearning
- NLP
- 데이터처리
- R프로그래밍
- 그래프
- word2vec
- CNN
- HIVE
- 그래프시각화
- 하둡
- 주가예측
- Today
- Total
욱이의 냉철한 공부
[CNN 개념정리] CNN의 발전, 모델 요약정리 1 (AlexNet ~ GoogLeNet) 본문
[CNN 개념정리] CNN의 발전, 모델 요약정리 1 (AlexNet ~ GoogLeNet)
냉철한 욱 2020. 4. 21. 19:43* 참고자료 및 강의
- cs231n 우리말 해석 강의
https://www.youtube.com/watch?v=y1dBz6QPxBc&list=PL1Kb3QTCLIVtyOuMgyVgT-OeW0PYXl3j5&index=6
- Coursera, Andrew Ng교수님 인터넷 강의
* 목차
1. 모델 발전 개요
2. 모델1 : LeNet-5
3. 모델2: AlexNet
4. 모델3 : ZFNet
5. 모델4 : VGG
6. 모델5 : GoogLeNet
7. 모델6 : ResNet
8. 모델7 : DenseNet
1. 모델 발전 개요
- 모델 목표
더 깊은 네트워크를 만들면서, 성능을 높여간다.
- 모델 목표를 위해 중요한 것.
HOW?
어떻게 학습능력을 높여서 더 깊은 네트워크를 학습했는가?
- 어떻게 학습능력을 높이는가?
1. LeNet-5 : CNN 적용하면서, 깊은 네트워크(4Layer) 학습하여 성능 상승
2. AlexNet : GPU, ReLU함수 사용하면서, 깊은 네트워크(8Layer) 학습하여 성능 상승
3. ZFNet : 하이퍼파라미터 최적화하면서, 깊은 네트워크(8Layer) 학습하여 성능 상승
4. VGGNet : 작은 필터 수(3x3) 규칙적으로 적용하면서, 깊은 네트워크(19Layer) 학습하여 성능 상승
5. GoogleNet : Inception 모듈 적용하여 효율성 높이면서, 더 깊고 넓은 네트워크(22Layer) 학습하여 성능 상승
6. ResNet : Skip connection적용하여 기울기소실문제 해결하면서,
매우 깊은 네트워크(152Layer) 학습하여 성능 상승
7. DenseNet : 진화된 Skip connection과 bottleneck layers를 적용하면서,
알짜배기 Feature만 가진 매우 깊은 네트워크를 학습하여 성능 상승
2. 모델1 : LeNet-5
- 동기 (기존의 문제)
기존의 fully-connected neural network이 갖고 있는 한계
=> 파라미터 수 많고, 연산량 많다.
- 핵심 아이디어
CNN(Convolutional Neural Network)의 개념 활용.
- 모델 설명
파라미터 : 60,000개
연산량 : 34만개
convolution layer : 3개
sub-sampling layer : 2개
fully-connected layer : 1개
- 모델 특징
네트워크 깊어질수록 높이와 폭이 줄어짐, 채널수는 증가
시그모이드, tanh 사용
3. 모델2 : AlexNet
- 목표
더 깊은 네트워크를 만들면서, 성능을 높여간다.
- 동기 (기존의 문제)
고해상도 이미지에 대규모로 Convolutional Neural Network를 적용하기에는 여전히 많은 연산량 소모
이와 함께 적은 데이터셋 있으니, 과적합을 막아야 했다.
- 핵심 아이디어
1) 학습 최적화
-> ReLU 활성화 함수
-> 2개의 GPU 사용
2) 과적합 방지
-> Data Augmentation
-> Dropout
- 모델 설명
파라미터 : 약 6200만개
연산량 : 약 6억 3000만개
convolution layer : 5개
pooling layer : 3개
Local Response Normalization layer : 2개
fully-connected layer : 3개
총 layer : 8개
4. 모델3 : ZFNet
- 목표
더 깊은 네트워크를 만들면서, 성능을 높여간다.
- 동기 (기존의 문제)
AlexNet에서의 최적의 hyper-parameter의 조합을 찾아 성능 높여만 했다.
- 핵심 아이디어
1) hyper-parameter 최적화
-> CONV1 : 11X11(stride 4)필터크기를 7X7(stride 2)필터크기로 변환
-> CONV3, 4, 5 : 필터 384, 384, 256을 각각 512, 1024, 512로 변환
5. 모델4 : VGGnet
- 목표
더 깊은 네트워크를 만들면서, 성능을 높여간다.
- 동기 (기존의 문제)
더 깊은 네트워크를 형성하기 위해, 단순하고 작은 필터 크기를 적용해야만 했다.
그래야 파라미터 수가 즐어들고 학습속도 향상된다.
(하지만 16layer를 넘어가면 별 이득이 없음.)
- 핵심 아이디어
1) 단순한 네트워크 구조
-> 모든 convolution layer에 "3x3 (stride 1, pad 1)" 필터 적용
-> 모든 pooling layer에 "2x2 (stride 2)" 적용
2) 높이, 너비는 작아지는데, 필터는 2배로 계속 규칙적 상승 => 비율 체계적
3) 기울기 소실 문제 해결
먼저 11-layer의 비교적 간단한 구조-A를 학습시킨 후,
더 깊은 나머지 구조(16-layer)를 학습할 때는 처음 4 layer와 마지막 fully-connected layer의 경우는 구조-A의 학습 결과로 초기값을 설정한 후 학습
- 모델 설명
파라미터 : 1억 3800만개
convolution layer : 13개
pooling layer : 5개
fully-connected layer : 3개
총 layer : 16개
- 모델 단점
파라미터 개수가 너무 많다.
특히 fully-connected layer에서의 파라미터는 너무 많다.
해결책 : Avg pooling layer 사용 <- GoogleNet에서 적용
6. 모델5 : GoogLeNet
- 목표
더 깊고, 넓은 네트워크를 만들면서, 성능을 높여간다.
깊은 네트워크 : layer의 수 상승
넓은 네트워크 : unit의 수 상승
- 동기 (기존의 문제)
더 깊고, 넓은 네트워크를 형성하기 위해, 효율성(연산비용 감소)을 가져야만 했다.
더 깊고 넓은 네트워크(파라미터 증가)를 형성하면 overfiting, 연산량(연산비용) 증가 등의 문제가 생긴다.
=> 이를 위해 Inception(1x1사용) 개념을 적용
- 핵심 아이디어
1) inception module : Optimal local sparse 개념
cnn자체가 dense한 fully-connected 구조에서 sparse한 connected 구조로 변환
이를 통해 연산량을 줄이고 더 깊은 네트워크를 형성
inception module은 더 발전해서 지역적으로 최적의 sparse한 구조(효율성 상승)를 형성한다고 할 수 있음.
어떻게 할 수 있냐? : 다양한 지역의 피쳐를 추출할 수 있는 스케일을 적용
=> 1x1 conv,3x3 conv, 5x5 conv, 혹은 3x3 pool 중 누가 최적일지, 혹은 그들의 어떤 조합의 구성이 최적의 구성일지 학습.
2) inception modeul : 1x1 conv "bottleneck" layers 사용
첫째 목적 : 파라미터, 연산량 감소
1x1 Convolution을 수행하면, 여러 개의 feature-map으로부터 비슷한 성질을 갖는 것들을 묶어낼 수 있고,
결과적으로 feature-map의 개수를 줄일 수 있으며, 연산량도 줄일 수 있게 되고, 연산량이 줄어들면 망을 더 깊게 할 수 있는 여지가 생김.
둘째 목적 : 활성화 함수(reLu) 더 많이 적용, 비선형성 추가로 획득
* 최종 inception module
3) 전체 모델 측면 아이디어 : auxillary classifier, 보조분류기 (남색 박스)
사용목적 : 기울기 소실 문제 해결
auxillary classifier에서 계산되어진 큰 값의 역전파 결과가 중간마다 더해지기 때문에,
전체모델의 기울기 작아지는 문제를 해결 할 수 있음
즉 Regularizer와 같은 역할
4) 전체 모델 측면 아이디어 : Global average pooling 사용 (보라색 박스)
사용목적 : 파라미터수 감소
CNN의 최종단에 있는 fully-connected NN은 전체 free parameter 중 90% 수준에 육박하기 때문에, 많은 파라미터의 수로 인해 overfitting에 빠질 가능성이 아주 높음, 이를 해결하기 위해 원래 “dropout” 기법을 적용했지만 한계가 있음.
하지만 GoogleNet에서는 average pooling만으로 classification을 수행 할 수 있기 때문에, overfitting 문제 현저히 극복
- 전체 모델 설명
파라미터 : 약 500만개
총 layer : 22개
총 unit : 약 100개
(Alexnet에 비해 파라미터 1/12 수준, 연산 2배 빠름, top5 error 10%까지 감소)
'데이터과학 > 개념 : CNN(OD), RNN' 카테고리의 다른 글
[RNN 개념정리] RNN/LSTM 기본개념 (4) | 2020.06.22 |
---|---|
[CNN 개념정리] CNN 기본개념 (0) | 2020.05.01 |
[CNN 개념정리] CNN의 발전, 모델 요약정리 2 (ResNet, DenseNet) (4) | 2020.05.01 |