데이터분석/Machine Learning

[개념] 합성곱, 컨볼루션 - convolution

늘근이 2015. 10. 3. 17:00

합성곱은 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자이다.

합성곱 신경망 알고리즘

합성곱 신경망(Convolutional Neural Network, CNN)은 최소한의 전처리(preprocess)를 사용하도록 설계된 다계층 퍼셉트론(multilayer perceptrons)의 한 종류이다. CNN은 하나 또는 여러개의 합성곱 계층과 그 위에 올려진 일반적인 인공 신경망 계층들로 이루어져 있으며, 가중치와 통합 계층(pooling layer)들을 추가로 활용한다. 이러한 구조 덕분에 CNN은 2차원 구조의 입력 데이터를 충분히 활용할 수 있다. 다른 딥 러닝 구조들과 비교해서, CNN은 영상, 음성 분야 모두에서 좋은 성능을 보여준다. CNN은 또한 표준 역전달을 통해 훈련될 수 있다. CNN은 다른 피드포워드 인공신경망 기법들보다 쉽게 훈련되는 편이고 적은 수의 매개변수를 사용한다는 이점이 있다. 최근 딥 러닝에서는 합성곱 심층 신뢰 신경망 (Convolutional Deep Belief Network, CDBN) 가 개발되었는데, 기존 CNN과 구조적으로 매우 비슷해서, 그림의 2차원 구조를 잘 이용할 수 있으며 그와 동시에 심층 신뢰 신경망 (Deep Belief Network, DBN)에서의 선훈련에 의한 장점도 취할 수 있다. CDBN은 다양한 영상과 신호 처리 기법에 사용될 수 있는 일반적인 구조를 제공하며 CIFAR[27]와 같은 표준 이미지 데이터에 대한 여러 벤치마크 결과에 사용되고 있 다.


컨볼루션 네트워크 정정 코드 응용

위의 예는 에러 정정 기법중에서 가장 간단한 방법이다. 에러를 정정하기 위해 사용하는 코드는 많이 있지만 CDMA에서는 콘볼루션 코드라는 것을 사용한다. 보코더에서 디지털 데이터로 바뀌어 출력된 데이터들은 콘볼루션 인코더로 입력되게 된다. 콘볼루션 인코더에서는 강력한 에러 정정 코드인 콘볼루션 코드를(길쌈 코드) 사용하여 전송시 발생한 에러를 복구하게 된다. 콘볼루션 코드는 한 비트를 출력하기 위해서 이전에 출력된 여러 비트를 연관시킨다. 출력된 데이터가 10011100010101이라고 할 경우 맨 뒤의 1은 앞서 출력된 1001110001010중의 어느 부분과 연관이 있다는 의미이다. 콘볼루션 코드화된 모든 비트들은 서로가 연관성이 있게 되므로 수신측에서는 이 연관된 성질을 이용하여 디코더를 사용하여 에러를 정정한다.

콘볼루션 인코더에서는 1비트의 입력에 대하여 2개의 코드 심볼이 만들어진다. 데이터 전송율도 9.6Kbps, 4.8Kbps, 2.4Kbps, 1.2Kbps가 19.2Ksps, 9.6Ksps, 4.8Ksps, 2.4Ksps로 바뀐다. 즉 데이터 전송율이 2배로 바뀐다. 데이터 전송율이 비트에서 심볼로 단위가 바뀌는 이유는 콘볼루션 코드화 되기 전까지는 비트 단위가 독립된 정보 단위로 취급되었지만 그 후에는 콘볼루션 코드가 더해져 비트만으로는 하나의 정보 단위중 부분만을 표현할 수 밖에 없으므로 새로운 독립된 하나의 정보를 표현하는 정보 단위 용어로 심볼을 도입한 것이다.

출처 : http://cafe.daum.net/_c21_/bbs_search_read?grpid=OCCN&fldid=5mb0&datanum=109