본문 바로가기
AI 수학/신호처리

컨볼루션(convolution)이란

by 세인트 워터멜론 2020. 7. 20.

딥러닝의 성공은 컨볼루션 신경망(CNN, convolutional neural network)의 성공 덕분이라고 할 정도로 CNN은 딥러닝에서 중요한 위치를 차지하고 있다. CNN이 널리 알려지면서 컨볼루션은 딥러닝을 접해본 사람에게는 일반적 용어가 된 것 같다.

 

 

사실 컨볼루션이라는 용어는 딥러닝에 문외한이더라도 공업수학, 자동제어, 신호처리 등을 공부한 사람에게는 매우 익숙한 용어다. 이런 과목을 통해 컨볼루션을 접해본 사람에게는 CNN에서 이야기하는 컨볼루션 연산을 보면, “이건 컨볼루션이 아니라 상관도(correlation)인데...”라고 할 지도 모르겠다.

 

Convolutional Neural Network (이미지 출처: Wikimedia commons)

 

CNN을 처음 공부하면 으레 나오는 설명이 있다.
CNN은 완전연결(FC, fully connected) 신경망과 비교하여 차별성이 있는데, 이미지 데이터에 특화되어 있으며 이미지의 공간 정보를 유지하면서 이미지의 특징을 효과적으로 인식하고, 공유 파라미터를 사용하게 때문에 학습 파라미터가 매우 적다라는 것이다. 이어서 컨볼루션 연산을 수행하는 과정을 소개한다.

그리고 MNIST나 fashion MNIST 데이터셋을 이용하여 숫자나 패션 아이템을 분류하는 코드를 보여주며 FC 신경망에 비해 매우 적은 파라미터를 사용했음에도 뛰어난 성능을 보여준다는 것을 알려준다.

하지만 왜 컨볼루션 연산과 같은 이상한 연산이 필요한지, 그것이 왜 이미지 데이터를 효과적으로 처리할 수 있다는 것인지 알려주지는 않는다.

한편에서는 CNN과 관련없이 컨볼루션(convolution)을 수식없이 직관적으로 설명하겠다는 블로그 글을 많이 본다. 굳이 필요도 없는 수식을 상세하게 전개하면 컨볼루션의 개념을 이해하는데 오히려 큰 혼동을 준다며, 여러가지 비유와 이미지를 사용하여 모든 사람들이 이해할 수 있도록 직관적으로 설명하는 것이라고 한다.

그런데 나는 수식없이 이런저런 비유를 장황하게 들어가며 컨볼루션에 대해서 설명한 글을 읽으면서 오히려 혼란만 생기고 정작 컨볼루션의 개념을 이해하는 데 더 어려움을 주는 것 같다고 느꼈다. 그래서 여기에서는 수식을 중심으로 컨볼루션을 명확하게 설명하고자 한다. 혹시 나 같은 사람들이 있을 수 있으니까.

 

 

'AI 수학 > 신호처리' 카테고리의 다른 글

컨볼루션 쉽게 계산하기  (0) 2020.07.25
컨볼루션 공식대로 계산하기  (0) 2020.07.25
LTI 시스템과 컨볼루션  (0) 2020.07.23
LTI 시스템 – 시불변  (0) 2020.07.21
LTI 시스템 - 선형  (0) 2020.07.21

댓글