딥러닝이 처음이라면

1. 미래를 바꿀 핵심 기술

그 동안 컴퓨터는 단순한 계산에서 복잡한 계산, 정보 전달을 가능하게 했고, 또 인간이 하던 단순한 작업 이를 테면 스팸 메일 분류와 같은 것들을 해왔습니다.
그러나 최근 컴퓨터 하드웨어의 발달과, 축적된 데이터를 통해 사람들은 더 많은 시도를 해왔습니다. 그렇게 시작된 딥러닝 기술의 발달은 최근 추천 알고리즘, 알파고, 파파고, 자율 주행 등 많은 분야에서 엄청난 변화를 가져오고 있습니다. 지금부터 이것들을 가능하게 한 딥러닝이 어떤 건지 하나씩 살펴 보도록 하겠습니다.

2. 딥러닝이란 무엇인가?

딥러닝이란 무엇일까요? 위키 백과에서는 다음과 같이 정의합니다.

딥 러닝은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(abstractions, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업)를 시도하는 기계 학습 알고리즘의 집합으로 정의되며, 큰 틀에서 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야라고 이야기할 수 있다.

좀 더 자세하고 전문적인 지식은 위키백과에서 찾아 보도록 하고 저는 이해하기 쉽도록 간단하게 정의해 보겠습니다.

딥러닝은 특별한 규칙이나 문제를 푸는 방법을 컴퓨터에게 알려주지 않습니다.
우리는 그저 복잡하고 설명하기 힘든 특성을 컴퓨터가 잘 잡아낼 수 있도록 신경망을 만듭니다. 그리고 그 신경망에 데이터를 제공함으로써 기계가 숨겨진 특성을 잘 찾아낼 수 있도록 잘 학습시킵니다. 이러한 과정이 바로 딥러닝입니다.

3. 인공지능, 머신러닝, 딥러닝


(출처: Samstory)

인공지능

인공지능은 인간이 뇌를 통해 하는 행동들을, 컴퓨터도 마치 생각하는 것처럼 유사하게 동작하는 것을 인공지능이라고 합니다. 머신러닝, 딥러닝도 결국 인공지능을 위한 하나의 방법인 겁니다.

머신러닝

머신러닝은 정해진 명령보다 데이터를 기반으로 예측이나 결정을 이끌어 내기 위해 특정한 알고리즘을 수행하는 모델을 구축하는 방식으로 모델을 구축함으로써 입력하지 않은 정보에 대해서다 판단이나 결정을 할 수 있게 됩니다.
머신러닝 기법은 주로 정형 데이터를 다룹니다. 관계형 데이터베이스(Relational Database)나 엑셀 표로 정리되는 테이블 데이터를 생각하시면 되겠습니다. 의사결정에 필요한 데이터를 사람이 정리해 기계에 알려주면 기계는 이 정보를 토대로 판단이나 예측을 하는 경우입니다.

딥러닝

딥러닝은 머신러닝의 한 파트이지만 보다 조금 더 추상적인 모델입니다. 머신러닝과 같이 특정한 알고리즘을 수행하도록 모델을 만들기보다는, 사람이 잡아내기 힘든 추상적인 특성을 데이터에서 잘 추출하도록 단일 신경망을 그저 깊게 쌓는 방식으로 모델을 만듭니다.
이러한 이유로 딥러닝은 주로 비정형 데이터를 다룹니다. 비정형 데이터란 지정된 방식으로 정리되지 않은 정보를 말합니다. 간단히 말하자면 이미지, 비디오, 텍스트 문장이나 문서, 음성 데이터 등을 말합니다. 비정형 데이터는 인간이 그 특성을 잡아내기 매우 힘든 데이터이기 때문에 딥러닝이 큰 힘을 발휘하게 됩니다.

4. 딥러닝을 해보자

이번 챕터에서 딥러닝의 전체적인 과정을 정말 간략히만 훑어보도록 하겠습니다. 딥러닝을 포함해 인공지능의 목표는 어떻게 보면 새로운 데이터에 대한 예측이라고 생각하면 될 것 같습니다. 예를 들어 부동산 가격 예측, 주가 예측, 승패 예측, 날씨 예측과 같은 것들이 있겠죠. 앞의 두 가지는 연속적인 값을 예측하므로 회귀(regression)라고 하고, 뒤의 두 가지는 분류(classification)라고 합니다. 그럼 인공지능 모델은 크게 다음과 같이 두 가지 목적에 따라 분류된다고 할 수 있습니다.

  • 회귀(regression)모델: 데이터의 일반적인 경향을 가장 잘 나타내는 모델을 만드는 것이 목표
  • 분류(classification)모델: 데이터를 일반적으로 가장 잘 분류하는 decision boundary를 찾는 것이 목표

학습

그럼 이제 우리의 목표는 데이터를 이용해 다음과 같은 모델을 만드는 것입니다. 어떻게 만들 수 있을까요? 이것은 마치 어렸을 때 수학 시험을 위해 문제가 가득한 문제집을 무수히 많이 푸는 과정과 비슷하다고 할 수 있습니다. 컴퓨터는 우리의 데이터를 기반으로 최소한의 오차를 내기 위해 계속 학습하게 됩니다. 드디어 우리의 모델이 무엇을 해야할지 목표가 생겼습니다.
목표: 오차 함수를 최솟값으로 만드는 것입니다.

목표가 생겼으니 이제 목표를 향해 어떻게 나아갈 지를 생각해봐야 합니다. 어떻게 나아가야 할까요? 우리의 컴퓨터가 목표(최솟값)가 어디 있는지 한 번에 알면 좋겠지만 그렇지는 않습니다. 마치 다음과 같습니다.

  • 앞이 보이지 않습니다. (어디가 최솟값인지 알 수 없습니다)
  • 힌트는 최솟값이 우리의 목표라는 것입니다.

깜깜한 상태에서 가장 밑으로 내려가기 위해서는 발을 더듬으며 내리막길 중 어디가 가장 가파른지를 찾을 것입니다. 그쪽으로 가야 가장 빨리 내려갈 수 있겠죠. 우리의 모델도 이와 비슷한 방법으로 학습을 시킬 수 있습니다. 이 방법을 경사 하강법(Gradient descent)이라고 합니다.
방법: 경사하강법을 통해 학습할 것입니다.

결론: 학습이란 경사하강법을 통해 오차가 최소가 되도록 하는 것입니다.

💡 경사하강법이란 함수의 특정 지점에서의 그래디언트(가장 가파르게 증가하는 방향) 반대 방향으로 우리의 모델을 조금씩 수정해 나가는 것으로, 그래디언트 반대 방향인 이유는 그래디언트 가장 가파르게 증가하는 방향이기 때문에 부호(-)를 취해줌으로써 정확히 반대 방향으로 가면 오차함수를 가장 빨리 감소시키는 방향으로 모델을 수정할 수 있다.

검증

우리는 데이터를 이용해 경사하강법을 사용함으로써 오차함수를 최소로 하도록 모델을 수정하면 된다고 배웠습니다. 하지만 우리는 수능을 앞두고 있는 상황에서 항상 문제집만 풀지는 않습니다. 자칫 잘못하면 문제집에 나오는 문제들은 너무 완벽하게 공부했지만 수능에 출제될 문제와는 전혀 다를 수도 있습니다. 우리는 언제까지 문제집을 푸는게 도움이 되는지 판단을 할 수 있어야 합니다. 매번 문제집을 풀며 중간 중간 모의고사를 통해 모의고사 성적을 확인합니다. 그러다가 어느 순간 모의고사 성적이 오히려 나빠진다면 문제집을 더이상 풀면 안됩니다. (이를 과대적합(overfitting)이라고 합니다.)

훈련마다 검증 데이터를 통해 언제 훈련을 멈출 지 정한다.
검증 데이터에서 가장 좋은 성능을 갖는 모델을 우리의 모델로 선택한다.

결론

지금까지 살펴본 과정들이 딥러닝의 간략한 모습이라고 할 수 있습니다.

1. 목적에 맞게 회귀 또는 분류 모델을 선택한다. 
2. 그에 맞는 목적함수를 설정한다.  
3. 경사하강법을 통해 학습한다.  
4. 검증 데이터를 통해 언제 학습을 종료할지 결정한다.  
5. 검증 데이터에서 가장 좋은 성능을 낸 모델을 선택한다.

다음 포스트에서 부터 하나씩 자세하게 다뤄보도록 하겠습니다.

Tags:

Categories:

Updated: