새소식

ML | AI/내용 정리 - 2022.12.30

Convolution을 Neural Networks에서 활용 하기

  • -

Summary

CNN이 이미지 데이터에 많이 활용되는 이유는, 이미지 데이터의 stationarity, locality 가정에 적합한 연산인 Convolution을 활용하기 때문이다. Convolution은 기존 MLP와는 다른 방식으로 연산을 하기 때문에, Neural Networks 관점으론 Sparse interaction이고, 동시에 Parameter sharing이 있다고 말한다.

 

새로운 단어가 갑자기 나와서 '기존의 Convolution과 다른가?' 라고 생각이 들 수 있지만, 해당 용어들은 단순히 Neural Networks가 기준이 되면서 새롭게 붙여진 단어일 뿐이다. 커널 단위로 연산하기 때문에 Sparse 하다는 것이고, 커널의 가중치를 공유하기 때문에 Sharing이 있다고 말하는 것 뿐이다.

 

이번 포스팅에선 Neural Networks 관점에서의 Convolution(CNN)의 특징과, 장점에 대해서 다룬다.

Sparse interaction 관련

CNN(위)과 MLP(아래) 노드의 상호 작용
人Co BLOG :: 이미지를 이용한 딥러닝의 개요 (insilicogen.com)

MLP에선 노드 가중치를 계산하는 과정(상호 작용)에 모든 노드가 참여한다. 하지만 CNN은 입력 데이터보다 크기가 작은 커널을 설정하고, 커널이라는 제한된 receptive field 안에 있는 노드만 상호 작용에 참여한다. 따라서 CNN의 파라미터는 MLP와 비교했을 때 sparse 하다. 때문에 CNN은 MLP에 비해 상대적으로 입력 데이터 크기에 자유롭다는 특징이 있다.   

다중 Layer CNN의 receptive field

CNN은 sparse 한 파라미터로도 이미지 데이터를 잘 처리할 수 있다. Layer 깊어지면 각 노드가 입력 이미지 픽셀 대부분과 직•간접적으로 상호 작용할 수 있기 때문이다. 실제로 각 노드는 좁은 receptive field를 가지고 있지만, Layer가 추가되면 연결된 노드에 의해 receptive field가 커지는 효과를 얻을 수 있다.

CNN은 MLP에 비해 적은 파라미터로 이미지 데이터를 처리하기 때문에, 모델의 메모리 사용량 시간 복잡도를 줄일 수 있다는 장점이 있다. $M, N, K$를 각각 입력 크기, 출력 크기, 커널 사이즈라고 한다면 MLP는 $O(N \times M)$, CNN은 $O(N \times K)$의 시간 복잡도를 가진다. 보통 $K$를 $M$에 비해 매우 작게 설정하기 때문에, CNN은 시간 복잡도 측면에서 큰 장점이 있다.

추가로 CNN이 MLP 보다 통계적인 면에서 efficient 하다는 점도 장점이다. CNN의 경우 파라미터가 적어 variance가 상대적으로 기 때문이다.

Parameter sharing 관련

Convolution layer (velog.io)

위 그림은 CNN의 커널 적용 과정을 나타낸 것이다. 자세히 보면, 이미지 픽셀의 위치가 바뀌더라도 커널 가중치 변하지 않는 것을 확인할 수 있다. 이처럼 가중치를 동일하게 활용하는 것을 Parameter sharing 또는 tied weights라고 한다. CNN은 Parameter sharing을 하기 때문에 메모리 사용량 일 수 있다.

 

지금까지의 과정을 정리하면, CNN 커널 sparse interaction parameter sharing을 통해 모든 영역에 동일하게 적용된다. 이는 곧 이미지에 커널을 활용해 Convolution(Cross-correlation) 연산을 하는 것과 동일하다. 결국 CNN은 Parameter sharing을 통해 노드의 상호 작용을 Convolution 연산으로 바꿀 수 있다.

 

이를 통해 CNN은 edge-detection과 같이 필터(커널)을 활용한 연산을 간단하게 수행할 수 있다.

예시로 위 그림의 edge 이미지는 원본 이미지의 현재 픽셀과, 왼쪽 픽셀 값을 빼는 방식으로 얻을 수 있다. 이를 커널로 표현하면 $[-1, 1]$이고, CNN에선 이러한 커널을 모든 이미지 픽셀에 적용하면 된다. 하지만 MLP의 경우 각 이미지 픽셀을 나열한 뒤, 모든 픽셀의 상호 작용을 파라미터로 표현해야 할 것이다.

 

참고

 

https://www.deeplearningbook.org/contents/convnets.html

 

www.deeplearningbook.org

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.