2017년 10월 23일 월요일

CNN cs231n

1-2) Data Augmentation: CNN성능을 높이기 위해 학습 이미지의 여러 가지 방식으로 변형한 후, 입력이미지로 사용
 - Horizontal Flips 
 - Random crops and scales: Training시와 Testing
 - Color jitter: R,G,B채널마다 주성분분석을 적용. 주성분분석 축에 gaussian분포를 곱해 원본 특성을 갖고 있으면서 노이즈를 더한 이미지를 늘릴 수 있으며, 나중에 원본 복구도 가능하다는 장점이 있다. 
1-3) DropConnect: 노드간의 연결 가중치 자체를 0으로 주는 방법

2. Transfer Learning
 - 데이터의 수가 적을 때 이미 학습이 된 모형을 가지고 와서 후반 Layer만 학습을 돌림

CS231N #9 - 권휘 발표
1. AlexNet
 - 그 전에는 tanh등을 사용하여 gradient가 saturize되는 문제가 있었는데 AlexNet은 ReLu를 사용
 - 두 개의 GPU로 학습. CONV1, 2, 4, 5에서는 같은 GPU의 Feature map 연결, CONV3, FC6, FC7, FC8에서는 GPU간 feature map정보를 공유(점선 화살표)

2. ZFNet
 - AlexNet에서 filter사이즈등의 일부 finetuning. ImageNet Top5 에러 개선

3. VGGNet
 - 조그만 필터로 더 깊은 레이어 구축. 3*3 필터 3개로 7*7 필터와 같은 효과 (effective receptive field)를 가지는데, 추정 모수는 7*7필터보다 작아서 좋음. 또한 deep하기 때문에 non-linearities도 있음
 - 단점(PPT 33페이지): depth가 깊기 때문에 CONV 초기레이어에서 메모리를 많이 사용 (224*224*64)  
FC layer에서 추정해야 할 모수의 수가 많음

4. GoogLeNet
 - 22개의 레이어로 구성(Inception모듈은 2개로 count함). Inception 모듈로 인해 추정모수의 수가 줄었으며, FC 레이어가 없다. 전체 구성 중 중간중간 Inception 모듈 옆에 붙은 Loss계산 레이어들은 overfitting을 막기 위함이라 함 (후반부에서 재설명)
 - Inception모듈: 여러 개의 scale(필터 사이즈가 1*1, 3*3, 5*5사용)로 본 후 합치는 개념. 
 - Naive Inception모듈은 Multiple receptive field sizes(1*1, 3*3, 5*5)와 pooling으로 구성되어 있음(위 개념으로 여러 가지를 시도한 후 최적의 조합이라고 함).그러나 이 Naive Inception모듈의 문제는 연산량이 매우 복잡하다는 것 (PPT 47페이지) -> Very expensive compute
 - Bottleneck layer(1*1 convolution)으로 feature depth를 줄여보자라고 해서 초기 Inception 모듈이 나온 것임(PPT 54페이지)
 - GoogLeNet은 이 인셉션 모듈을 쌓은 형태이며, 맨 마지막에 classifier output으로 구성되어 있는데, 이 Classifier output에서 FC layer를 제거하고, Global average pooling방식을 사용하였다고 함. 또한 중간에 Auxiliary classification output을 두었는데, 이는 중간에 나온 Feature로 Classification하여 결과값을 계산한 후, 약간의 가중치를 주어 최종 Classifier output에서 나온 값과 합산하여 학습을 한다고 함 (PPT 57~61페이지)

댓글 없음:

댓글 쓰기

gpustat command

sudo apt install gpustat watch --color -n0.1 gpustat --color