본문으로 바로가기

딥러닝 (1) CNN모델

딥러닝은 사람의 사고방식을 컴퓨터에게 가르치는 기계학습 machin learing의 한 분야로 인공신경망(neural network)[각주:1]모형이 발전된 형태이다. 계층구조로 이루어진 인공신경망의 내부계층이 여러 단계로 이루어진 구조다.


MIT는 딥러닝을 10대 혁신 기술 중 하나로 선정하였다. 가트너 리서치의 주목해야 할 기술로도 선정되어 기업의 관심도가 높아지고 있다. 기업들은 과거로부터 축적되어 온 빅데이터를 보유하고 있기 때문에 이를 활용하기 위해 딥러닝 기법을 적용 하고 새로운 가치를 창출해내고 있다. 



딥러닝의 활용 사례

구글의 알파고와 딥드림, 페이스북의 딥페이스(DeepFace), 엔비디아의 GPU 기반 차량용 딥러닝 시스템인 드라이브 PX(Drive PX), 넷플릭스의 영화추천



딥러닝에는 여러 모형이 있다. 딥러닝의 주된 모형은 합성곱 신경망, 순환신경망, 심층신뢰신경망 3가지이다.


합성곱 신경망(CNN, Convolutional Neural Network)

순환신경망 (recurrent neural network)

심층신뢰신경망(deep belief network)



1980년대 Yann LeCun의 최적화 방법 '역전파 알고리즘(back propagation algorithm)'이 소개되어 인공신경망 연구가 발전하였다. 하지만, 이는 분류 정확도가 높으나 처리 속도가 느리며, overfitting의 한계가 있다.

이후 Geoffrey Hinton은 인공신경망의 각 층을 비지도 학습방법으로 학습하고, 전처리 과정을 수행한 데이터를 여러 층으로 쌓아올려 신경망을 구성해 뛰어난 성능을 제시하였다.



합성곱 신경망(CNN)은 이미지 인식 분야에서 주로 사용되고 있는 신경망이다. 생물의 시각처리과정을 모방한 것으로, 패턴의 크기, 위치가 바뀌어도 인식할 수 있는 장점이 있다. 그 근원은 Neocognitron(Fukushima, 1980). LeCun, Bottou, Bengio & Haffner(1998)을 통해 현재 사용하는 합성곱 신경망이 널리 쓰이게 되었다. 

CNN은 필기체 인식을 위해 제안된 모델이었으며, 이미지 인식에 높은 성능을 보이며 활용이 확대되고 있는 중이다.

합성곱 신경망의 특징은 local receptive field, share weights, sub sampling의 방식으로 데이터의 피처를 추출해 모델의 성능을 향상시키고 있다.


local receptive field는 하위계층의 노드가 상위계층의 모든 노드와 연결되어 있지 않고, 지역적으로 일부의 노드에만 연결되어있는 것을 의미한다.



▲ 이미지 출처: www.researchgate.net


위 그림은 CNN의 구조를 나타내고 있다.

가장 왼쪽의 이미지가 입력된 데이터이며(input) 그림의 사각형이 local receptive field이다. local receptive field가 다음 계층인 C1의 한 개의 노드와 가중치로 연결되어있는 모습이다. input의 모든 영역을 C1 패널의 노드로 전달하는 것을 Convolution(합성곱)이라고 한다(그림 상 C1의 패널은 8개).


share weights는 가중치를 공유한다는 의미다. C1의 한 패널 내의 노드들과 input 패턴에 적용되는 필터가 동일함을 말한다. 그림상의 C1은 8개의 패널이 있으므로, 8개의 서로 다른 필터가 있게 되겠다. 패널당 한 개의 공유되는(shared) 필터를 통해 input패턴의 특정 위치에 존재하는 한 개의 특징을 발견하는 것이다.


sub sampling은 C1에서 S1으로 진행되는 과정이다. C1 패널을 S1으로 압축하는 것인데, C1의 영역들을 S2의 노드로 만들어 축소하게 된다. sub sampling을 pooling이라 하기도 한다.



CNN은 위그림과 같이 각 단계(stage)가 Convolutions와 Sub Sampling이라는 두개의 핵심 구조로 구성되었기 때문에 파라미터 개수를 효율적으로 감소시켜 전체 모델의 복잡성을 대폭 감소시켜주는 효과를 제공한다. Stage가 반복되며 최종저긍로 완전 연결 계층 (Fully connected layer)을 생성해 분류를 수행한다.



CNN 사례 - 구글의 딥드림(DeepDream)

딥드림은 제공되는 이미지들의 특징을 학습하고 시각화한다. 기 학습된 데이터를 통해 마치 살바도르 달리와 고흐가 협업을 한 것마냥 보이는 작업 결과를 내어준다(아래 그림). 딥드림을 만들기 위해 구글 프로그래머들은 인간의 뇌를 모델로한 인공신경망(artificial neural network-ANN)을 개발했다. 최소 10~ 최대 30개의 레이어(layer)를 가지고 어느 정도의 결과물에 도달할 때까지 데이터를 필터링하고 아래와 같은 이미지를 얻어낸다. 각 레이어는 이미지의 다양한 세부 정보를 선택한다. 초기 레이어는 그림 내 테두리를 감지하고 점차 구체적인 모양을 찾고 마지막 층은 자동차, 건물과 같은 정교한 물체를 인지하게 된다. 구글의 개발자들은 이 과정을 inceptionism이라고 불렀다. 

아래와 같은 결과를 내기 위해서는 기 훈련된 과정이 있어야 하는데, 그 예로 ANN이 자전를 식별하도록 학습시키려면 수백만대의 자전거 이미지가 필요하다. 그리고 세부 사항을 학습 시키기 위한(ex: 자전거와 오토바이의 구분을 위해 엔진, 배기 시스템 특정) 코드 수정 등이 진행되었다.






참고

안성만(2016). 딥러닝의 모형과 응용사례. 지능정보연구, 22(2), 127-142.

허인성(2015). 합성곱 신경망의 기계학습 기법을 이용한 이미지 분류. 서강대학교 석사.

  1. 인공신경망은 생물학적측면에서 아이디어를 얻은 학습 알고리즘이다(1940년). [본문으로]