CNN : Convolutional Neural Network 정리

2020. 2. 6. 20:14nlp

반응형

(사진 출처) 밑바닥부터 시작하는 딥러닝 1권

 

http://taewan.kim/post/cnn/#fn:1

 

CNN, Convolutional Neural Network 요약

Convolutional Neural Network, CNN을 정리합니다.

taewan.kim

 

 

완전연결 계층(Affine)으로 이루어진 네트워크

(ex) input → Affine → ReLU → Affine → ReLU → Affine → ReLU → Affine Softmax

 

CNN으로 이루어진 네트워크

(ex) input → Conv →ReLU → Pooling → Conv → ReLU → Pooling → Conv → ReLU → Affine → ReLU → Affine → Softmax

= (1) 이미지의 특징을 추출하는 부분(Conv와 Pooling) + (2) 클래스를 분류하는 부분(Affine 등 완전연결계층)

 

 

- Fully Connected Layer (=FC Layer) : 오직 1차원의 입력 데이터만 받을 수 있음 

- (문제) 한 장의 컬러 사진은 3차원 데이터 : (세로 픽셀, 가로 픽셀, 컬러 채널) 

* 컬러 사진이면 컬러 채널 3개(RGB), 흑백 사진이면 컬러 채널 1개(2차원 데이터)

- (해결) 3차원 데이터를 1차원으로 평면화 

- (해결책의 한계) 사진 데이터를 평면화하면 공간 정보 손실됨

- (완전한 해결책) CNN : 이미지의 공간 정보를 유지한 상태로 학습 가능

 

합성곱(Conv)계층

-  필터의 매개변수와 편향이 필요함

- 데이터 형상 유지 가능

- Feature Map(특징 맵) : 합성곱의 입출력 데이터 (input feature map, output feature map)

- Convolution 레이어 출력 결과 = Feature Map → 여기에 비선형 활성화 함수 적용하면 → Activation Map

 

합성곱 연산 

 

 

 

- 패딩(padding) : 출력 크기를 조정하기 위해 입력 데이터 주위에 0을 채움 

- 패딩 크게 하면 출력 크기 커짐 

- stride : 필터를 적용하는 위치의 간격

- stride 키우면 출력 크기 작아짐 

 

 

3D 데이터의 합성곱 연산 

- 입력 데이터의 채널 수와 필터의 채널 수가 동일함

* 필터Filter = 커널Kernel

- 채널 C개 입력 * 채널 C개 필터 = 채널 1개 출력

 

 

 

 

- 여러 필터 사용하면 출력의 채널은 필터 개수만큼

- 채널 C개 입력 * 채널 C개 필터가 FN개 = 채널 FN개 출력 

* 출력 데이터의 채널 수 = 필터의 개수 

 

 

- 편향 추가하면

 

 

- N개의 테이터를 배치처리 하면

 

 

Conv 계층 출력 데이터 크기 

- 입력 데이터 높이 : H

- 입력 데이터 폭 : W

- 필터 높이 : FH

- 필터 폭 : FW

- stride 크기 : S

- 패딩 사이즈 : P

 

 

- 출력 데이터 높이와 폭은 자연수여야 함

- Conv 뒤에 Pooling 온다면 : 출력 데이터 높이와 폭은 Pooling 크기의 배수여야 함 

 

 

Pooling

- 세로, 가로 방향의 공간을 줄이는 연산

- Pooling 계층은 학습해야 할 매개변수가 없다 (영역 안의 최댓값 혹은 평균을 취함)

- Pooling을 해도 채널 수는 변하지 않는다 (입력 데이터의 채널 수 = 출력 데이터의 채널 수)

- Pooling 계층은 입력의 변화에 영향을 적게 받는다 (robust)

- Poling 계층을 통과하면 행렬의 크기가 감소한다

 

 

Pooling 계층 출력 데이터 크기

 

 

 

합성곱 계층 구현

- Im2col로 데이터 전개 → 내적 계산 → reshape

 

 

 

풀링 계층 구현

- 입력 데이터에 풀링 적용 영역 전개 후 최댓값/평균 구하고 reshape

 

 

Flatten Layer

- 파라미터 존재하지 않고 입력 데이터의 shape만 변경함 

(ex) 입력된 데이터가 (2,1,80) = (높이,폭,채널) 이라면 flattern layer의 출력 데이터는 (160,1)

 

Softmax Layer

- 최종 분류해야할 클래스가 n개면 출력 데이터 형상도 (n,1)

(ex) 분류할 클래스가 100개 : 입력된 데이터가 (160,1)이라면 softmax layer의 출력 데이터는 (100,1)

- 이 예시에서 weight shape는 (100, 160)

 

반응형