CNN (컨볼루션 신경망)
19 Feb 2019 | deep learning programming dlCNN (컨볼루션 신경망)
CNN이란?
기본 딥러닝 프레임에 이미지 인식 분야에서 강력한 성능을 보인다. 전통적인 뉴럴 네트워크 앞에 여러 계층의 컨볼루셔널 계층을 붙인다. CNN은 앞의 컨볼루션 계층을 통해서 입력 받은 이미지에 대한 특징을 추출하고, 추출된 특징을 기반으로 기존의 뉴럴 네트워크를 이용해서 분류한다. 입력된 이미지에서 다시 한번 특징을 추출하기 위해 마스크를 도입했다.
컨볼루셔널 레이어
컨볼루셔널 레이어는 필터를 사용하여 데이터로부터 특징을 추출한다. 이 레이어는 필터와 필터를 비선형 값으로 바꾸는 액티베이션 함수로 이루어져 있다.
필터
필터는 특징이 데이터에 있는지 없는지를 알려준다. 데이터에서 특성을 가지고 있으면 큰값이 나오고, 가지고 있지 않으면 결과가 0에 가깝다.
스트라이드
스트라이드란 필터를 적용 하는 간격이다. 위아래로 한칸씩 움직인다면 스트라이드가 1이다.
패딩
원본 데이터에 필터를 적용하면 결과값이 필터 적용전 보다 작아진다. 하지만 여러 단계에 걸쳐서 연속적ㅈ으로 필터를 적용하면 특징이 많이 유실될 수 있다. 이를 방지하기 위한 방법이 패딩인데, 입력값 주위로 0을 넣어서 입력 값의 크기를 인위적으로 키운 뒤 결과값이 작아지는 것을 방지한다. 패딩의 효과는 오버피팅 또한 방지한다.
활성화 함수
특징 맵(Feature map)이 추출된 후 ReLU와 같은 활성화 함수를 적용한다.
풀링
폴링이란?
추출된 Activation map을 인위로 줄이는 것이다.
컨볼루션 층을 통해 이미지 특징을 도출하였지만 결과가 여전히 크고 복잡하면 이를 다시 한번 축소해야 한다. 이 과정을 풀링 또는 서브 샘플링이라고 한다. 풀링 기법 중 가장 많이 사용되는 방법이 맥스 풀링이다.
이러한 풀링에는 최대값을 뽑아내는 max pooling, 평균값을 뽑아내는 mean pooling등 다양한 종류가 있다.
이중 max pooling에 대해 살펴보자.
위와 같은 data가 주어져 있을때, stride가 2일때의 2x2 필터를 통하여 max pooling을 한 것이다.
Activation function 마다 매번 수행하는것은 아니고, 데이터의 크기를 줄이고 싶을때 선택적으로 사용한다.
폴링을 하는 이유?
overfitting을 방지하기 위하여 한다.
드롭아웃 이란?
노드가 많아지거나 층이 많아진다고 해서 학습이 무조건 좋아지는 것이 아니다. 딥러닝 학습에서 가장 중요한 것은 과적합을 얼마나 효과적으로 피해가는지이다. 드롭아웃은 은닉층에 배치된 노드 중 일부를 임의로 꺼주는 것이다.
Fully Connected Layer
컨볼루셔널 계층에서 특징이 추출된 후 뉴럴 네트워크에 넣어서 분류한다.