Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

컨벌루션 신경망에 대해 알아보기

컨벌루션 신경망(ConvNet)은 딥러닝에서 널리 사용되는 툴입니다. 컨벌루션 신경망은 텍스트, 신호나 기타 여러 연속적인 응답을 다루는 응용 분야에서 사용되기도 하지만 특히 입력이 영상인 경우에 적합합니다. 컨벌루션 신경망은 다른 유형의 신경망과 몇 가지 차이점이 있습니다.

컨벌루션 신경망은 단순 세포와 복합 세포의 배열로 이루어진 시각 피질의 생물학적 구조에서 영감을 받아 탄생했습니다[1]. 이들 세포는 시야의 부분 영역별로 활성화되는 것으로 알려져 있습니다. 이러한 부분 영역을 수용 영역이라고 합니다. 이 분야의 연구 결과에서 영감을 받은 컨벌루션 계층의 뉴런은, 다른 유형의 신경망에서처럼 완전 연결되는 것이 아니라, 자신의 계층의 앞쪽 계층들의 부분 영역에 연결됩니다. 컨벌루션 계층의 뉴런은 영상에서 해당 부분 영역 바깥의 영역에는 반응하지 않습니다.

이러한 부분 영역은 서로 중첩되기도 하기 때문에 ConvNet의 뉴런은 공간적으로 상관관계가 있는 결과를 생성합니다. 반면에 다른 유형의 신경망에서는 뉴런들이 어떠한 연결도 공유하지 않고 독립적인 결과를 생성합니다.

또한, 완전 연결된 뉴런을 갖는 신경망에서는 입력값의 크기가 늘어남에 따라 파라미터(가중치)의 개수가 빠르게 늘어날 수 있습니다. 컨벌루션 신경망은 연결 수가 적고, 가중치를 공유하며, 다운샘플링을 수행하기 때문에 파라미터 개수를 줄입니다.

ConvNet은 컨벌루션 계층, 최댓값 풀링 또는 평균값 풀링 계층, 완전 연결 계층과 같은 여러 개의 계층으로 구성됩니다.

Deep learning architecture diagram. The first image shows an example of a deep learning network architecture. The second image shows an example of how data passes through deep learning layers. As the data passes through the network, the layers learn more complex shapes which combine to create a probability for each class.

ConvNet의 각 계층에 있는 뉴런은 3차원 방식으로 구성되어 있어 3차원 입력값을 3차원 출력값으로 변환합니다. 예를 들어, 영상 입력값에 대해 첫 번째 계층(입력 계층)은 영상을 3차원 입력값으로 가지고 있습니다. 여기서 차원은 영상의 높이, 너비, 색 채널입니다. 첫 번째 컨벌루션 계층에 있는 뉴런은 이러한 영상의 영역에 연결되어 각 영역을 3차원 출력값으로 변환합니다. 각 계층에 있는 은닉 유닛(뉴런)은 원래 입력값의 비선형 조합을 학습하는데, 이를 특징 추출이라고 합니다[2]. 이렇게 학습되는 특징을 활성화라고도 하는데, 어느 한 계층에서 학습된 특징은 다음 계층의 입력값이 됩니다. 마지막으로, 학습된 특징은 신경망의 끝부분에 있는 분류기 또는 회귀 함수의 입력값이 됩니다.

ConvNet의 아키텍처는 포함된 계층의 유형 및 개수에 따라 달라질 수 있습니다. 포함된 계층의 유형 및 개수는 구체적인 응용 방법이나 데이터에 따라 달라집니다. 예를 들어, 범주형 응답 변수를 가지고 있다면 신경망 끝부분에 분류 함수와 분류 계층이 있어야 하며, 연속형 응답 변수를 가지고 있다면 신경망 끝부분에 회귀 계층이 있어야 합니다. 적은 수의 회색조 영상 데이터를 학습하는 데는 컨벌루션 계층이 한 개 또는 두 개밖에 없는 크기가 작은 신경망이 충분할 수 있습니다. 반면에, 수백만 개의 컬러 영상으로 구성된 복잡한 데이터의 경우에는 여러 개의 컨벌루션 및 완전 연결 계층이 포함된 보다 복잡한 신경망이 필요할 수 있습니다.

MATLAB®에서는 다음과 같은 방법으로 컨벌루션 신경망의 계층을 결합할 수 있습니다.

layers = [imageInputLayer([28 28 1])
          convolution2dLayer(5,20)
          reluLayer
          maxPooling2dLayer(2,'Stride',2)
          fullyConnectedLayer(10)
          softmaxLayer
          classificationLayer];

신경망의 계층을 정의한 후에는 trainingOptions 함수를 사용하여 훈련 옵션을 지정해야 합니다. 예를 들면 다음과 같습니다.

options = trainingOptions('sgdm');

그런 다음 trainNetwork 함수를 사용하여 훈련 데이터로 신경망을 훈련시킬 수 있습니다. 데이터, 계층 및 훈련 옵션이 훈련 함수의 입력값이 됩니다. 예를 들면 다음과 같습니다.

convnet = trainNetwork(data,layers,options);

ConvNet의 계층에 대한 자세한 내용은 컨벌루션 신경망의 계층 지정하기 항목을 참조하십시오. 훈련 파라미터를 설정하는 방법은 파라미터를 설정하고 컨벌루션 신경망 훈련시키기 항목을 참조하십시오.

참고 문헌

[1] Hubel, H. D. and Wiesel, T. N. '' Receptive Fields of Single neurones in the Cat’s Striate Cortex.'' Journal of Physiology. Vol 148, pp. 574-591, 1959.

[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. Cambridge, Massachusetts: The MIT Press, 2012.

참고 항목

|

관련 항목