AI 기초

CNN(합성곱 신경망)이란?

mm
Unite.AI를 Google의 선호 소스에 추가

아마도 페이스북이나 인스타그램에서 자동으로 이미지에서 얼굴을 인식하거나, 구글에서 사진을 업로드하여 유사한 사진을 검색하는 기능을 궁금해해 본 적이 있을 것입니다. 이러한 기능은 컴퓨터 비전의 예시이며, 합성곱 신경망(CNN)에 의해 구동됩니다. 그러나 합성곱 신경망이 정확히 무엇일까요? 합성곱 신경망의 구조를 깊이 있게 살펴보고, 어떻게 작동하는지 이해해 보겠습니다.

신경망이란?

합성곱 신경망에 대해 이야기하기 전에, 일반적인 신경망을 정의해 보겠습니다. 다른 기사에서 신경망에 대한 자세한 내용을 찾을 수 있으므로, 여기에서는 깊이 있게 다루지 않겠습니다. 그러나 간단히 정의하면, 신경망은 인간의 뇌에서 영감을 받은 계산 모델입니다. 신경망은 데이터를 입력받고, 가중치(weight)를 조정하여 데이터를 조작합니다. 가중치는 입력 특징들이 어떻게 관련되어 있는지에 대한 가정입니다. 네트워크를 훈련하면 가중치의 값이 조정되고, 특징들 사이의 관계를 정확하게 캡처하는 가중치로 수렴하기를 바랍니다.

이것이 피드포워드 신경망이 작동하는 방식입니다. 합성곱 신경망은 두 부분으로 구성됩니다. 피드포워드 신경망과 합성곱 계층입니다.

합성곱 신경망(CNN)이란?

합성곱 신경망에서 발생하는 “합성곱”은 무엇일까요? 합성곱은 가중치의 집합을 생성하여 이미지의 일부를 나타내는 수학적 연산입니다. 이 가중치의 집합을 핵(kernel) 또는 필터(filter)라고 합니다. 생성된 필터는 전체 입력 이미지보다 작으며, 이미지의 일부만을 커버합니다. 필터의 값은 이미지의 값과 곱해집니다. 그런 다음 필터는 새로운 이미지 부분을 나타내는 위치로 이동하고, 이过程가 반복되어 전체 이미지를 커버할 때까지 계속됩니다.

다른 방법으로 생각해 볼 수 있습니다. 벽돌 벽을 상상해 보세요. 벽돌은 입력 이미지의 픽셀을 나타냅니다. 창을 벽을 따라 옮기는 것은 필터입니다. 창을 통해 볼 수 있는 벽돌은 필터의 값과 곱해지는 픽셀입니다. 이러한 이유로 필터를 사용하여 가중치를 생성하는 이 방법을 “슬라이딩 윈도우” 기술이라고 합니다.

필터가 전체 입력 이미지에 대해 이동하여 생성된 출력은 2차원 배열로, 전체 이미지를 나타냅니다. 이 배열을 특징 맵(feature map)이라고 합니다.

합성곱이 왜 필수적인가?

합성곱을 생성하는 목적은 무엇일까요? 합성곱은 신경망이 이미지의 픽셀을 숫자 값으로 해석할 수 있도록 하는데 필요합니다. 합성곱 계층의 기능은 이미지를 숫자 값으로 변환하여 신경망이 해석하고 패턴을 추출할 수 있도록 하는 것입니다. 합성곱 네트워크의 필터의 역할은 2차원 배열의 값을 생성하여 나중에 신경망의 계층으로 전달할 수 있도록 하는 것입니다.

필터와 채널

Photo: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNN은 하나의 필터만을 사용하여 입력 이미지에서 패턴을 학습하지 않습니다. 여러 필터를 사용하여, 서로 다른 필터에 의해 생성된 배열이 입력 이미지의 더 복잡하고 풍부한 표현을 제공합니다. 일반적인 필터의 수는 32, 64, 128, 512입니다. 필터가 많을수록, CNN은 입력 데이터를 분석하고 학습할 기회가 더 많습니다.

CNN은 픽셀 값의 차이를 분석하여 객체의 경계를 결정합니다. 그레이스케일 이미지의 경우, CNN은 단순히 밝고 어두운 차이를 고려합니다. 그러나 색상 이미지의 경우, CNN은 밝고 어두운 차이뿐만 아니라, 빨강, 초록, 파랑의 3개 채널을 고려해야 합니다. 이 경우, 필터는 이미지와 동일한 3개의 채널을 갖습니다. 필터의 채널 수를 깊이라고 하며, 필터의 채널 수는 이미지의 채널 수와 일치해야 합니다.

합성곱 신경망(CNN) 아키텍처

합성곱 신경망의 전체 아키텍처를 살펴보겠습니다. 모든 합성곱 네트워크의 시작에는 합성곱 계층이 있습니다. 이는 이미지 데이터를 숫자 배열로 변환하는 데 필요합니다. 그러나 합성곱 계층은 다른 합성곱 계층의 뒤에 위치할 수도 있습니다. 즉, 이러한 계층을 서로 위에 쌓을 수 있습니다. 여러 합성곱 계층을 갖는다는 것은, 한 계층의 출력이 다른 계층에서 추가적인 합성곱을 거쳐 관련된 패턴으로 그룹화될 수 있다는 것을 의미합니다. 실제로, 이는 이미지 데이터가 합성곱 계층을 통해 진행될수록, 네트워크가 이미지의 더 복잡한 특징을 인식할 수 있음을 의미합니다.

ConvNet의 초기 계층은 단순한 선과 같은 저수준 특징을 추출하는 역할을 합니다. 나중에 ConvNet의 계층은 이러한 선을 모아 더 복잡한 모양을 인식합니다. 이는 이미지 데이터가 ConvNet을 통해 진행될수록, 네트워크가 더 복잡한 특징을 인식하는 과정입니다.

모든 합성곱 계층을 통과한 후, 데이터는 밀집 연결 계층으로 들어갑니다. 밀집 연결 계층은 전통적인 피드포워드 신경망과 유사한 구조로, 노드가 계층으로 배열되어 서로 연결되어 있습니다. 데이터는 이러한 밀집 연결 계층을 통해 진행되며, 합성곱 계층에서 추출한 패턴을 학습하여, 네트워크가 객체를 인식할 수 있도록 합니다.

블로거이자 프로그래머로 Machine Learning Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.