본문 바로가기

딥러닝

0. 딥러닝이란 무엇이며 왜 사용할까

 안녕하세요, 딥러닝을 사용하여 주식 모델링을 시도하고 있고, 그러한 과정에서 생각한 점을 정리하여 포스팅하고 있는 블로거 입니다. 그러던 와중에 딥러닝에 관해서도 포스팅을 하는게 좋다는 생각이 들어 이렇게 글을 쓰게 되었습니다.

 딥러닝에 관한 정말 좋은 강의들이 많고 글들도 많습니다. 이번글 만큼은 전문적인 지식이 하나도 필요없는 글 입니다. 저의 글도 누군가에게는 정보를 주거나 흥미를 줌으로써 큰 의미를 가졌으면 좋겠네요! 

 

 


1. 인공지능과 딥러닝

 요즘 각종 산업, 사회에서 인공지능이라는 말이 끊임없이 등장 합니다. 우리들의 친구 나무위키에서는 인공지능을 '인간이 지닌 지적 능력의 일부 또는 전체를 인공적으로 구현한 것이다. 현실에서는 이제 막 한걸음을 내딛은 단계이며 SF물에서 흔히 볼 수 있는 소재이기도 하다.' 라고 합니다.

 

 SF 영화를 한번이라도 보신 분들은 특히 이 인공지능이란 말이 익숙합니다. 로봇들이 사람의 말을 이해하고, 행동을 하는 것들을 보며 그 로봇이 인공지능을 가졌다고 생각합니다. 알파고 같이 바둑을 두는 것도 인공지능이라고 하고, 스타크래프트, 피파 등에서 컴퓨터를 상대할때 그런 컴퓨터도 인공지능이라고 합니다. 사실 지금 예시로 든 인공지능 들은 약간씩 의미가 다르긴 합니다.

 

 인공지능이라고 다 같은 인공지능은 아닙니다. 인공지능에 대해서 조금 찾아보신 분들은 '약인공지능' 그리고 '강인공지능' 이라는 개념을 들어보셨을 겁니다. 두 개의 개념을 간단하게 설명하면 이렇습니다. 약인공지능은 특정한 업무를 수행하고, 강인공지능은 인간을 모방합니다. 강인공지능은 특정한 업무 뿐만이 아니라 인간 처럼 배우고, 다양한 분야에서 활용할 수 있습니다. 

 

 그래서 위의 예시에서 말한 SF 영화의 로봇(안드로이드)는 강인공지능 이라고 할 수 있습니다. 사람들과 의사소통 하고 스스로 생각(처럼 보이는 것)을 하고 행동합니다. 반면에 알파고, 게임의 인공지능 등 현재 우리 생활에서 볼 수 있는 인공지능은 약 인공지능 입니다. 알파고는 바둑, 게임의 인공지능은 특정한 게임만 수행할 수 있습니다.

 

 딥러닝 글에서 인공지능 부터 언급한 이유가 있습니다. 개인적으로 딥러닝이 요즘 핫한 이유가 이 인공지능을 만들어내는 도구로써 딥러닝이 가장 잘 활용되고 있기 떄문이라고 생각합니다. 실제로 몇년전에 딥러닝이 큰 관심을 받기 시작한 한 분야는 이미지 분류 부분 입니다. 

 

 ILSVRC라는 이미지 분류(인식) 경진대회가 있습니다. 이곳에서 2012년 딥러닝을 활용한 Alexnet이 기존 모델들의 성능을 정말 압도적으로 이겼습니다. 이때부터 딥러닝에 관심이 커지고, 2015년 Resnet이 아예 사람의 인식 정확도도 뛰어넘게 됩니다. 

 

 이미지 분류라는 개념은 뭔가 생물이 할 것 같은 행동 입니다. 생물이 각자의 감각을 가지고, 이미지를 인식하고 분류하는 것 같지 않나요? 제 생각에는 이러한 생각으로 인해 딥러닝이 더 큰 주목을 받고 있다고 생각합니다.

 


2. 딥러닝은 어떻게 작동하는가

 인공지능을 구현하는 방법에는 여러가지가 있습니다. 그 중에서 '지능'이 가장 높다고 생각하는 인간의 시스템을 구현하고자 하는 딥러닝이 요즘 가장 핫합니다. 

 

 딥러닝이라는 용어 자체의 유래가 이러합니다. 학습하는 지능을 만들고자 하는 분야가 기계학습(머신러닝) 입니다. 기계학습의 한 분야로써 인간(생물)의 신경을 본뜬 모형이 바로 인공 신경망(NN) 입니다. 인공 신경망을 연구하던 훌륭한 학자들이 인공 신경망을 깊게 쌓아서 학습을 잘 시킨다면 굉장한 성능을 보인다! 라는 것을 알게 되었고, 그 결과물이 바로 딥러닝 입니다. 인공 신경망을 깊게(deep) 하게 쌓으면서 Deep learning 이라는 용어가 생겨난 것 입니다.

 

 그래서 딥러닝의 발전 단계에서 신경계에서 영감을 받은 분야가 꽤 있습니다. 눈이 이미지를 인식하는 방법에서 영감을 받은 것이 CNN. CNN의 한계를 해결하고자 하는 Capsule Network 등이 있습니다. 

 

 딥러닝을 간단히 말해보면, 위에서 말한대로 인간의 신경망을 본뜬 모형 입니다. 신경망을 구성하는 가장 기본적인 단위인 '뉴런'을 만듭니다. 그리고 그 뉴런들을 깊게 연결하여, 해결하고 싶은 task를 '잘' 학습 시키는 것 입니다. 그래서 딥러닝으로 좋은 결과를 얻으려면 다음과 같은 재료가 필요합니다.

 

1. 적절한 정보를 가지고 있는 많은 데이터

2. 적절한 모델 구조

3. 적절한 학습 방법

 

 1,2,3번 앞에 '적절한' 이라는 단어가 붙었습니다. 어떤게 적절한 건데? 는 상황에 따라 매우 달라집니다. 그리고 그 적절한 정도를 정확하게 알고 싶으면 알수록 깊은 지식이 필요합니다.

 


3. 딥러닝이 좋은 성능을 보이는 곳

 딥러닝이 특히 주목할만한 성능을 보이는 곳이 있습니다. 제가 생각하기에는, 뭔가 규칙으로 정하기 애매~한 분야들이 그렇습니다. 이미지 인식, 이미지 분류, 언어 번역, 음성 인식, 음성 합성 등 입니다. 요즘에는 이런 분야들을 여러가지로 통합해서 챗봇, 인공지능 비서, 자율 주행차 등의 분야에서도 딥러닝이 잘 활용되고 있죠.

 

 언어를 예로 들면, 같은 단어가 항상 같은 방식으로 번역이 되지는 않습니다. 영어에서 한글로 번역을 할때 please도 ' 제발', '부탁드려요' 등등 굉장히 많은 갈랫길이 있습니다. 앞뒤 문맥을 파악해서 가장 적절하게 번역해야 합니다. 이걸 모두 규칙으로 처리하려면 참 쉽지 않겠죠. 이런 번역 부분에서 딥러닝은 아주 큰 활약을 보이고 있죠.

 

 관련 분야에서 일을 해봤던 경험을 바탕으로 얘기드리자면, 위의 분야에서도 큰 성과를 보이고는 있습니다. 그러나 그 성과가 대부분 연구, 논문 관점에서 그렇습니다. 실제로 서비스가 되기 위해서는 다른의미의 노력이 굉장히 많이 필요하고, 서비스에서도 성과를 거둔 분야가 있는 반면 그렇지 못한 분야도 많습니다. 따라서 저도 딥러닝 만능주의 생각을 가지고 있지는 않습니다. 다만, 현재까지의 연구 결과들을 보면 우리가 바라는 강 인공지능을 구현하는 기술로 딥러닝이 제일 유력해보입니다.

 


이제까지 딥러닝에 대한 간단한 소개 였습니다. 다음 글 부터는 DNN, CNN 등 딥러닝 구조와 학습 방법에 대해서 설명을 해보도록 하겠습니다.