CNN 구조
- 완전연결 : 인접하는 계층의 모든 뉴런과 결합되어 있는 신경망 (CNN과는 다름)
- 합성곱 계층과 풀링 계층이 등장
- Affine 계층을 사용한 완전연결 신경망

- Affine-ReLU 연결 구조
- 마지막 출력 계층은 Affine-Softmax
- 합성곱 계층과 풀링 계층이 추가된 합성곱 신경망(CNN)의 일반적인 구성

- Conv-ReLU-(Pooling) 연결 구조 (풀링 계층은 생략하기도 함)
- 마지막 출력 계층은 Affine-Softmax를 그대로 사용
합성곱 계층
1. 완전연결 계층의 문제점과 합성곱 계층
- 데이터의 형상이 무시됨
- 만약 3차원 형상의 이미지를 1차원으로 만들게 되면 3차원 속에서 의미를 갖던 거리가 가깝거나 먼 픽셀의 연관성 등의 연관적인 패턴을 무시하게 되어 형상에 담긴 정보를 살릴수 없음 ⇒ 합성곱 계층은 형상을 유지하여 형상을 가진 데이터를 제대로 이해할 수 있음
- 특징 맵 : 합성곱 계층의 입출력 데이터
- 입력 특징 맵 : 합성곱 계층의 입력 데이터
- 출력 특징 맵 : 합성곱 계층의 출력 데이터
2. 합성곱 연산
- 필터의 윈도우를 일정 간격으로 이동해가며 입력 데이터에 적용
- 입력과 필터에서 대응하는 원소끼리 곱한 후 총합을 구한 뒤 (단일 곱셈-누산), 결과를 출력의 해당 장소에 저장

- 편향을 포함하게 되면 편향을 각 원소에 더한 뒤 출력 (위의 예시에서는 18 / 19 / 9 / 18)
3. 패딩
- 합성곱 연산을 수행하기 전 입력 데이터 주변을 0 같은 특정 값으로 채우는 것
- 폭이 N이면 데이터 사방 N픽셀을 특정 값으로 채움
- 패딩을 키우면 출력 크기가 커짐
- 주로 출력 크기를 조정하기 위해 사용
4. 스트라이드
- 필터를 적용하는 위치의 간격
- 즉, 윈도우가 이동하는 크기
- 스트라이드를 키우면 출력 크기가 작아짐
- 합성곱 연산의 예시 사진에서는 스트라이드가 1
- 패딩, 스트라이드, 출력 크기의 수식화

- 입력 크기 : H, W (H는 높이, W는 너비)
- 필터 크기 : FH, FW
- 출력 크기 : OH, OW
- 패딩 : P
- 스트라이프 : S
- 출력 크기가 정수가 아니면 오류
5. 3차원 데이터의 합성곱 연산
- 입력 데이터와 필터의 합성곱 연산을 채널마다 수행한 뒤 결과를 모두 더해 하나의 출력을 얻음
- 입력 데이터의 채널 수와 필터의 채널 수가 같아야 함
- 합성곱 출력으로 다수(N개)의 채널을 내보내려면 필터(가중치)를 다수(N개) 사용하면 됨
- 편향은 채널 하나에 값 하나이므로 각 채널의 원소에 모두 더해짐

6. 배치 처리
- 각 계층을 흐르는 데이터의 차원을 하나 더 늘려 4차원 데이터로 저장
- (데이터 수, 채널 수, 높이, 너비) 순으로 저장

- N회 분의 처리를 한 번에 수행함
풀링 계층
- 세로, 가로 방향의 공간을 줄이는 연산
- 최대 풀링 : 대상 영역의 크기에서 최댓값을 구하는 연산. 보통 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정. 이미지 인식 분야에서는 주로 최대 풀링을 사용
- 평균 풀링 : 대상 영역의 크기에서 평균을 계산.
- 풀링 계층의 특징
- 학습해야 할 매개변수가 없음
- 채널 수가 변하지 않음
- 입력의 변화에 영향을 적게 받아 강건함
대표적인 CNN
- LeNet : 손글씨 숫자 인식 네트워크. 합성곱 계층과 풀링 계층 반복 후 완전연결 계층으로 결과 출력
- 시그모이드 활성화 함수 사용
- 서브샘플링을 하여 중간 데이터의 크기 줄임
- 위의 특징은 현재의 CNN(ReLU 함수 사용, 최대 풀링 주류)와의 차이를 보여줌
- AlexNet : 합성곱 계층과 풀링 계층 반복 후 완전연결 계층으로 결과 출력
- ReLU 활성화 함수 사용
- LRN(국소적 정규화)를 실시하는 계층 이용
- 드롭아웃 사용
- 딥러닝의 발전에는 빅데이터와 GPU가 큰 원동력이 되었음