합성곱 신경망은 이미지 인식과 음성 인식 등에 사용된다.
CNN 전체 구조
- 새롭게 등장하는 개념 : 합성곱 계층, 풀링 계층
지금까지의 신경망
인접하는 계층의 모든 뉴런과 결합되어 있었다 => 완전연결
이렇게 완전히 연결된 계층은 Affine 계층이란 이름으로 구현함

완전 연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU 계층 (or Sigmoid 계층)이 이어진다.
위 그림에서는 Affine-ReLU 조합이 2층이 쌓였고 마지막 3번째 층은 Affine 계층에 이어 소프트맥지 계층에서 최종결과를 출력한다.

CNN은 새롭게 합성곱 계층과 풀링 계층이 추가된다.
CNN 계층은 Conv-ReLU-(Pooling) 흐름으로 연결된다. ( 풀림 계층은 생략될 수 있음)
CNN 계층은 가까운 층에서는 Affine-ReLU 계층 구성을 사용할 수 있다.
마지막 출력 계층에서는 Affine-softmax 조합을 그대로 사용한다.
합성곱 계층
CNN에서는 패딩, 스트라이트 등 CNN 고유의 용어가 등장한다.
각 계층은 3차원 데이터와 같이 입체적인 데이터가 흐른다. (완전연결 신경망과 다른점!)
완전연결 계층의 문제점
3차원데이터를 평평한 1차원 데이터로 평탄화 해주는 과정에서 '데이터의 형상 무시'
이미지는 3차원 형상이고, 이 형상의 공간적 정보나 패턴을 완전히 무시하고 같은 차원의 뉴런으로 취급
=> 형상에 담김 정보 살릴 수 없음
CNN에서는 합성곱 계층의 입출력 데이터 => 특징맵
CNN에서 합성곱 계층의 입력 데이터 => 입력 특징 맵
CNN에서 합성곱 계층의 출력 데이터 => 출력 특징 맵
합성곱 연산

입력데이터는 세로, 가로 방향의 형상을 가짐
필터 역시 세로, 가로 방향의 형상을 가짐
형상 - (높이, 너비) : 입력 - (4,4) / 필터 - (3,3) / 출력 - (2,2)
합성곱 연산은 필터의 윈도우를 일정 간격 이동해가며 입력데이터에 적용한다.
입력과 필터에 대응하는 원소끼리 곱한 후 그 총합을 구함(단일 곱셈-누삼)
그 총합 결과를 해당 장소에 저장함

편향은 필터를 적용한 후의 데이터에 더해지며 항상 하나(1X1)로만 존재
패딩
합성곱 연산 수행 전 입력 데이터 주변을 특정 값으로 채우는 과정
주로 출력 크기를 조정할 목적으로 사용

EX) 폭 1짜리 패딩이라고 하면 입력 데이터 사방 1픽셀을 특정 값으로 채운다.
패딩 추가 후 입력 데이터 (4, 4) -> (6, 6)이 된다.
패딩을 1로 설정했지만 다른 원하는 정수 값으로 설정 가능하다.
스트라이드
필터를 적용하는 위치의 간격
만약에 스트라이드를 2로 하면 필터를 적용하는 윈도우가 두 칸씩 이동함
- 스트라이드를 키우면 출력 크기는 작아짐
- 패딩을 크게 하면 출력 크기는 커짐
입력 크기를 (H, W), 필터 크기를 (FH, FW), 출력 크기를(OH, OW), 패딩을 P, 스트라이드를 S라고 하였을때,
출력 크기 계산 식
(단, 값이 정수로 나눠떨어지는 값이어야 함 => 출력 크기가 정수가 아니면 대응 필요)

3차원 데이터의 합성곱 연산
채널쪽으로 특징 맵이 여러 개 있다면 채널마다 입력데이터와 필터의 합성곱 연산을 수행하고, 그 결과를 더해서 하나의 출력을 얻는다.

주의 : 입력 데이터의 채널수와 필터의 채널 수가 같아야 함
필터 자체의 크기는 원하는 값으로 설정할 수 있으나, 모든 채널의 필터가 같은 크기여야 한다.
3차원의 합성곱 연산은 데이터와 필터를 직육면체 블록이라 생각한다.


합성곱 연산에서는 필터의 수도 고려해야하며, 필터의 가중치는 (출력채널 수, 입력 채널 수, 높이 , 너비) 순으로 4차원 데이터를 사용한다.
=> FN개의 맵을 모으면 형상이 (FN, OH, OW)인 블록 완성

배치 처리를 하는 경우에는 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터로 저장함
=> (데이터 수, 채널 수, 높이, 너비)

풀링 계층
세로, 가로 방향의 공간을 줄이는 연산
EX) 2X2영역을 원소 하나로 집약하여 공간 크기를 줄이는 것

=> 2 X 2 대상 크기 영역에서 가장 큰 원소 하나를 꺼냄
=> 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는것이 보통임
<풀링 계층의 특징>
- 학습해야 할 매개변수가 없다 => 그냥 대상 영역에서 최대값이나 평균을 취하는 처리이기 때문
- 채널 수가 변하지 않는다 => 채널마다 독립적으로 계산함
- 입력의 변화에 영향을 적게 받는다 => 입력 데이터가 조금 변해도 풀링 결과 잘 안변함
'인공지능' 카테고리의 다른 글
| K-Nearest Neighbor (0) | 2023.10.01 |
|---|