[머신러닝 특집] 딥러닝, 인공지능의 르네상스를 이끌다
마이크로소프트웨어 2015.10.15(목) 강신동 지능도시 대표
https://www.imaso.co.kr/news/article_view.php?article_idx=20151005120518
인공신경망은 신경세포 중에서도 뇌를 이루고 있는 뇌신경 세포의 활동을 모방해 만들었다. 인공신경망의 탄생은 그 때까지 해결하지 못했던 많은 문제를 해결할 수 있는 길을 만드는 듯 했다. 그만큼 기대를 모으고 관련 연구를 진행했지만, 많은 난관에 부딪히며 인기를 잃게 됐다.
최근 인공신경망 연구가 다시 활기를 띄고 있다. 인공지능에 대한 관심과 딥러닝 기술의 바람과 함께 다시 주목받고 있는 것이다.
인공신경망과 대상 시스템의 모델링
어떤 대상이 되는 시스템의 문제를 해결하기 위해서는 보통 일단 수학적인 모델링을 시도한다. 결과는 크게 두 가지다. 물리학에서처럼 수학적으로 완벽하게 맞는 모델링을 찾거나 ‘운이 좋아서’ 문제를 해결하는 경우다. 후자의 예를 들면 테일러 급수나 선형회귀처럼 근사하게 맞는 수학적 모델을 찾아 간단한 수식으로 만들었는데 ‘운이 좋아’ 시스템 특성을 파악하는 경우가 있다.
파악해야 하는 시스템으로 선형 시스템과 비선형 시스템이 있다. 선형 시스템은 복잡해 보이지만 간단한 시스템의 합으로 표현될 수 있다. 비선형 시스템은 수학적으로 모델링되기 쉽지 않은 경우다.
▲ 인공신경망(출처: wikipedia)
인공신경망의 근원적인 우수성은 인공신경망 자체가 대상 시스템을 특성을 그대로 간직해 학습에 사용된 데이터가 아닌 데이터를 분류, 예측할 수 있다는 것이다. 조건은 대상으로 하는 시스템의 수학적 모델링이나 분석이 없이 실제 측정된 데이터만을 이용하여 인공신경망을 학습을 성공적으로 마쳤을 때다.
딥러닝
딥러닝은 여러 계층 단계를 직렬로 연결하여 기존에 해결하지 못했던 문제들을 해결하면서 다시 주목 받고 있다. 기존의 소규모 인공신경망으로는 가질 수 없는 뛰어난 새로운 기능이 딥러닝에서 가능하다. 히든 계층 (hidden layer)을 수를 늘려 더 깊은 특징 추출과 추상화(abstraction)가 일어남을 알게 돼서다.
딥러닝에서 가장 중요한 부분은 딥러닝의 다양한 모델을 정하거나 새로이 모델을 개발하는 것이고, 그 모델을 학습시킬 수 있는 알고리즘을 찾는 것이다. 여기 사용되는 주요 프레임워크와 프로그래밍 언어가 있다.
프레임워크 | 프로그래밍 언어 |
DL4J | Java, Scala |
Caffe | C++ |
Theano | Python |
Torch | Lua |
딥러닝 프레임워크와 프로그래밍 언어
딥러닝의 성능
학습이 끝난 딥러닝은 대부분 단순한 곱하기와 더하기와 활성화 함수(activation function)을 통과하는 비교적 단순한 방식으로 계산된다. 학습을 하는 과정에서는 컴퓨팅 파워나 자원을 많이 소모하지만 일단 학습이 끝난 후에는 그 결과인 웨이트(weight,가중치) 값만을 이용하여 매우 빠르게 계산을 할 수 있다. 이런 이유로 시스템의 특성을 반영한 복잡한 수학적 모델의 수행 중 해석에 있어서 딥러닝이 더 뛰어난 성능을 보여주기도 한다.
딥러닝과 가치 축적
보통의 프로그래밍은 기존의 라이브러리의 API를 사용하여 그 내부구조에 대해서 큰 이해가 없이도 사용가능하다. 그래서 새로 진입하는 개발자의 입장에서도 많은 노력이 없이도 산업에 진입을 할 수도 있고, 기존의 경험 많은 개발자에 크게 밀리지 않고 최신의 API로 쉽게 접근할 수 있다.
그러나 이러한 것이 개발자나 기업입장에서는 장점이 아니다. 기술에 대한 이해가 없어도 쉽게 접근할 수 있다는 것은 진입장벽이 낮다는 것을 의미할 뿐이다. 깊은 이해를 기반으로 많은 지식과 경험을 쌓은 기반 위에서 부가가치가 큰 것을 만들 수 있는 환경을 만드는 것이 중요하다.
딥러닝이 이런 분야다. 장기적으로 수련하고 연구해야 기반을 쌓을 수 있어서다. 딥러닝은 학생 때 이런거 배워서 어디에 쓰냐는 회의도 많이 들었을 수학과 물리의 기반 위에 뿌리를 내렸다. 새로운 뭔가를 만들기 위해서는 뛰어난 수학과 물리학의 깊은 이해를 필요로 한다. 진입장벽이 높은 기술은 개발자에게 충분히 매력적이다.
행렬과 텐서 해석
(1,2) 는 벡터인가? (1,2)는 하나의 숫자 쌍이다. 물 분자를 나타내는 것일 수도 있다. 산소 1개에 수소 2개가 붙어서 H2O여서다. 결과적으로, (1,2)는 벡터가 아니다. 벡터를 다루기 위한 표현형일 뿐이다. 본질과 표현형을 구분할 필요가 있다.
물이 아래로 흐르는 것은 뉴턴 관점의 중력이나 아인슈타인 관점의 공간이 찌그러짐이나 열역학 관점의 엔트로피 증가 등의 구동력(driving force)이 원인이 돼서 아래로 흐르는 것이지 물이 아래로 흐르는 것이 원인이 되어서 구동력이 생기는 것은 아니다.
앞선 이야기는 물리학적인 텐서(tensor)를 설명하기 위해서다. 결과적으로 벡터나 행렬과 더 복잡한 숫자 좌표를 다루는 것을 텐서(tensor) 해석이라고 볼 수 있다. 텐서 해석은 딥러닝 연구의 대부분을 차지한다.
딥러닝과 물리학 개념
딥러닝에는 많은 물리학적 개념 위에서 발전하였다. 물리학은 실증된 자연현상 자체로 검증된 수학적 모델이므로 물리학의 기반 위에서 발전한 부분이 많다.
인공신경망 시스템에 온도와 에너지 개념을 도입하여 획기적인 돌파구를 마련하여 르네상스를 이끌었다. 또한 인공신경망의 각 뉴런들을 물질의 원자로 취급하여 볼쯔만의 엔트로피의 물리학적 결과를 도입하여 도약을 이끌고도 있다.
간단하게는 물리학에서 말하는 관성의 개념을 도입해 학습의 방향을 현재 계산된 방향 이외에도 과거의 방향도 영향을 함께 받아서 기존의 방향을 바꾸는데 방해를 주도록 설계하여 동작하는 방법도 있다.
딥러닝의 학습과 최적화
딥러닝의 과정은 준비된 데이터를 이용하여 인공신경망을 학습하는 것과 더불어, 가장 효율적으로 빠른 시간내에 전체에서 가장 에너지가 최소로 되는 지점을 찾아가는 최적화의 문제풀이 과정이다.
학습이 가능하도록 하는 인공신경망의 구조를 뜻하는 모델을 찾는 것과 그 모델을 효율적으로 학습시키기 위한 방법을 찾는 것이 딥러닝의 모든 것이라고 볼 수 있다.
지역 최소값
인공신경망에서는 수 많은 파라미터에 해당하는 가중치값(weight) 각각을 조절하여 시스템 전체의 움직임을 조절하며 학습을 행한다. 매우 많은 파라미터를 움직이기 때문에 에너지가 최소가 되는 최적점을 찾기 위한 파라미터 조절은 원하지 않게 지역적인 최소값을 위해서만 학습이 되고 전체적인 최소값을 가지는 파라미터로는 학습이 진행이 안될 경우도 발생한다. 이러한 현상은 파라미터의 초기값의 구조에 매우 민감하게 치우친다.
담금질 모사 (Simulated Annealing)
지역최소값에 빠지는 문제점을 빠져나가기 위한 방법의 일종으로 시뮬레이티드 어닐링 방법을 사용하기도 한다. 담금질은 숯불에 뜨겁게 달군 강철을 식히는 과정을 뜻한다. 철원자들 사이에 탄소 원자가 적절히 끼어들어서 철원자의 미끄러짐을 이종 원자인 탄소 원자가 방지하여 단단한 강철을 만드는 것이다.
뜨겁게 벌겋게 달구어진 철(Fe) 원자는 강하게 진동하며 원자들간의 틈새는 넓어지게 되며 이러한 이유로 금속을 뜨겁게 가열하면 부피가 늘어 난다. 뜨거운 상태에서 에너지를 잃고서 식어가면 원자들의 난잡한 진동도 줄어들게 되어 쇠뭉치의 부피도 줄어든다. 그러나, 빈틈없이 제자지를 찾아가기 전에 에너지를 많이 잃고서 온도가 떨어지면 약간의 빈틈도 있는 상태로 얼어버리는데 이러한 상태는 더 낮은 에너지를 가진 빈 틈없는 상태가 있음에도 불구하고 더 이상 빈 틈을 메울 수는 없다. 이러한 상태가 지역 최소값에 빠진 상태이다. 이러한 지역 최소값 상태를 벗어나서 빈 틈이 전혀 없는 전역적 최소값에 도달하려면 다시 열을 가해서 철원자가 빈 틈을 찾아갈 수 있도록 진동하게 하면 빈 틈이 전혀 없는 상태로 만들 수 있다.
이와 같이, 에너지가 최소의 상태를 향해서 학습이 진행되는 동안에 파라미터의 값을 임의로 진동시켜서 지역 최소값에 빠지지 않고 전역적인 에너지 최소값에 도달하도록 만드는 기법이 시뮬레이티드 어닐링 방법이다.
딥러닝의 학습 데이터와 실행
딥러닝을 위한 데이터는 학습용과 검증용 두 종류로 나뉜다. 학습용 데이터는 인공신경망을 매우 많이 반복해서 학습시키기 위해 준비하는 데이터로서 학습을 위한 데이터와 검증을 위한 데이터는 크게 차이가 없다.
학습이 완료된 인공신경망에 대해서 학습에 사용되지 않은 신선한 데이터를 제시하여 원하는 결과를 인공신경망이 제시하는지를 보고 인공신경망의 성능이 뛰어난지를 알 수 있다.
학습데이터에 대해서 100% 잘 맞춘다고 해도, 학습시에 사용하지 않은 검증용 데이터를 제시하면 엉뚱한 결과를 내놓는다면 그 인공신경망은 학습이 잘 되었다고 하더라도 쓸모가 없는 인공신경망이 된다.
컴퓨팅 파워와 GPU
딥러닝에서 학습을 위해서는 매우 많은 데이터를 이용하여 학습 시키는 것이 매우 중요하다. 그러나, 매우 많은 학습 데이터를 반복하여 학습시키는 데에는 매우 많은 시간이 걸리게 되는데, 이러한 이유로 컴퓨팅 파워가 약한 과거의 CPU로는 많은 학습 데이터를 처리하는데 너무 많은 시간이 걸려서 실용적이지 못하였다. 요즘의 CPU는 과거에 비해서 비교적 빠른 처리를 할 수는 있으나 획기적으로 빠른 학습을 위한 것은 그래픽카드에 사용되는 GPU를 이용하면서 딥러닝의 성능이 크게 향상되었다.
요즘 PC에 꽂을 수 있는 GPU는 3000개 이상의 처리 코어를 가지고 있어서 동시에 병렬적으로 딥러닝에 사용되는 수치 계산을 할 수 있다.
분산 컴퓨팅
대규모 처리를 위해 대세로 자리잡은 하둡(Hadoop)이나 스파크(Spark) 등의 분산컴퓨팅 플랫폼과의 연동에 대해서도 기술이 빠르게 발전하고 있다. 현재 널리 알려진 딥러닝 프레임워크(framework)들은 이러한 하둡이나 스파크와의 연동에 많은 노력을 기울이고 있다.
참고로, DL4J(Deep Learning for Java) 프레임워크는 설계부터 Java API에 최적화되어 개발되었으며, 하둡이나 스파크가 JVM기반이어서 궁합이 잘 맞으며 스파크 시스템의 기본 언어인 스칼라(Scala) API도 이미 제공하고 있다.
딥러닝 클라우드
딥러닝에는 성능이 좋은 컴퓨터와 GPU가 필요한데, 이러한 컴퓨팅 자원을 직접 사서 구축하지 않고 클라우드 상태에서 이용할 수 있는 서비스들이 나오고 있다. 로직 테스트가 끝난 후, 빠른 학습을 위해 사용하거나 서비스를 위해 사용하는 것은 좋지만 로직 개발시에는 실제로 컴퓨팅하는 것보다는 개발에 많은 시간을 소모하기에 시간당 과금을 매기는 딥러닝 클라우드는 맞지 않을 수도 있다.
오버 피팅 (Over Fitting)
준비된 데이터가 노이즈를 가질 수도 있고 실제의 데이터는 약간의 오류들을 가지고 있으며 이상적이지 않는 학습 데이터를 이용하는 경우가 많다. 뉴런의 노드 갯수가 너무 많거나 필요 이상으로 자유도를 많이 가진 인공신경망에서는 주어진 학습 데이터에 과도하게 정밀하게 학습이 되는 경우가 있다. 이러한 경우에는 학습 데이터의 학습은 잘 되었다고 하더라도 테스트 데이터나 실제 데이터를 입력하면 원하지 않는 결과값을 주는 경우가 있다. 이러한 것을 오버 피팅이라고 한다. 오버 피팅은 과거에 인공신경망에 고질적인 문제점이었지만 요즘 딥러닝에서는 이러한 문제를 피할 수 있는 여러 방법이 개발되어서 딥러닝이 크게 환영 받는 계기가 되었다.
드롭 아웃(Drop-Out)과 드롭 커넥트(Drop-Connect)
오버피팅이나 지역 최소값 문제에 대해서 큰 효과를 보는 매우 중요한 방법이다. 딥러닝 인공신경망을 이루고 있는 각 게층의 뉴런을 설정된 확률로 랜덤하게 계산에서 제외시키는 방법이 드롭 아웃이다. 드롭 커넥트는 뉴런 자체를 제외하는 방법과 달리 뉴런 사이의 연결고리를 확률적으로 게산에서 제외시키는 방법이다. 간단한 방법이지만 효과가 매우 좋은 방법으로 판명되었으며 널리 사용되고 있다.
비지도 학습 (Unsupervised Learning)
학습의 과정에서 주어진 입력값에 대해서 출력을 미리 알려주지 않는 상태로 학습을 진행하는 방식이다. 주어진 입력데이터 자체를 이용하여 학습을 행하는 방식이다.
아기가 태어난 직후에는 시력이 약해서 볼 수 없다. 며칠이 지난 후에 보게 되는 것은 방안의 배경과 가까이서 움직이는 부모님의 얼굴이 될 것이다. 처음 보는 아기 입장에서는 배경과 부모님의 얼굴이 서로 거리가 다른 곳에 위치한 사실도 알 수 없다.
그러나 고정된 그림(방안 배경)과 변화하는 화소(픽셀)의 차이는 알 수 있다. 고정된 그림과 변화하는 화소의 경계선이 중요함을 경험에 의해서 느끼게 된다. 고정된 나머지 그림의 화소는 중요하지 않고 또한 변화하는 화소 중에서도 경계선 이외의 것보다는 고정된 화소와 움직이는 화소의 경계면의 움직임을 인식하는게 중요함을 저절로 알게 된다.
그 누구도 아기에게 가르쳐 주지 않은 방식임에도 입력되는 많은 사진들의 연속 데이터에서 선생님의 지도없이 움직임을 인식하게 된다. 이러한 학습 방법을 비지도 학습이라고 부른다. 이는 데이터 중에서 어떤 것이 중요한 것인지 데이터를 제시하는 사람조차도 모르는 경우에 딥러닝을 이용하여 무엇이 중요한지 알 수 있는 매우 중요한 학습 방법이다.
지도 학습 (Supervised Learning)
제시하는 입력 데이터에 대해서 답인 출력을 미리 아는 상태의 데이터를 이용하여 인공신경망을 학습시키는 방법이다. 숫자 필기체를 인식할 수 있도록 학습시키는 것이 이러한 학습법이라고 할 수 있다. 이미 사람이 수작업으로 분류해 놓은 학습 데이터를 이용하여 학습을 시킨다. 개와 고양이를 구별하는 학습을 시킨 후 학습에 사용되지 않은 개나 고양이 사진을 보여 주었을 때 제시한 사진이 개인지 고양이인지 분류할 수 있게 된다.
손실 함수 (Loss Function)
원래 정답에 해당하는 출력에 대해서 인공신경망이 계산에 의해서 예측한 출력의 값의 차이 정도를 게산하는 함수를 뜻한다. 여러가지 손실함수가 있는데 각 출력 뉴런의 각각의 오차를 모두 게산하여 오차의 정도를 표시하는 RMSE(Root Mean Squared Error)와 좀 더 개선된 크로스 엔트로피(Cross-Entorpy) 에러 계산법이 자주 사용된다.
RBM (Restricted Boltzmann Machine)
힌튼 교수가 개발한 RBM(제한된 볼쯔만 머신)은 딥러닝 발전에 매우 크게 기여한 인공신경망 모델이다. 비지도 학습에 해당하는 학습을 안정적으로 시킬 수 있는 모델이다. 프리 트레이닝 (pretraining,예습) 과정을 거치고 RBM을 여러층 쌓아서 여러가지 유용한 딥러닝 인공신경망 모델을 만들 수 있다.
▲ RBM(출처: wikipedia)
Deep AutoEncoder
비지도 학습인 RBM을 여러층을 쌓을 때, 상위 계층으로 올라갈 수록 뉴런의 갯수를 줄여서 학습을 시키면 중요한 핵심 인자만을 뽑아 낼 수 있는데 이러한 방식으로 정보를 압축하거나 더 작은 차원으로 응집된 데이터로 표시할 수 있는 모델이다.
CNN(Convolutional Neural Network)
합성곱을 뜻하는 콘볼루션은 원래 주어진 데이터에서 콘볼루션을 행하는 커널(필터)를 적용하여 특징을 뽑아낼 수 있는 콘볼루션 계층을 일반적인 딥러닝 계층의 앞에 위치한 모델이다.
2차원의 데이터를 잘 처리할 수 있기 때문에 사진에 대한 분석이나 음성을 퓨리에 변환하여 만들어지는 주파수별 세기를 시간순으로 표현한 그림을 분석하여 음성인식을 하는 분야에 사용된다.
CNN은 이미지 처리에 탁월한 성능을 발휘한다. 많은 분야에서 CNN으로 이미지나 동영상 해석이 중요하여 많은 연구가 이루어지고 있으며 빠르게 발전하고 있다. 의료 영상에서 암을 진단하기 위한 보조 도구로 연구도 활발하게 진행되고 있다.
Recurrent Neural Network
재순환 인공신경망이라고 할 수 있는 Recurrent Neural Network는 시간축에 대해서 의미를 연결하는 방식에서 탁월한 성능을 자랑한다. 음성인식 분야도 시간축에 밀접하게 관련이 있으며, 주식 그래프 분석이나 필기 실시간 인식 등에 좋은 성능을 가진다. 이미지가 시간축으로 연결된 동영상의 분석에도 결합되어서 연구되고 있다. 여러 종류의 모델이 있는데 그 중에서도 가장 각광받는 것은 LSTM (Long Short Term Memory) 모델의 인공신경망이다.
Recursive Neural Network
재귀적 인공신경망이라고 할 수 있는 Recursive Neural Network는 tree 구조를 가지는 데이터의 처리에 사용된다. Tree 구조는 언어 분석과 이미지 내부의 물체들의 관계에서 볼 수 있다.
사진을 문장으로 자동으로 변환하는 딥러닝 인공신경망에 Recursive Neural Network가 기여하고 있다.
딥러닝과 특허
딥러닝은 아주 빠르게 발전하고 있는 분야다. 딥러닝의 파괴력이 매우 크기에 많은 유명한 기업에서 많이 연구하고 있다. 요즘 일반적인 기술 사업에서도 특허 전쟁이 대세가 된 것과 마찬가지로, 딥러닝 분야도 새로운 특허 기술을 개발하기 위해 많은 노력을 쏟고 있다.
ujava.org 딥러닝 워크샵
융합 기술에 대해 다루는 유자바 포럼 (ujava.org)은 딥러닝 워크샵을 지속적으로 자주 개최하고 있는데, 9월 2일에는 DL4J를 만든 미국의 Adam Gibson이 직접 강연하는 열 세번째 딥러닝 워크샵 모임을 개최하며 활발한 활동을 이어가고 있다. [마소]
필자소개
![](https://img.imaso.co.kr/2015/10/05/85647U_151005_kang-80x57.jpg)
'시사정보 큐레이션 > ICT·녹색·BT·NT外' 카테고리의 다른 글
저무는 TGIF 시대… 요지부동 ‘빅3(애플•구글•페이스북)’의 시대로 재편 (0) | 2015.10.18 |
---|---|
씨넷,14일(현지시각) '곧 다가올 미래기술 16가지' 사진으로 소개 (0) | 2015.10.17 |
인공지능(AI) 어디까지 왔나...딥러닝 기술과 시장 동향 (0) | 2015.10.16 |
[금융혁명] 인호 고려대 교수, ‘핀테크 학자금 대출사업 계획 중’ (0) | 2015.10.15 |
새로운 산업 성장 동력이 될 `모바일 헬스케어(mHealth)` 현황과 전망 (0) | 2015.10.15 |