AI/Deep Learning

[Deep Learning] CNN (Convolutional Neural Networks)

byunghyun23 2023. 6. 7. 17:27

CNN(Convolution Neural Networks)

컨볼루션 연산은 우리말로 합성곱이라고 합니다.

즉 CNN은 합성곱을 이용한 신경망입니다.

합성곱은 원본 이미지의 각 픽셀을 포함한 주변 픽셀과 필터의 모든 픽셀을 각각 곱연산을 하고, 그 결과를 모두 합해서 새로운 이미지에 넣습니다.

Fig 1. Convolution

ref : excelsior-cjh.tistory.com/79

 

필터를 사용하는 이유는 이미지에서 우리가 필요한 특정 영역을 추출하기 위해서입니다.

이전에는 사람이 수작업으로 필터를 만들었습니다.

검출 알고리즘이나 SIFT 등이 해당됩니다. 이것은 적용하고자 하는 분야에 대한 전문적 지식을 필요로 하며 시간과 비용이 많이 드는 작업입니다.

 

딥 러닝 기반의 컨볼루션 연산은 특징을 검출하는 필터를 수작업으로 설계하는 것이 아니라 네트워크가 특징을 추출하는 필터를 자동으로 생성합니다.

학습을 계속하면 네트워크를 구성하는 각 뉴런들은 입력한 데이터에 대해 특정 패턴을 잘 추출할 수 있도록 적응하게 됩니다.

 

CNN 모델은 크게 컨볼루션 레이어, 맥스풀링 레이어, 드롭아웃 레이어로 구성됩니다.

Fig 2. Convolution Neural Network

from : https://www.researchgate.net/figure/Architecture-of-our-unsupervised-CNN-Network-contains-three-stages-each-of-which_283433254

 

컨볼루션 레이어

말 그대로 컨볼루션 연산을 하는 레이어입니다. 우리가 정해야 할 것은 필터의 크기, 스트라이드, 패딩입니다.

스트라이드는 그림1에서 처럼 필터가 계산 과정에서 한 스텝마다 이동하는 크기입니다.

패딩은 컨볼루션 연산 전에 입력 이미지 주변에 빈 값을 넣을지 지정하는 옵션입니다.

그림1은 제로패딩을 사용했습니다.

 

풀링 레이어

이미지를 구성하는 픽셀 중 인정합 픽셀들은 비슷한 정보를 갖고 있는 경우가 많습니다.

효율적인 메모리 사용과 과적합 방지를 위해 이미지의 크기를 줄이면서 중요한 정보만 남기는 작업을 하는 레이어가

풀링 레이어입니다. 딥 러닝 기반 컨볼루션 모델은 맥스 풀링을 사용합니다.

그림1에서 컨볼루션 연산을 마친 4x4 데이터 중 특정 영역을 잡아 가장 큰 데이터만 추출합니다.

풀 사이즈를 2x2라고 할 때, 첫 번째 맥스 풀링 출력값은 7, 12, 4, 15 중 15입니다.

 

드롭 아웃 레이어

네트워크의 과적합을 막기 위한 방법입니다. 학습 과정에서 무작위로 뉴런의 부분집합을 제거하는 것입니다.

학습을 하면 데이터에 의해 각각 뉴런의 가중치가 서로 동조화 되는 현상이 발생할 수 있는데, 무작위로 부분집합을 제거하기 때문에 동조화 현상을 피할 수 있습니다.

알고즘에 대한 상세한 내용은 본 포스팅에서 언급하지 않습니다.

 

Fig 3. Dropout

 

 

위 과정을 거친 출력층은 신경망의 입력층이 됩니다.