반응형

출처: http://m.blog.naver.com/msnayana/220776380373


컨벌루션 신경망 ( Convolutional Neural Networks, CNN ) ~ 개요

딥러닝 알고리즘중에서 

영상과 음성에서 좋은 성능을 보이는 알고리즘으로 CNN이 있다.

이  합성곱신경망(컨벌루션 신경망,CNN)은  전처리를 추가한 다층퍼셉트론의 한종류이지만

​2차원 데이타의 입력이 용이하고 훈련이 용이하고  적은 매개변수라는 장점이 있어 많이 사용된다.

또한

최근엔 CNN과 거의 비슷한 합성곱 심층 신뢰신경망(Convolutional Deep Belief Network, CDBN)

이  개발되어  이 알고리즘의  활용성이 많이 높아 진상태이다.

단순하게 표현하면

CNN은  신경망에 기존의 필터기술을 병합하여

신경망이 2차원 영상을 잘 습득할수 있도록 ​최적화시킨 방법(알고리즘)이다.

​용어에서 보듯이 먼저 컨벌류션(합성곱)의  의미를 이해해야 한다.

​CNN은  용어처름

컨벌류션(기존 영상처리의 필터)기능과 신경망을 결합시켜 성능을 발휘토록 만든 구조이다.  

간단히 표현하면 

       컨벌류션(합성곱) + 신경망 = CNN   이다.

 좀 더 세분화하면

 컨벌류션과 sub-sampling 을 반복하여 데이타량을 줄이고 왜곡시켜  신경망에서 분류케 만든다.

일반적으로  모델은​

 특징추출 +  분류행위 =  부류결과  라는 형식으로 동작하는데

  특징추출은 컨벌류션으로 하고, 분류행위는 신경망으로 한 것이다. ​

그래서 먼저 컨벌류션을 이해해야 한다.

이 기법은 기존의 영상처리에서 잘 사용하는 기능으로 영상필터로 사용된 기술이다.

​영상처리에서 컨벌루션이란 가중치를 갖는 마스크를 이용해서 영상처리를 하는 것을 의미하는데
입력 영상에 마스크를 씌운다음, 입력 영상의 픽셀값과 마스크의 가중치를
각각 곱한 후 그 합을 출력영상의 픽셀값으로 정하는 것을 말한다. 
영상처리에 사용되는 마스크를 필터, 윈도 또는 커널이라고 한다.

​위 과정을 세분화 시켜 아래에서 살펴보면

​입력영상에 윈도우를 이동하면서 계산하는데

계산은 ​ 위처름 해당영역에 윈도우값을 곱하여 합한결과를 적어 나간다.

​이것이 컨벌루션으로 이렇게 하면  아래같은 결과를 만들수 있다.

​이것은 기존의 필터 기술로서 원하는 영상을  추출하고자 할때 사용하는데 특징추출이 주 목적이다.

​기존의 영상필터는 커널(윈도우)이 고정값을 사용했는데

여기서는 ​ 필터값도 학습에의해 바뀌도록 설계되어  있다.

그리고

​추출할때는 다양한 여러장을  추출하여  강인한 특징(왜곡,변형같은 환경변화에 잘 적응하는)을

유도하는데  이것을 feature maps이라 한다.  아래 처름..

​아래 그림은

컨벌류션과 subsampling을 반복하면서 영상을 줄여나가는 기본기능을 도식했다.​

​이렇게 계속 줄여나가면 특징이 남게되고

​신경망의 각 입력단자에 바로 접속이 가능한 일차원의 fully connected가 나오고

이것을 신경망 입력단자에 연결시켜 학습시킨다.

​subsampling은 화면의 크기를 줄이는 과정인데 

아래의 방법인 max pool 을 사용한다(해당영역의 최대치를 선택기법)

​위 그림처름 4개중  가장 큰수를 선택하는데 이것은 뉴런이 가장큰신호에 반응하는 것과 유사하다.

이렇게 하면 노이즈가 감소하고 속도도 빠라지고 영상의 분별력이 좋아진다고 한다 

Fully Connected는 ​

2차원 영상을 컨벌류션과 서브​샘플링없이 바로 신경망의 입력에 붙인 다면

학습시간증가, 망의 크기, 변수의 개수가 많아지는  문제가 발생한다.

이렇게 되면 오버피팅과 지역해수렴등의 다양한 문제에 봉착하여 사용이 어렵다. ​

줄이고 줄여 1차원 행렬이 되도록 하여 신경망의 입력단에 각각 하나씩 하여 모두를 매핑한다. 

이렇게 하여 구성한 방법은 아래와 같이 된다.

​위 그림은

컨벌류션과 서브샘플링으로  2차원영상이 특징만 남기고 줄여 1차원 행렬로 바뀌는 과정이다.​

 

​그 과정은

​ 1) 특징추출

 2) topology변화에 영향이 적도록 처리

 3) 분류

 라는 순서로 처리 됨을 알수 있다.​

​ 아래 그림 처름..

​CNN은 layer를 많이 하면 계산량은 늘어나지만 성능은 좋아 진다고 알려져 있다.

​microsoft는 152개의 layer를 적용한 CNN을 만들었다고 한다.

 

이 CNN으로 아래 그림에서 개와 고양이를 골라 낸다.

그것도 아주 잘...​

​다음엔 CNN을 세부적으로 살펴 볼까 한다.

 

마지막 수정일
2016. 9. 12. (본문 내용 업데이트)

반응형

+ Recent posts