Deep Learning에 대한 이해
최근에 AI 또는 Machine Learning (기계 학습)을 얘기하는 곳은 대부분 Deep Learning에 기반을 두고 있다고 보면 된다. Deep Learning은 과거 정체되었던 기술적인 난제들을 비약적으로 발전시키거나 해결해 나가고 있다.
예를 들어, 자동번역기는 이미 쌍방 언어를 구조적으로 분석해서 맞춰 보려고 했던 Rule-based 방식으로부터 시작했으나 언어의 다양성을 결국 풀지 못했고, 이후 기존에 사람이 번역한 데이터를 잔뜩 쌓아서 통계적으로 접근했던 것이 나름의 성과를 얻었지만 한계가 있었는데, 2016년 하반기에 Google이 Deep Learning 방식으로 개발한 Neural MT (신경망 자동번역기)는 불과 2년의 연구결과로 지난 수십년간 도달하지 못한 혁신적인 결과물을 보여주고 있다.
알파고는 더 이상 얘기할 필요 없겠고…
Deep Learning은 어떤 기술인지에 대해 기본적인 이해를 돕고자 한다. 아무리 쉽게 설명하려 해도 기술적인 용어들이 많아서 쉽진 않네요.
위에 보이는 그림은 대학 입시에서 내신(Grade)와 수능(Test) 성적의 분포에서 실제 합격된 학생은 녹색이고 붉은색은 불합격인 경우, 이를 구분할 수 있는 두 선을 표현한 것입니다. 이 두선을 그어놓으면 학생의 내신이 얼마이고 수능이 얼마인지를 대입하면 합격인지 불합격일지 예측이 가능하겠죠.
가장 간단한 원리로 말하자면 바로 이 선을 찾는 것이 Machine Learning이라고 보면 됩니다.
사람은 위 도표를 보고 적당한 위치에 선을 그을 수 있겠지만 컴퓨터는 어떻게 찾을까요?
좀더 간단한 예를 보겠습니다. 아래 차트에 분포된 붉은 점을 가장 잘 표현한 선을 긋는다면 파란색 선이 되겠지요. 즉, 이 선은 수학적으로 y=mx+b 입니다. Linear Regression(선형 회귀)이라는 이 공식은 그런대로 익숙하죠…
이 선을 긋기 위해서 찾아야 할 값은 m과 b인거죠. m은 선의 기울기이고 b는 Y 좌표의 시작 위치가 될 것입니다. 이 값을 찾기 위해서 어떤 과정을 거치는지 간략히 보겠습니다.
- 일단, 아무렇게나 선을 긋습니다.
- 그런 다음, 이 선과 각 점들이 얼마나 떨어져 있는지 값을 구합니다.
- 그리고, 좀더 이 점들과 가까워질 수 있는 값을 적용하고
- 다시 선을 긋고
- 각 점들과 오차를 다시 계산하고
- 새로운 값을 적용하고… 다시 긋고.. 오차를 계산하고…
이 과정을 반복해서 오차값이 가장 작은 지점에 올 때까지 반복하는 거죠.
여기서 몇 가지 수학적인 설명을 안 할 수가 없네요.
우선, 오차값을 찾아야 할텐데요. 오차값은 일반적으로 이렇게 구합니다.
모든 점들과 현재 그어진 선의 거리를 제곱해서 전체 점의 개수를 나누어 평균 오차값을 구하는 공식입니다.
그런 다음, 오차를 줄일 수 있는 값으로 조정한다고 했는데, 이를 위해 오차값을 미분하여 Gradient (기울기)를 구합니다. Gradient를 구하는 수식은 이렇습니다.
Gradient는 어느 방향으로 현재 선을 조정할 것인지를 찾아 주는 것이라고 생각하면 됩니다. 오차값이 줄어드는 방향을 찾아주는 알고리즘을 Gradient Descent라고 부르며, Machine Learning / Deep Learning 알고리즘의 가장 핵심이라고 보면 됩니다.
가장 기초적인 Linear Regression을 통해서 Machine Learning이 어떻게 답을 찾아가는지 보았습니다. X, Y와 같이 간단한 2차원의 데이터가 있으면 이 데이터를 가지고 합격과 불합격을 구분하기 위한 구분선을 찾거나(Classification), X가 주어졌을 때 Y 값이 무엇일지 제시하는(Linear) 모델을 만들 수가 있겠지요.
문제는, 세상의 문제들은 단순히 2차원적인 데이터로만 풀 수 없습니다. 예를 들어, 사진이나 이미지를 인식하는 프로그램에서 이미지 크기가 24x24x3 픽셀이라면 1,728개의 Feature(속성/특징)가 있는 것이죠. 언어를 포함한 분야에서는 이러한 Feature가 수백만개에 달하기도 합니다.
더 이상 수학적인 얘기는 빼고… 개념만 좀더 설명드리자면…
이러한 수많은 Features를 Neural Network에 연결하고, 최종 결과값을 찾아가는 과정을 표현한 그림은 이렇습니다.
그런데, 이건 가장 기본이 되는 Neural Network이고요 Neural Network 모델도 ConvNet(CNN), RNN 등으로 더욱 복잡해집니다.
ConvNet (CNN)
RNN
각각의 Neural Network 모델은 적용 분야가 다른데, ConvNet은 이미지 인식에 많이 사용되며, RNN은 언어 처리에 많이 사용됩니다. 특히, RNN은 시간 스텝을 갖는 시퀀스 데이터를 이용해서 이전 문맥을 포함한(‘기억’) 결과를 도출할 수 있기 때문에 금융 분야에서도 이 모델을 주로 사용합니다.
Deep Learning은 모든 문제의 해결책인가?
Deep Learning은 많은 문제를 해결해 줄 수 있을 것입니다. 중요한 것은 Deep Learning 기술 자체가 아니라 ‘데이터’입니다. 즉, Deep Learning 기술을 갖고 있다는 것이 문제의 해답을 갖고 있다고 잘못 이해하면 안됩니다.
Deep Learning은 ‘기술’입니다. 이걸로 무엇을 할 것인가가 중요하겠지요. 동일한 Deep Learning 기술로 네이버 파파고와 Google 자동번역기가 만들어졌으나, 둘의 성능은 차이가 있습니다. Google이 월등히 앞섭니다. 그 이유는 기술이 차이라기 보다는 ‘데이터’의 차이입니다.
즉, 양질의 데이터를 얼마나 ‘많이’ 갖고 학습하였는지에 따라 결과물이 달라지는 겁니다.
우선 데이터의 퀄리티가 좋아야하고, 여러가지 변형을 모두 학습시킬 수 있는 충분한 양의 데이터가 필요합니다. ‘충분한’ 양이 얼마인지는 각각의 모델에 따라 다르겠지만 일단 엄청 많아야 한다는 것만 이해하십시오.
-다음 특별편 이어서-
※오늘의 한 줄 EVENT※
어떤 문장이든 댓글로 남겨주세요. 무료로 영어 / 일어 1줄 번역을 바로바로 해 드립니다!
여러분들의 창의력 퐁퐁 댓글 기다릴게요~
Click here > WiseTranslate.net ▼