사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.
이전 포스팅에서 완전연결 계층(Affine 계층)의 문제점과 CNN의 특징에 대해 알아보았습니다.
이번에는 합성곱 연산에 대해 알아보겠습니다.
합성곱 연산
합성곱 계층에서의 합성곱 연산을 처리합니다.
합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당합니다.
구체적인 예를 보겠습니다.
그림과 같이 합성곱 연산은 입력 데이터에 필터를 적용합니다.
이 예에서 입력 데이터는 세로, 가로 방향의 형상을 가졌고, 필터 역시 세로,가로 방향의 차원을 갖습니다.
데이터와 필터의 형상을 (높이, 너비)로 표기하며, 이 예에서는 입력은 (4, 4), 필터는 (3, 3) 출력은 (2, 2)가 됩니다.
문헌에 따라 필터를 커널이라 칭하기도 합니다.
그럼 위 그림의 합성곱 연산 예에서 어떤 계산이 이뤄지는지 설명하겠습니다.
다음 그림이 합성곱 연산의 계산 순서를 나타낸 것입니다.
합성곱 연산은 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용합니다.
여기에서 말하는 윈도우는 회색 3X3 부분을 가리킵니다.
그림에서 보듯 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구합니다(이 계산을 단일 곱셉-누산(fused multiply-add,FMA이라 합니다).
그리고 그 결과를 출력의 해당 장소에 저장합니다.
이 과정을 모든 장소에서 수행하면 합성곱 연산의 출력이 완성됩니다.
합성곱과 교차상관
합성곱과 교차상관의 차이는 필터를 플리핑(filipping)의 여부입니다.
플리핑은 행렬의 원소들을 좌우, 상하로 각 한 번씩 뒤집는 것입니다.
필터를 플리핑하면 합성곱이고, 그렇지 않으면 교차상관입니다.
SciPy는 둘을 명확히 구분하나, 딥러닝 쪽에서는 잘 구분하지 않는 경향이 있습니다.
딥러닝 라이브러리들의 합성곱 함수들은 플리핑하지 않거나, 플리핑 여부를 인수로 받기도 합니다.
완전연결 신경망에는 가중치 매개변수와 편향이 존재하는데, CNN에서는 필터의 매개변수가 '가중치'에 해당합니다.
CNN에도 편향이 존재합니다.
위 그림은 필터를 적용하는 단계까지만 보여준 것이고, 편향까지 포함하면 아래와 같은 흐름이 됩니다.
그림과 같이 편향은 필터를 적용한 후의 데이터에 더해집니다.
그리고 편향은 항상 하나(1X1)만 존재합니다.
그 하나의 값을 필터를 적용한 모든 원소에 더하는 것입니다.
이상으로 합성곱 연산에 대해 알아보았습니다. 다음에는 패딩에 대해 알아보도록 하겠습니다. 감사합니다.
'수학 > 딥러닝 이론' 카테고리의 다른 글
[딥러닝] 합성곱 신경망(CNN) - 3차원 데이터의 합성곱 연산 - 가중치와 편향 (0) | 2020.10.04 |
---|---|
[딥러닝] 합성곱 신경망(CNN) - 합성곱 연산에서의 패딩과 스트라이드 (0) | 2020.10.04 |
[딥러닝] 합성곱 신경망(CNN) - 완전연결 계층(Affine 계층)의 문제점과 CNN의 특징 (0) | 2020.10.04 |
[딥러닝] 합성곱 신경망(CNN) - CNN의 전체 구조 (0) | 2020.10.04 |
[딥러닝] 하이퍼파라미터를 최적화하는 방법과 구현하기 (0) | 2020.10.03 |