주요 컨텐츠로 이동

컨볼루셔널 레이어

Databricks 무료로 시작하기

딥러닝에서 컨볼루셔널 신경망(Convolutional Neural Network, CNN 또는 ConvNet)이란 심층 신경망의 한 등급으로, 보통 이미지 속에 존재하는 패턴을 인지하는 데 쓰이지만 이외에 공간 데이터 분석, 컴퓨터 비전, 자연어 처리, 신호 처리 및 여타 다양한 용도에도 쓰입니다. 컨볼루셔널 신경망의 구조는 사람의 뇌 속 뉴런의 연결 패턴과 닮은 형태를 취하며 시각 피질(Visual Cortex) 조직에서 영감을 얻었습니다. 이 유형의 인공 신경망은 네트워크에서 가장 중요한 작업 중 하나에서 이름을 얻었습니다. 바로 컨볼루션(convolution)입니다.

컨볼루션이란 무엇입니까?

컨볼루션은 두 가지 정보 출처가 서로 얽히는 질서정연한 절차를 말합니다. 하나의 함수를 다른 무언가로 바꾸는 작업이라고 할 수 있겠습니다. 컨볼루션은 오래전부터 사용됐는데, 특히 이미지 처리 분야에서 이미지를 흐릿하게 하거나 선명하게 하는 데 주로 쓰이지만 다른 작업도 수행합니다. (예: 가장자리 강조 및 엠보싱) CNN은 인접한 계층의 여러 뉴런 사이에 로컬 연결 패턴을 적용합니다. 컨볼루셔널 신경망CNN은 필터(커널이라고도 함)를 사용하여 이미지 전체에 어떤 특징(예: 가장자리)이 있는지 탐지합니다. CNN의 작업은 크게 네 가지로 나눠볼 수 있습니다.  

  • 컨볼루션
  • 비선형성(Non Linearity, ReLU)
  • 풀링 또는 서브 샘플링
  • 분류(완전히 연결된 계층)

  컨볼루셔널 신경망의 첫 번째 계층은 항상 컨볼루셔널 레이어입니다.컨볼루셔널 레이어는 입력에 컨볼루션 작업을 적용하고, 다음 계층에 그 결과를 전달합니다. 컨볼루션은 수용 필드의 픽셀 전체를 하나의 값으로 변환합니다. 예를 들어 어느 이미지에 컨볼루션을 적용하면 이미지 크기도 줄어들고, 동시에 그 필드에 포함된 모든 정보를 하나로 모아 한 개의 픽셀로 합치게 됩니다. 컨볼루셔널 레이어의 최종 출력을 벡터라고 합니다. 해결해야 하는 문제의 유형과 알아내고자 하는 특징의 종류에 따라, 여러 가지 종류의 컨볼루션을 사용하면 됩니다.

2D 컨볼루션 레이어

가장 보편적으로 사용되는 컨볼루션 유형은 2D 컨볼루션 레이어이며, 보통 conv2D라고 줄여서 씁니다. conv2D 레이어에 속한 필터, 즉 커널이 2D 입력 데이터로 "슬라이드"하여 요소를 대상으로 곱셈을 수행합니다. 따라서 결과를 합쳐 하나의 출력 픽셀로 도출하게 됩니다. 커널은 자신이 슬라이드하는 모든 위치마다 같은 연산을 수행하여 특징점의 2D 매트릭스를 여러 가지 특징점 2D 매트릭스로 변환합니다.

팽창(Dilated) 컨볼루션 또는 아트러스(Atrous) 컨볼루션

이 작업은 컨볼루션 커널에 0의 값을 삽입하여 가중치 수를 늘리지 않고도 창 크기를 확대합니다. 팽창된(Dilated), 또는 아트러스(Atrous) 컨볼루션은 실시간 애플리케이션에 사용할 수 있으며 RAM 요구사항이 덜 집약적이라 처리력이 낮은 용도에 적합합니다.

분리 가능한(Separable) 컨볼루션

분리 가능한 컨볼루션에는 공간적으로 분리할 수 있는 컨볼루션과 깊이 면에서 분리 가능한 컨볼루션의 두 가지가 있습니다. 공간적 분리 가능한 컨볼루션의 경우 주로 이미지와 커널의 공간적 차원인 너비와 높이를 다룹니다. 공간적으로 분리할 수 있는 컨볼루션에 비해 깊이 면에서 분리 가능한 컨볼루션은 두 개의 작은 커널로 "환산"할 수 없는 커널을 다룹니다. 따라서 후자가 더 자주 쓰입니다.

전치(Transposed) 컨볼루션

이런 유형의 컨볼루션은 일명 '디컨볼루션(deconvolutions)'이라고도 하고, 단편적으로 진행되는(fractionally strided) 컨볼루션이라고도 합니다. 전치 컨볼루셔널 레이어는 정규 컨볼루션을 수행하지만 공간 변환을 되돌립니다.

추가 자료

용어집으로 돌아가기