요즘 딥 러닝(Deep Learning)이 핫합니다. 몇 년 전부터 기계학습(Machine Learning)이 일반인들에게 알려지기 시작하더니, 지금은 기계학습의 한 종류인 딥 러닝이 아예 기계학습이란 단어를 대체할 듯한 기세인 듯합니다.
페이스북 인공지능 연구소 수장, 얀 러쿤(Yann LeCun) 교수 (사진 출처: 홈페이지)
특히 구글이 딥 러닝 전문가 기업인 딥마인드(Deep Mind)를 인수하고, 페이스북이 딥 러닝 대가인 뉴욕대학의 얀 러쿤(Yann LeCun) 교수를 인공지능 센터장으로 모셔갔으며, 중국의 구글이라 불리는 바이두에서도 기계학습 분야의 스타 학자 스탠포드 대학의 앤드류 응(Andrew Ng) 교수를 모셔가는 등, 지금은 바야흐로 딥 러닝 인재전쟁에 가까운 모습입니다.
그렇다면 딥 러닝이란 과연 무엇일까요? 오늘은 딥 러닝의 전반적인 개념에 대해 거칠게 한번 훑어보도록 하겠습니다.
딥 러닝이란?
딥 러닝은 사실 새로운 개념이 아닙니다. 오래전부터 있던 인공신경망(Artificial Neural Network; ANN)과 크게 다를 바 없죠. ‘인공신경망’이라고 하면 단어에서 나오는 뽀대(?) 때문인지 막 복잡한 뇌 구조가 생각나면서 꿈 같은 이야기가 펼쳐질 것 같은 느낌이 드는데요, 사실 인공신경망은 그렇게 판타스틱한 개념은 아닙니다.
그저 선형 맞춤(linear fitting)과 비선형 변환(nonlinear transformation or activation)을 반복해 쌓아올린 구조에 불과하죠. 다시 말해, 인공신경망은 데이터를 잘 구분할 수 있는 선들을 긋고 이 공간들을 잘 왜곡해 합하는 것을 반복하는 구조라고 할 수 있습니다. 선 긋고, 구기고, 합하고, 선 긋고, 구기고, 합하고, 선 긋고, 구기고, 합하고… (먹고 뜯고 맛보고 즐기고…)
파란 선과 빨간 선의 영역을 구분한다고 생각해보죠. 그냥 구분선을 긋는다면 아마 왼쪽처럼 불완전하게 그을 수 있을 것입니다. 하지만 공간을 왜곡하면 오른쪽과 같이 아름답게 구분선을 그릴 수 있습니다. 이처럼 인공신경망은 선 긋고, 구기고, 합하는 과정을 반복하여 데이터를 처리합니다. (이미지 출처: colah’s blog)
예를 들어 컴퓨터가 사진 속에서 고양이를 검출해내야 한다고 생각해보죠. ‘고양이’라는 추상적 이미지는 아마 선, 면, 형상, 색깔, 크기 등 다양한 요소들이 조합된 결과물일 것입니다. 이것은 아마 ‘선 30cm 이상은 고양이, 이하는 고양이 아님’, 또는 ‘갈색은 고양이, 빨간색은 고양이 아님’처럼 간단한 선형 구분으로는 식별해 낼 수 없는 문제겠죠. 딥 러닝은 이 과제를 선 긋고 왜곡하고 합하고를 반복하며 복잡한 공간 속에서의 최적의 구분선을 만들어 내는 목적을 가지고 있습니다.
쉽게 말씀드리려고 제가 딥 러닝과 클래시피케이션(classification) 문제를 섞어서 말씀드린 건데요, 사실 딥 러닝은 리얼 밸류(real-value)를 다루는 리그리에이션(regression) 문제에도 적용할 수 있습니다.
그럼 어떠한 규칙으로 선을 긋고 공간을 왜곡하느냐고요? 바로 데이터에 근거하는 거죠. 일단 대충 선을 긋고 구분 결과가 더 좋게 나오도록 그것들을 살살 움직이는 겁니다. 이러한 과정을 최적화(optimization)라고 하는데요, 딥 러닝은 아주 많은 데이터와 아주 오랜 시간의 최적화를 통해 데이터를 학습합니다. 양에는 장사 없다고나 할까요?
여러 개의 뉴런(선형 맞춤 + 비선형 변환)이 합쳐지면 복잡한 형상의 함수도 추정할 수 있다. (이미지 출처: 파스칼 빈센트 홈페이지)
제프리 힌톤, 인공신경망 연구를 살려내다
사실 인공신경망은 1940년대에 이미 개발된 방법이었고, 1980년대에 역전파(back propagation) 방법이라는 최적화 방법이 소개되며 인공신경망 연구가 절정기에 이른 바 있습니다. 이후 인공신경망은 영상처리, 인공지능, 제어 등 다양한 분야에 적용되었는데요, 90년대에 이르러 그 연구가 포화 상태에 이르고, 이내 한계가 보이기 시작하더니 곧 암흑기를 만나게 됩니다.
심지어 2000년대 초반 논문 심사에서는 ‘인공신경망’이란 단어만 나오면 ‘뭐야, 이거 옛날 거잖아?’라며 리젝(reject)을 하기도 했으니까요. 그렇게 인공신경망은 사라져 갔고, 2000년대에는 비선형 함수를 이용한 다양한 커널 방법(예: 서포트 벡터 머신, 가우시안 프로세스)들이 기계학습의 대세를 이루게 됩니다.
딥 러닝의 일등 공신, 토론토 대학교의 힌톤 교수 (사진 출처: 토론토 대학교)
모두가 인공신경망을 외면하던 암흑기 시절, 그래도 꿋꿋하게 인공신경망 외길을 걸어오던 학자가 있었으니 바로 그가 딥 러닝의 일등 공신인 토론토 대학교의 제프리 힌톤(Geoffrey Hinton) 교수입니다. 인공신경망이 외면받는 여러 한계 중 대표적인 문제는 바로 최적화가 쉽지 않다는 점이었습니다. 생각해보세요. 수만 개의 뉴런들이 수백만 개의 선들에 의해 연결되어 있고 여러분들은 이 선들에 적당한 값들을 할당해야 합니다. (일명 parameter training이죠)
이걸 최적화 알고리즘을 통해 해줘야 하는데, 최적화 알고리즘이 만약 진짜 최적값이 아닌 잘못된 최적값에 도달하면 어쩌죠? 예를 들어 최고 높은 산봉우리에 올라야 하는 게 목적이라고 하면, 앞만 보고 막 달려서 산봉우리에 올랐더니 ‘엥? 이 산이 아닌게벼…?’라고 하면 어찌하느냔 말입니다. 인공신경망은 그 구조가 워낙 복잡했기에 이런 문제가 발생했을 때 그야말로 속수무책이었죠. (그래서 제 예전 지도교수님은 인공신경망을 ‘black magic’이라고도 하셨죠)
하지만 힌톤 교수는 이러한 함정(local minima)들을 데이터의 전처리과정(pre-training)을 통해 크게 해결할 수 있음을 밝혔습니다. 이 연구가 바로 “A fast learning algorithm for deep belief nets”라는 2006년의 논문인데요, 힌톤 교수는 이 논문을 통해 인공신경망의 각 층을 먼저 비지도 학습방법(unsupervised learning)을 통해 잘 손질해주고, 그렇게 전처리한 데이터를 여러 층 쌓아올려 인공신경망 최적화를 수행하면 ‘이 산이 아닌게벼?’ 없이 훌륭한 결과를 만들어 낼 수 있다는 것을 보였습니다.
이 논문을 기점으로 인공신경망 연구는 새 전기가 열리게 됩니다. 특히 인공신경망은 빅데이터와 찰떡궁합이었죠. 2006년 이전의 많은 연구가 데이터의 구체적인 형상 파악에 노력을 쏟았었다면, 이젠 그냥 어마어마한 구조의 인공신경망에 엄청난 데이터를 마구 때려 넣는 겁니다. 그리고선 2006년 이후 개발된 세련된 최적화 기법을 써서 몇 날 며칠을 학습하면 ‘짜잔~’하고 최고의 결과를 내놓는다는 거죠.
딥 러닝 기법은 이후 압도적인 성능으로 각종 기계학습(Machine Learning) 대회의 우승을 휩쓸며 자신이 유아독존의 기법임을 과시했고, 현재는 다른 기계학습 방법을 통해 영상처리, 음성인식 등을 연구하셨던 분들 역시 딥 러닝으로 대동단결하는 양상을 보이고 있습니다.
기계학습 관련 기업들. 이 중 페이스북, 구글, 바이두 등은 모두 딥 러닝에 사활을 걸고 있다. (이미지 출처: shivonzilis.com)
딥 러닝 방식의 성공 요인 4가지
그렇다면 그토록 오랜 암흑기였던 인공신경망을 성공적인 딥 러닝으로 환골탈태하게 한 요인은 뭘까요? 그 요인에는 크게 다음과 같은 네 가지를 꼽을 수 있습니다.
1. 비지도 학습방법을 이용한 전처리과정
앞서 힌톤 교수가 2006년에 제안했던 것이 바로 이 방법입니다. 비지도 학습방법을 간단히 설명하자면 ‘이건 사과’, ‘이건 고양이’, ‘이건 사람’과 같은 “가르침” 없이 그냥 사과, 고양이, 사람을 다 던져놓고 구분하라고 시키는 학습 방법인데요, 그렇게 되면 아무래도 컴퓨터는 비슷한 것끼리 군집(cluster)을 찾게 되겠죠.
알고리즘은 군집화하는 과정에서 특이한 놈들은 과감하게 무시하게 되고, 결과적으로 노이즈 감소의 효과를 얻게 됩니다. 이렇게 비지도 학습방법으로 데이터를 고르게 잘 손질할 수 있고, 이것을 깊은 인공신경망(=딥 러닝망)에 넣으면 앞서 제기한 함정들에 훨씬 적게 빠진다는 것입니다. 이것이 바로 딥 러닝의 최초 진일보였죠.
2. 컨볼루셔널 뉴럴 네트워크의 진화
기계학습은 “데이터 → 지식(knowledge)”으로 바로 학습을 진행할 수도 있지만 보통 중간 단계인 특징 추출(feature extraction)을 거쳐 “데이터 → 특징(feature) → 지식”의 단계로 학습하는 것이 보통입니다. 예를 들어 사진 속에서 사물을 인식하기 위해 픽셀값에서 먼저 특징적인 선이나 특징적인 색 분포 등을 먼저 추출한 후 이를 기반으로 ‘이건 사과다.’, ‘이건 바나나다.’라는 판단을 내리는 것이죠.
이러한 중간 표현단계를 특징 지도(feature map)이라고 하는데요, 기계학습의 성능은 얼마만큼 좋은 특징들을 뽑아내느냐에 따라 그 성능이 매우 크게 좌지우지됩니다. (이는 이미지 처리뿐만 아니라 음성 인식, 자연어 분석 등 대부분의 기계학습에 적용되는 이야기입니다.)
원본 이미지(우측)와 컨볼루셔널 네트워크에 의해 추출된 특징 지도(좌측) (이미지 출처: M. Zeiler)
딥 러닝의 성공 요인 중 하나를 꼽자면, 예전엔 사람의 예측에 의해 뽑히던 이 특징들을 지금은 이마저도 기계학습을 이용해 뽑는다는 것입니다. 다시 말해, 예전엔 ‘선들을 추출해서 학습시키면 사물인식이 잘 될 거야.’와 같이 사람이 먼저 이 선들을 추출하는 알고리즘을 만들어 주었는데, 이제는 특징 추출과 학습 모두가 딥 러닝 알고리즘 안에 포함되었다는 것이죠.
다단계로 특징을 추출해 학습하는 컨볼루셔널 뉴럴 네트워크(Convolutional Neural Network)는 현재 딥 러닝의 대세로서 특히 이미지 인식에서 큰 발전을 이룩하고 있습니다.
3. 시계열 데이터를 위한 리커런트 뉴럴 네트워크
딥 러닝 알고리즘은 크게 세 분류로 나눌 수 있습니다.
시계열 데이터(Time-series data)란 시간의 흐름에 따라 변하는 데이터를 말하는데요, 예를 들면 주가도 시간에 따라 변하고, 사람의 움직임도 시간에 따라 변하고, 비디오도 시간에 따라 변하죠. 이러한 시계열 데이터에서 탁월한 성능을 보여주는 딥 러닝 방법이 바로 리커런트 뉴럴 네트워크(RNN)입니다. RNN은 매 순간마다 인공신경망 구조를 쌓아올렸다고 생각하시면 되는데요, 예를 들면 100초면 100개의 인공신경망을 쌓아올린 거죠. (그래서 딥 러닝 중에 가장 깊은 구조라고도 불립니다)
예전의 RNN은 인공신경망이 너무 깊어서 오랜 시간 전의 데이터들을 까먹는 현상(vanishing gradient problem) 때문에 학습이 힘들었는데요, 유르겐 슈미트후버(Jurgen Schmidhuber) 교수의 Long-Short term Memory란 게이트 유닛을 노드마다 배치하여 이러한 문제를 극복, 현재는 컨볼루셔널 네트워크의 가장 강력한 경쟁 상대로 자리매김하고 있습니다.
사실 예전엔 ‘많은 데이터로 가지고 이렇게 저렇게 하면 아마 잘 될 거야…’라는 생각들은 하고 있더라도 그것을 구현하기가 쉽지 않았습니다. 잘 될지 안 될지도 모르는데 수십 대의 컴퓨터를 몇 달간 돌리고 있을 수는 없는 노릇이니까요. 하지만 GPGPU(General-Purpose computing on Graphics Processing Units)이란 개념이 개발되며 저렴한 가격으로 CPU와 병렬처리를 할 수 있는 GPU 제품들이 출시되었고, 이를 효율적으로 이용하는 언어구조(예: CuDA)들이 개발되며 딥 러닝은 그 컴퓨팅 시간이 수십 분의 일로 줄어들었습니다.
지금까지 딥 러닝에 대해 알아봤습니다. 요약하자면 딥 러닝은 사실 오래전부터 있던 인공신경망과 크게 다를 바 없지만 알고리즘적인 발전과 하드웨어의 발전, 그리고 빅데이터의 힘 덕분에 현재 최고 성능을 가진 기계학습 방법으로 평가받고 있으며, 미래 인공지능의 희망으로 떠오르고 있다는 이야기였습니다.
그렇다면 딥 러닝 말고 다른 기계학습 방법들은 모두 사라져야 하는 걸까요? 물론 그것은 아닙니다. 일단 딥 러닝은 많은 양의 데이터와 많은 컴퓨팅 자원을 필요로 합니다. (저도 이번에 80만 원짜리 GPU를 구매했습니다. ㅠㅠ) 따라서 핸드폰이나 웨어러블과 같은 포터블 기기는 이러한 컴퓨팅이 불가능할 테니 딥 러닝을 적용하기 쉽지 않겠죠.
또한, 로봇과 같이 실시간성(real-time)이 보장되어야 하는 분야 역시 다른 기계학습 방법을 취하는 게 좋을 수도 있을 것입니다. (이건 마치 컴퓨터엔 윈도우, 핸드폰엔 안드로이드와 같은 맥락이라 할 수 있죠.)
하지만 그렇다고 딥 러닝이 이들 분야와 무관하느냐 하면 꼭 그렇지만은 않습니다. 여러분의 컴퓨터가 좋아서 구글 검색 결과가 좋나요? 다 구글 서버에서 알아서 처리해주니 그런 거지요.
딥 러닝도 마찬가지로 만약 디바이스가 사물인터넷을 이용해 머리 좋은 서버와 잘 교신한다면 포터블 디바이스 역시 딥 러닝의 은총을 받을 수 있을 것으로 생각합니다. 특히 구글이 로봇의 미래라 생각하는 클라우드 로보틱스를 구현한다면 여러 로봇이 집단 지성을 발휘하며 문제를 해결해 나가는 것을 미래에 볼 수도 있겠지요.
딥 러닝, 인공지능의 가장 희망적인 미래임은 분명합니다. 이 분야와 관계없는 분들도 공부를 해두시면 좋을 것 같습니다. 다음 편에선 ‘딥 러닝 공부를 위한 거의 모든 공부자료’를 다룹니다. (계속)
첫댓글 잘리는 부분 좀 해결해 주세요
----
그리고 수고 하셨습니다.
----
80년대 초 제가 공부하면서 수학적 모델 논문들도 좀 읽었었는데
- 감정도 모델링 할 수 있다는 아이디어가 머리에 떠 오르더라구요.
논문 복사한 것 몇 박스를 - 복사비도 엄청 들어간 것인데
- 이사하는 날 - 지키지 않는 사이
- 고물 장사가 가져가 버렸어요. 황당했지요.
----
그러면서 바쁜 일로 다시는 그 분야 논문 읽지 않았는데
기본 아이디어는 가지고 있어요.
신경망 시낲스 에서 연결할 때 마다 가중치값을 주어 시뮬레이션 해 보는 논문이었었는데 - 여기서는 가중치 주는 처리 과정은 눈에 띄지 않네요.
박문호선생이 - 설명한 내용으로 기본 설계하면 많은 기능 갖게 할 수 있을 것입니다.
박문호 선생이 시낲스 할 때 오메가 아이 제이로 표현해서 가중치 주는 과정을 말씀하셔서 - 그 내용이 포함된 것으로 생각했었는데 - 조금 자세한 설명에서는 아마도 가중치 주는 과정은 포함됬을 가능성이 높습니다.