합성곱(컨볼루션)란?

두 계열 중 한쪽을 시간 반전하여 밀면서 다른 쪽과 곱해 더하는 연산. 이산 시간에서는 y[n] = Σx[k]h[n − k]이며, LTI 시스템의 출력은 입력과 임펄스 응답의 합성곱이 된다. 길이 L과 M인 계열의 합성곱의 길이는 L + M − 1이다. 시간 쪽의 합성곱은 주파수 쪽에서는 곱셈이 되므로, 긴 합성곱은 FFT를 사용하면 빠르게 계산할 수 있다. 합성곱 신경망의 '합성곱'은 많은 구현에서 필터를 반전하지 않는 상호 상관으로 계산되지만, 가중치는 학습으로 정해지므로 어느 쪽으로 정의해도 학습 결과는 같은 방식으로 작동한다.

일본어 명칭: 畳み込み

합성곱(컨볼루션)은(는) AI 하드웨어·소프트웨어 스택, 머신러닝의 기초, 디지털 신호 처리의 기초 등 3개 분야의 연습 문제 6개에 나와요.

분야: 디지털 신호 처리의 기초

도전해 보기: 합성곱(컨볼루션) 관련 문제

합성곱 신경망에서 합성곱 계산을 im2col 등의 방법으로 행렬 곱으로 변환하여 계산하는 경우가 있는 이유로 올바른 것은 무엇인가?

  1. A변환하면 연산 횟수가 10분의 1이 되기 때문
  2. B고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문
  3. C변환하면 메모리 사용량이 반드시 줄기 때문
정답과 해설 보기

정답: B. 고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문

im2col은 합성곱의 각 윈도에 들어가는 입력 값을 한 열로 늘어놓은 큰 행렬을 만들고, 필터를 늘어놓은 행렬과의 곱으로 합성곱을 계산하는 방법입니다. 윈도가 겹치는 만큼 입력이 중복되어 메모리는 늘어나지만, 수십 년간 최적화되어 온 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 그대로 사용할 수 있으므로 전체적으로 빨라지는 경우가 많습니다. 중복을 만들지 않고 같은 일을 하는 구현도 있습니다.

28×28의 1채널 이미지에 5×5 필터로 합성곱(스트라이드 1, 패딩 없음)을 수행하고, 이어서 2×2 최대 풀링(스트라이드 2)을 수행한다. 출력의 세로와 가로 크기는?

  1. A12×12
  2. B14×14
  3. C24×24
정답과 해설 보기

정답: A. 12×12

합성곱 출력의 크기는 입력의 크기를 N, 필터의 크기를 F, 패딩을 P, 스트라이드를 S로 하여 (N + 2P − F) ÷ S + 1로 구합니다. (28 + 0 − 5) ÷ 1 + 1 = 24이므로, 합성곱 뒤에는 24×24입니다. 2×2 최대 풀링을 스트라이드 2로 수행하면 2×2 영역마다 최댓값을 하나만 남기므로, 세로와 가로가 절반인 12×12가 됩니다. 풀링에는 학습하는 파라미터가 없으며, 데이터를 작게 하여 계산을 줄이고 위치의 작은 어긋남의 영향을 덜 받게 하는 작용이 있습니다.

해설 속 합성곱(컨볼루션)

합성곱(컨볼루션)이(가) 나오는 문제 (6)

  1. 합성곱 신경망에서 합성곱 계산을 im2col 등의 방법으로 행렬 곱으로 변환하여 계산하는 경우가 있는 이유로 올바른 것은 무엇인가?
  2. 28×28의 1채널 이미지에 5×5 필터로 합성곱(스트라이드 1, 패딩 없음)을 수행하고, 이어서 2×2 최대 풀링(스트라이드 2)을 수행한다. 출력의 세로와 가로 크기는?
  3. x[n] = {1, 2, 3}(n = 0, 1, 2)을 임펄스 응답 h[n] = {1, −1}(n = 0, 1)인 LTI 시스템에 입력했다. 출력 y[0]~y[3]으로 올바른 것은?
  4. AI 가속기의 데이터플로 방식 중 하나인 '웨이트 스테이셔너리(가중치 고정)'의 설명으로 올바른 것은 무엇인가?
  5. AI 소프트웨어 스택을 사용자에 가까운 위쪽 층에서 하드웨어에 가까운 아래쪽 층으로 나열한 것으로 올바른 것은 무엇인가?
  6. 입력이 64개, 출력이 32개인 완전 연결층(각 출력에 바이어스가 1개씩 있다)의 학습하는 파라미터 수는?

관련 용어

합성곱 신경망(CNN) 텐서 코어(Tensor Core) 임펄스 응답(Impulse Response) AI 컴파일러 계산 그래프(Computational Graph) GPU NPU(뉴럴 프로세싱 유닛) 고속 푸리에 변환(FFT) 군지연(Group Delay) 데시메이션(Decimation)

용어집으로 돌아가기