-
CNN 합성곱 계층AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:58
 - CNN(Convolution Neural Network)은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류다.
- 합성곱(Convolution)을 활용하면 데이터의 형상을 유지할 수 있다(Affine계층에서는 1차원 데이터로 평탄화시켰다.). 즉, 3차원 속에서 의미를 갖는 본질적인 패턴을 고려할 수 있다.
- 이미지 인식과 음성 인식 등 다양한 곳에서 사용된다. 특히 이미지 분야에서 딥러닝을 활용한 기법은 거의 다 CNN이 기초이다.
합성곱 연산- 합성곱 연산은 필터의 window를 일정 간격으로 이동해가며 입력 데이터에 적용한다.
- 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구한다(fused multiply-add, FMA). 그 결과를 출력의 해당 장소에 저장한다. 이 과정을 모든 장소에서 수행하면 합성곱 연산의 출력이다.
- 편향은 필터를 적용한 후의 데이터의 모든 원소에 더해지며, 항상 하나(1x1)만 존재한다.
- 완전연결 신경망의 가중치 매개변수가 CNN에서 필터의 매개변수에 해당한다.
패딩- 합성곱 연산을 수행하기 전에 입력 데이터 주변 값을 특정 값(예를들어 0)으로 채우는 것이다.
- 주로 출력 크기를 조정할 목적으로 사용된다. 예를들어 합성곱 연산을 몇번이나 되풀이하는 심층 신경망에서 출력의 형상이 작아지게 변화하면 어느 시점에서는 출력 크기가 1이 되어 더이상 합성곱 연산을 적용할 수 없게 된다.스트라이드
- 필터를 적용하는 위치의 간격이다. (예를들어 스트라이드가 2면 필터를 적용하는 window가 두 칸씩 이동한다.)
패딩, 스트라이드와 출력 크기의 관계- 패딩의 크기를 크게 하면 출력 크기가 커진다.
- 스트라이드의 크기를 크게 하면 출력 크기가 작아진다.
3차원 데이터의 합성곱 연산- 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다. (필터 자체의 크기는 원하는 값으로 설정할 수 있다.)
블록으로 생각하기- 한번의 합성곱 연산에서 출력 데이터는 한 장의 특징 맵이다.
- 위의 사진처럼 필터를 FN개 사용하면, 출력 맵도 FN개가 생성된다. 즉, 형상이 (FN, OH, OW)인 블록이 완성된다. 이 완성된 블록을 다음 계층으로 넘기는 것이 CNN의 처리 흐름이다.
- 이처럼 필터의 개수도 고려하기 때문에, 필터는 4차원 데이터이다.- 최종적으로 편향을 추가한 사진이다.
- 편향은 채널 하나에 값 하나씩으로 구성된다.
- 여기서 배치 처리를 위해 입력 데이터를 4차원으로 구성하면, 출력 데이터도 4차원으로 된다.'AI > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
CNN 구현, 시각화 (0) 2024.07.13 CNN 풀링 계층 (0) 2024.07.13 학습 관련 기술 정리 (0) 2024.07.13 배치 정규화 (0) 2024.07.13 가중치의 초깃값 (0) 2024.07.13