⌂ 홈 인공지능 데이터 분석 워크북 1장 기계학습과 신경망의 이해
CHAPTER 01

1장 기계학습과 신경망의 이해

1. 기계학습은 무엇인가?

인공지능의 여러 분야 중의 하나인 기계학습(Machine Learning)은 학습을 하는 기계, 즉 학습을 수행하는 프로그램 혹은 알고리즘을 말합니다. 학습은 인간의 지능 중에서도 아마도 가장 강력한 기능이라고 할 수 있는데, 그 학습을 흉내 낸 프로그램 혹은 알고리즘이라고 할 수 있습니다.

먼저 우리 인간은 어떻게 학습하는가 생각해보죠. 인간은 경험을 통하여 배웁니다. 예를 들어, 어린아이가 바늘에 찔려 아픈 경험이 있고, 그다음에는 가시에 찔려도 보고, 연필, 송곳 등 끝이 뾰족한 것에 찔려 아팠던 경험이 많이 누적되면, 그 경험은 ‘뾰족한 것에 찔리면 아프다’라는 일반화된 모델로 학습이 되고, 그 학습된 모델은 그 아이가 나중에 뾰족한 물건을 만났을 때 어떻게 행동할 것인지를 결정하는 데 사용될 수 있습니다. 이러한 기본적인 학습 과정, 즉 누적된 경험이 하나의 일반화된 모델로 만들어지는 과정은 기계학습에서도 그대로 반영됩니다. 어떤 특정한 영역(도메인)에서 인간의 누적된 경험은 데이터에 저장되고 표현됩니다. 그 누적된 경험 데이터로부터 일반화된 모델을 만들어내는 것이 기계학습입니다.

경험 데이터로부터 모델이 만들어지는 그 과정을 ‘학습(learning)’ 혹은 ‘훈련(training)’ 이라고 부르고(그렇다고 이 둘이 같은 의미의 용어는 아닙니다), 학습이나 훈련은 기계학습 알고리즘에 의해 진행됩니다. 그렇게 만들어진 것을 ‘학습된 모델’이라고 부릅니다. 이 ‘모델’이라는 용어는 예를 들어, 우리가 ‘코로나바이러스의 확산 속도를 예측할 수 있는 수학 모델을 만들었다’라고 할 때의 그 모델과 같은 의미입니다. 모델은 어떠한 누적된 현상을 일반화한 형태를 말하며, 모델을 이용하여 현상을 설명할 수도 있고 예측할 수도 있습니다.

figure
그림 1-1: 전체 영역에 속하는 일부 샘플 데이터를 사용하여 전체 영역에 사용될 수 있도록 모델을 만들어야 합니다.

기계학습의 유형: 지도 학습, 비지도 학습

데이터로부터 모델이 만들어지는 과정을 조금만 더 구체적으로 살펴보겠습니다. 이 과정은 일반적으로 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Learning)으로 구분하여 설명합니다. 물론 기계학습에는 이 두 가지 이외에도 강화학습(Reinforcement Learning)도 있지만 강화학습은 경험 데이터를 사용하는 것이 아니라, 경험을 시뮬레이션으로 무수히 반복시키고 그것으로 학습을 진행하는 방식이라서 데이터 기반의 학습과는 조금 다릅니다.

지도 학습과 비지도 학습을 비유하여 보죠. 우리는 일반적으로 서양인과 동양인의 얼굴을 90% 이상 구분합니다. 우리는 어떻게 그것을 할 수 있게 된 것일까요? 어릴 때부터 많은 경험에 의해 나의 머릿속에는 그렇게 학습된 모델이 만들어져 있다고 볼 수 있습니다. 그 경험은 ‘이 사람은 서양인, 이 사람은 동양인’ 이러한 식으로 시작되어 동인인과 서양인 얼굴을 비교하고 구분하게 되고, 그러한 경험이 누적되면서 점차 두 분류에 대한 ‘차이점’ 특징을 강화하는 쪽으로(공통점은 약화시키는 쪽으로) 모델이 만들어지게 되었을 것입니다. 즉, 여기서 학습이란 어떠한 속성값에 대하여 ‘이것은 동양인’, ‘이것은 서양인’ 같은 레이블(Label)을 붙여서 학습시키는 것인데, 이처럼 이것이 A인지 B인지를 지도(Supervised)하는 방식으로 학습시킨다고 해서 지도 학습이라고 합니다.

반면에 비지도 학습은 어떤 속성값에 대하여 그것에 A인지 B인지 지도하지 않습니다. A와 B 같은 레이블이 아예 주어지지 않고, 속성값만 주어집니다. 우리가 사람을 200명 정도를 본다고 하죠. 레이블도 없고 지도 과정도 없습니다. 그러면 우리의 머릿속에는 그 사람들이 가지고 있는 어떠한 속성값 혹은 특징에 따라서 그룹을 짓게 됩니다. 예를 들면, 안경을 쓴 남성이라는 그룹과 안경을 쓰지 않은 그룹이라는 식으로 그룹화하게 되는데, 사람에 따라서 혹은 상황에 따라서 어떤 속성들에 의해 그룹이 나누어지는지는 달라질 수 있습니다. 지금 설명한 것은 비지도 학습의 하나인 군집화(Clustering)를 설명한 것인데, 이 과정은 그룹화를 통하여 데이터에 숨겨진 특징과 패턴을 찾는 과정으로 볼 수 있습니다. 이것은 데이터에 레이블이 주어지지 않고 지도 과정도 없기(unsupervised) 때문에 비지도 방식이라고 부릅니다.

지도 학습과 데이터

지도 학습에 의해 데이터로부터 모델이 만들어지는 과정을 조금 더 자세히 살펴봅시다.

이미 언급한 것처럼, 지도 학습은 먼저 속성값에 대한 레이블이 달린 데이터를 이용하여 학습이 진행됩니다. 이 데이터는 다음과 같이 표현될 수 있습니다.

(속성값, 레이블)

예를 들어, 과일이 사과인지 바나나인지를 구분하는 모델을 만들기 위해서는, 먼저 어떤 속성을 사용할지를 생각해야 합니다. 만약 과일의 색상, 폭과 길이의 비율, 무게, 이렇게 3가지 속성을 사용한다면 데이터는 다음과 같이 표현됩니다.

(색상, 비율, 무게, 사과 혹은 바나나)

이러한 형태의 데이터 수백 개가 필요할 것입니다. 그러면 어떤 객체에 대한 이러한 속성값이 주어졌을 때 그 객체가 사과인지 혹은 바나나인지를 알려주는 데이터셋을 사용하여, 지도 학습은 사과와 바나나의 속성값의 차이를 강조하는 방향으로 분류 모델이 만들어집니다. 이 분류 모델은 실제로 과수원에서 사과와 바나나를 자동 분류하는 기계에서 사용될 수 있을 것입니다.

그리고 이렇게 명시적으로 속성값이 주어진 데이터를 ‘정형 데이터’라고 부릅니다. 정형 데이터를 테이블 형태로 표현하면 아래의 그림과 같이 나타납니다.

figure
색상비율무게a4a5...an과일명
#1R1.1150...사과
#2Y1.4130...바나나
#3G0.7160...사과
G0.3110...
R1.3....

그림 1-2: 정형 데이터

다른 예를 들어보겠습니다. 얼굴 사진으로부터 서양인인지 동양인인지 구분하는 모델을 만든다고 해보죠. 데이터를 어떻게 준비할 수 있을까요? 먼저 데이터를 만들기 위한 속성을 생각해보겠습니다. 예를 들어 머리색, 눈동자 색, 피부색, 코 높이를 속성으로 사용한다고 가정해봅시다. 그러면 데이터는 다음과 같은 모양이 될 것입니다.

(머리색, 눈동자 색, 피부색, 코 높이, 서양인/동양인)

이러한 데이터 포인트가 수천 개가 필요할 것입니다. 그럼에도 이러한 속성으로 만든 모델은 성능이 그리 좋지 못할 것입니다. 왜냐면 우리는 동양인이 머리 염색을 하고 컬러 렌즈를 끼고, 하얀 화장을 하고 코를 높여도, 그 사람이 서양인이라고 착각하지는 않습니다. 분명히 다른, 우리가 미처 알지 못하는 다른 속성과 특징이 있을 텐데 그것을 명시적으로 알지 못한다는 것입니다. 이러한 문제는 이미지 분류뿐만 아니라 음성 인식, 자연어 처리 등에도 발생합니다. 이러한 데이터는 명시적인 속성 데이터로 변환하기가 쉽지 않아서 기계학습으로 좋은 성능을 내기 어렵고, 적절한 속성을 찾는 것은 기계학습 연구에서 매우 어려운 문제입니다.

이러한 데이터의 속성 문제는 2010년을 전후하여 등장한 딥러닝 기법에 의해 해결되기 시작합니다. 딥러닝은 이미지, 음성, 자연어의 데이터에 대하여 인간이 속성을 정하고 그것에 따라 속성 데이터로 변환하는 과정을 거치는 대신에, 이미지 데이터를 그대로 입력으로 사용합니다. 즉 데이터는 다음과 같은 모양이 됩니다.

(얼굴 사진 이미지, 서양인/동양인)

위 데이터를 수천 개 혹은 수만 개를 사용하면 딥러닝 기법은 그 데이터에 숨겨진 (우리가 아마도 모르는) 속성 혹은 특징을 스스로 적응해서 찾아내고 학습을 진행합니다. 딥러닝의 등장으로 컴퓨터 비전, 음성 인식, 자연어 처리는 엄청난 발전을 거듭하고 있습니다.

이러한 데이터, 즉 이미지, 소리, 텍스트의 데이터를 우리는 비정형 데이터라고 부릅니다. 비정형 데이터는 속성을 명시적으로 정의하기가 쉽지 않습니다. 스마트폰과 SNS이 대중화되면서 최근의 데이터는 대부분이 비정형 데이터이며 이 데이터를 다루는 딥러닝의 가치는 더욱 커지게 되었습니다. 하지만 그럼에도 기업의 마케팅, 금융 고객 데이터, 과학 데이터 등은 여전히 정형 데이터가 대부분을 차지하고 있습니다.

지도 학습 과정 개요 비교

데이터에서 기계학습 알고리즘을 사용하여 모델이 만들어지고, 그 모델이 사용되는 과정을 지도 학습의 회귀모델, 선형 분류모델, 비선형 분류모델, 딥러닝 모델을 가지고 비교해보겠습니다.

그림 1-3: 정형 데이터에서 선형회귀 모델이 만들어져서 주어진 속성값에 대한 수치값을 예측합니다.

figure
그림 1-4: 정형 데이터에서 선형 분류 모델이 만들어져서 주어진 속성값에 대한 레이블을 예측합니다.
figure
그림 1-5: 정형 데이터에서 비선형 분류 모델이 만들어져서 주어진 속성값에 대한 레이블을 예측합니다.
figure
그림 1-6: 비정형 데이터에서 딥러닝 분류 모델이 만들어져서 주어진 속성값에 대한 레이블을 예측합니다.
figure

2. 지도 학습 과정

지도 학습이 데이터로부터 모델을 어떻게 구체적으로 생성하는지 더 자세히 살펴보겠습니다.

데이터는 (속성값, 레이블)의 형태를 가지며, 이러한 데이터를 사용하여 모델을 만들고, 모델은 주어진 새로운 객체의 속성값에 대한 레이블을 분류하거나 예측합니다.

이것은 이미 알고 있는 함수 y=f(x)와 매우 유사한 개념입니다. 함수 관점에서 모델을 이해하면 이해하기 쉽습니다. 다시 말하면, 입력 x가 주어지면 출력 y를 생성하는 함수 f를 보여주고 있습니다. 기계학습은 (x, y) 데이터 집합으로부터 해당 데이터에 가장 적합한 함수 f를 만들어낸다고 볼 수 있습니다. (x, y) 데이터 집합은 (속성값, 레이블)에 해당합니다. 즉, (속성값, 레이블) 형태의 데이터가 충분히 있으면, 우리는 레이블=f(속성값)을 만족하는 함수 f를 가능한 한 생성할 수 있는데, 그 f가 기계학습 모델이며 기계학습 모델을 만들어내는 과정을 학습이라고 합니다.

예를 들어, (은행 고객 속성 정보, 고객 신용 등급) 형태의 데이터가 많이 있으면 고객 정보를 기반으로 고객의 신용 등급을 예측할 수 있는 모델을 만들 수 있습니다. 또한 (학생 속성 정보, 최종 학점) 형태의 충분한 양의 데이터가 있다면 학생의 정보를 기반으로 학생의 최종 학점을 예측할 수 있는 모델을 만들 수 있습니다. 물론, 모델 함수는 가능한 한 최적화하기 위해 데이터를 사용한 것이기 때문에 100% 정확하지는 않으며 어느 정도의 오류를 포함하게 됩니다. 또한, 데이터가 충분하지 않거나 특정 레이블에 편향되어 있는 경우, 해당 데이터로 생성된 모델은 부정확하고 편향된 예측을 할 가능성이 높습니다.

수치값 예측 – 선형회귀 모델

다음과 같이 데이터로부터 모델이 만들어지는 예를 살펴보겠습니다. 데이터가 (키, 몸무게)의 형태로 되어 있고, 키에 따라서 몸무게를 예측하는 모델을 만든다고 해봅시다. 데이터가 다음과 같이 주어졌습니다.

figurefigure

이 데이터로 모델을 만들 때에는 먼저 기본 모델을 선택해야 합니다. 우리가 키에 따라 몸무게라는 수치값을 예측하는 것이므로, 가장 간단한 형태인 선형회귀(Linear Regression) 모델을 사용할 수 있습니다. 선형회귀 모델은 다음과 같은 선형 함수의 형태를 가지고 있습니다.

y=f(x)=ax+b

즉, 키 x가 들어가면 거기에 상수 a가 곱해지고 상수 b가 더해져서 ax+b가 되면 그것이 예측된 몸무게 y가 되는 것입니다. 우리가 (x, y) 데이터를 가지고 모델 y=ax+b를 만든다는 것은 결국 최적의 상수 a와 b를 찾는 것입니다. 이 단순한 선형 함수에서 a는 기울기, b는 절편이라고 합니다.

다음 중 어느 상수가 위의 데이터가 최적으로 맞는 것으로 볼 수 있을까요? 데이터로 학습을 한다는 것은 해당 데이터에 가장 적합한 상수 a와 b를 찾아서 완성된 선형 함수를 만든다는 것입니다. 그 선형 함수를 학습된 모델이라고 합니다.

figure

더 복잡한 데이터를 살펴봅시다. 사실 몸무게를 예측하기 위해서는 키 속성 하나만 가지고는 충분하지 않습니다. 더 많은 속성이 필요할 것입니다. 예를 들면 키 속성 외에도 허리 둘레, 가슴 둘레, 발 크기, 수면 시간 등의 다양한 속성을 사용할 수 있으며, 이렇게 x_1, x_2, .. x_n의 속성이 사용된다고 가정하면 데이터는 다음과 같이 준비될 것입니다.

([x_1, x_2, x_3, ..., x_n], 몸무게)

그리고 우리는 이 데이터로 기본 모델인 y = a_1 * x_1 + a_2 * x_2 + ... + a_n * x_n을 학습시켜 상수 a_1, .. a_n을 찾아 최종 함수를 구성합니다. 이 함수를 선형회귀 모델이라고 부르며, 데이터로부터 최종 모델을 만드는 과정에서 최적화 알고리즘이 사용됩니다. 선형회귀 모델에서는 최소제곱법, 경사하강법 등이 사용됩니다.

그렇게 만들어진 최종 모델은 몸무게를 예측하는 모델이며, 주어진 어떤 속성 값에 대해 몸무게를 예측하는 데 사용할 수 있습니다.

레이블 예측 - 분류 모델

지도 학습은 주로 수치값 예측과 레이블 분류 두 가지로 구분됩니다. 수치값 예측은 주로 선형회귀 모델을 사용하고, 레이블 분류는 다양한 많은 모델이 사용됩니다.

레이블 분류(Classification)에서 데이터의 레이블은 두 가지 혹은 적은 수의 클래스를 가지며, 예를 들어 어떤 주어진 속성값에 따라 남성 또는 여성, 동양인 또는 서양인 등을 예측하거나 분류하는 것을 의미합니다. 데이터는 다음과 같은 형태를 가집니다.

(속성 값 X, 남성/여성)

2개의 속성을 가진 2차원 데이터에 대한 분류 모델을 설명하기 위해 다음의 예를 살펴봅시다. 과일이 가진 두 가지 속성인 [너비/높이 비율, 무게]에 따라 과일이 A인지 B인지를 구분하거나 분류하거나 예측하는 모델을 만들려고 합니다. 데이터는 다음과 같이 임의로 생성되었습니다.

figurefigure

이러한 데이터가 주어졌을 때, A와 B를 구분하거나 분류하는 모델을 어떻게 만들 수 있을까요? 선형회귀 모델을 학습시키는 것과 마찬가지로, 우리는 먼저 기본 모델을 선택하고 해당 기본 모델의 상수(파라미터)를 조정하여 최종 모델을 만들어냅니다.

기본 모델은 모델의 형태에 따라 크게 다음과 같은 3가지가 있습니다.

결정트리 모델

주어진 n개의 속성 중에서 가장 좋은 속성을 하나씩 차례대로 선택하여 그 속성에 따라 공간을 분리하여 나가는 모델입니다.

figure

선형 분류 모델

선형 함수를 사용하여 클래스를 분류하는 모델을 만듭니다. 두 개의 속성 (x1, x2)을 가진 선형 모델은 다음과 같은 형태를 가집니다.

a1*x1 + a2*x2 + b = 0
figure

선형회귀와 비슷하게, 주어진 데이터에 대해 최적화 알고리즘을 사용하여 상수(파라미터) a1과 a2의 값을 찾아 최종 모델을 만듭니다. 새로운 데이터 속성값 [x1, x2]가 주어지면 최종 모델에 대입하고, 그 값이 0보다 크면 모델 경계선 위에 속한 B 클래스로 분류되거나 예측되며, 0보다 작으면 모델 경계선 아래에 속한 A 클래스로 분류됩니다. 0이라면 경계선 위에 위치하여 어느 클래스로 분류할지 결정하기 어려운 상황이 됩니다.

선형 모델은 때때로 데이터에 적합한 모델을 생성하지 못할 수 있습니다. 앞의 예에서 과일 A가 아래 그림과 같이 오른쪽 부분에 추가되었다고 가정해봅시다. 이 경우 선형 모델은 데이터에 적합하게 모델을 만들기 어려울 수 있습니다. 선형 모델의 예로는 로지스틱 회귀, 퍼셉트론 등이 있습니다.

figure

비선형 모델

비선형 모델은 데이터에 따라 임의의 영역 경계선을 아래 그림과 같이 만들 수 있습니다.

figure

비선형 분류 함수를 만드는 것은 사실 매우 어려운 문제였지만, 선형 모델인 퍼셉트론을 기반으로 하는 다층 퍼셉트론(MLP: Multi-Layered Perceptron)이 가장 대표적인 비선형 모델 중 하나로 등장하며, 이것은 인공신경망의 시작이라고도 할 수 있습니다. 이 비선형 모델은 층을 추가하면서 더 강력한 비선형 경계를 만들 수 있음을 증명하고, 기계학습 분야에서 가장 대표적인 모델로 자리 잡았습니다.

3. 신경망 모델

신경망의 개요

인간의 뇌는 복잡한 결정과 판단 과정에서 놀라운 능력을 발휘합니다. 이 능력은 약 수십억 개의 뉴런(신경세포)이 서로 복잡하게 연결되어 정보를 처리하는 결과입니다. 기계학습에서 사용되는 신경망은 이러한 인간 뇌의 구조와 원리를 모방하여 개발된 알고리즘입니다. 이러한 모델은 복잡한 데이터나 패턴을 인식하고 학습하는 데 사용됩니다. 간단한 예로는 사진에서 고양이를 인식하거나 손글씨 숫자를 판별하는 작업을 기계가 스스로 학습하여 수행하는 데 이러한 신경망이 활용됩니다.

신경망을 이해하는 관점은 여러 가지가 있을 수 있습니다. 가장 일반적인 접근 방법 중 하나는 속성(또는 특징) 공간에서 숨겨진 패턴이나 관계를 파악하기 위해 속성값들을 사용하는 것입니다. 신경망은 기본적인 선형 모델을 상호 연결하고 다층 구조로 조합하여 매우 복잡한 임의의 비선형 모델을 만들어내며, 딥러닝의 경우 숨겨진 특성까지 스스로 발견하고 활용할 수 있는 능력을 갖추었다고 알려져 있습니다.

퍼셉트론은 신경망의 가장 기본적인 구성 요소 중 하나입니다. 퍼셉트론은 여러 개의 입력을 받아 가중치를 곱한 합계를 계산하고, 이 합계가 특정 임계치를 넘을 때 활성화되는 구조입니다. 다시 말해, 합계가 임계치보다 크면 1을 출력하고, 작으면 0을 출력하는 선형 모델입니다. 예를 들어, 날씨 정보로 우산을 가져갈지 여부를 결정할 때, 강수량과 습도가 각각 입력값이 되며, 퍼셉트론은 이러한 값을 특정 가중치로 가중합한 후, 결과가 임계치보다 높으면 ‘우산을 가져가세요’라는 신호(1)를 출력하고, 그렇지 않으면 ‘우산을 가져가지 마세요’라는 신호(0)를 출력하는 것과 비슷합니다.

figure
그림 1-7: 퍼셉트론의 구조

다층 퍼셉트론

선형 모델인 퍼셉트론만으로는 복잡한 패턴이나 데이터를 처리하기가 어렵습니다. 이 문제를 해결하기 위해 여러 개의 퍼셉트론을 여러 층으로 구성한 것이 다층 퍼셉트론(MLP)입니다.

다층 퍼셉트론는 선형 모델인 퍼셉트론을 상호 연결하여 층을 쌓는 방식으로 복잡한 비선형 모델을 구축합니다. 이러한 구조는 입력층, 하나 이상의 은닉층, 그리고 출력층으로 이루어져 있습니다.

은닉층과 입력층 사이의 연결이 어떻게 비선형 분류 모델을 형성하는지 이해하기 위한 시뮬레이션을 수행할 수 있습니다. 은닉 노드의 수를 조정하고 은닉층의 수를 증가시키면 이 신경망 모델의 비선형 특성을 더 잘 확인해 볼 수 있습니다.

그림 1-8: 다층 퍼셉트론 시뮬레이션(https://playground.tensorflow.org)

figure

은닉층 수가 늘어남에 따라 속성(또는 특징) 공간이 계속 중첩되어 가고, 문제에 대한 새로운 특징을 스스로 찾아내는 효과가 나타납니다. 이로써 인간도 명시적으로 이해하기 어려운 숨겨진 속성(또는 특성)을 스스로 찾아내어 학습시킬 수 있게 되며, 이미지, 소리, 음성, 텍스트 등과 같은 비선형 데이터의 숨겨진 패턴과 관계를 학습하여 복잡한 문제를 해결할 수 있게 됩니다.

심층 신경망

다층 퍼셉트론만으로는 복잡한 문제에 대응하기 어려운 경우가 있습니다. 이러한 한계를 극복하기 위해 더 깊은 층을 가진 심층 신경망(DNN: Deep Neural Netwo가)이 개발되었습니다. ‘심층’이라는 용어는 이러한 여러 층으로 이루어진 복잡한 구조를 가리킵니다. 심층 신경망은 은닉층이 여러 겹으로 구성되어 있어 더 복잡한 패턴과 관계를 파악하고 학습할 수 있습니다. 일반적으로 은닉층이 1~2개이면 다층 퍼셉트론(MLP)에 해당하고, 10개 이상의 은닉층이 있을 때 심층 신경망(DNN)이라고 합니다. 하지만 이러한 깊은 구조를 사용할 때 학습이 복잡해지고 많은 데이터와 컴퓨팅 리소스가 필요하며, 과적합(Overfitting)의 위험이 존재합니다. 과적합이란 데이터를 지나치게 학습하여 오히려 실제 데이터에 대한 오차가 늘어나는 현상을 말합니다.

딥러닝이라는 용어는 심층 신경망과 함께 사용되며, 딥러닝은 다양한 심층 구조를 사용하는 기계학습의 하위 분야입니다. 즉, 모든 심층 신경망은 딥러닝에 속하지만, 모든 딥러닝 모델이 심층 신경망은 아닙니다. 딥러닝은 심층 신경망, 이미지 데이터에 주로 사용되는 합성곱 신경망(CNN), 시계열적인 데이터에 주로 사용되는 순환 신경망(RNN), 장단기 기억(LSTM), 그리고 최근에는 자연어 처리에 주로 사용되는 트랜스포머(Transformer) 등 다양한 모델과 기술을 포함합니다. 딥러닝의 목표는 크고 복잡한 비정형 데이터에서 패턴을 학습하고 예측하는 것이며, 심층 신경망은 이러한 구조의 핵심입니다.

4. 학습과 평가

학습 모델 선정과 학습

데이터가 모두 준비된 이후에 학습은 다음과 같은 순서로 진행됩니다.

  1. 문제에 따라 적절한 기본 모델을 선정합니다.
    • 문제가 지도 학습에 해당하는지, 비지도 학습에 해당하는지 결정합니다.
    • 지도 학습에서는 주어진 속성 값에 따라 수치값을 예측하는 회귀 모델인지, 혹은 레이블로 분류하는(또는 레이블 값을 예측하는) 분류 모델인지를 결정합니다.
    • 분류 모델이라면 결정트리 모델을 사용할 것인지, 다양한 선형 모델이나 비선형 모델을 사용할 것인지를 결정합니다. 경우에 따라 어떤 모델을 사용할지 결정하기 위해 사전 실험을 수행할 수도 있으며, 여러 모델을 조합하는 앙상블(Ensemble) 모델을 사용할 수도 있습니다. 랜덤 포레스트(Random Forest)는 앙상블 방법의 대표적인 모델 중 하나입니다. 이미지, 소리, 텍스트 데이터와 같이 비선형 데이터를 직접 다룬다면 적절한 딥러닝 모델을 고려할 수 있습니다.
    • 비지도 학습은 군집화를 사용할 것인지, 주성분분석(PCA)이나 차원 축소 방법을 사용할 것인지 고려해야 합니다. 목적에 따라 하나만 사용할 수도 있고, 다양한 방법을 함께 사용할 수도 있습니다.
    • 군집화를 사용한다면 K-means와 같은 간단한 분할 군집 방식뿐만 아니라, 계층적 군집, DBSCAN과 같은 밀도 기반 방법, EM 알고리즘과 같은 확률 모델 기반 군집 등 다양한 방법이 있으며, 각각의 장단점을 고려하여 적절한 방법을 선택해야 합니다.
  2. 준비된 데이터로 기본 모델을 학습시킵니다.
    • 기본 모델이 선택되면 데이터를 사용하여 해당 모델을 최적화시키는 알고리즘을 사용하여 학습을 진행합니다.
    • 모델이 데이터에 과적합되지 않도록 데이터를 훈련, 검증 및 테스트셋으로 나누어 효율적으로 학습을 진행합니다.
  3. 완성된 최종 모델은 데이터 분석 용도로 사용하거나, 인공지능 시스템에서 활용됩니다.
    • 학습이 완료된 최종 모델은 추정 성능을 평가하고, 도메인(영역)을 분석하거나 소프트웨어 시스템의 내부 모듈로 활용할 수 있습니다. 이러한 모듈이 사용되어 지능적인 작업을 수행하는 시스템을 인공지능 시스템이라고 부릅니다.

학습의 과정: 훈련, 검증, 테스트

어떤 문제 도메인에 대하여 분류 작업을 진행한다고 생각해봅시다. 예를 들어, 주어진 사진을 사용하여 남성 또는 여성을 분류하는 모델을 개발한다고 가정해봅시다. 이때 이 문제의 도메인은 모든 세계 사람을 대상으로 할 수 있으며, 이를 대략 80억 명으로 볼 수 있습니다. 물론, 성인 대상으로 한정한다면 대략 20~30억 명으로 줄일 수도 있습니다. 이것이 도메인 크기입니다. 그러면 이 도메인에서 샘플을 추출하여 모델을 생성하고, 이 모델은 그 샘플뿐만 아니라 전체 도메인에 대한 우수한 분류 성능을 발휘해야 합니다. 일부 샘플만을 기반으로 한 모델을 전체 도메인을 대표하도록 훈련하는 것은 모델 학습에서 가장 중요하고 어려운 부분입니다.

figure
그림 1-9: 전체 도메인에 속하는 일부 샘플 데이터를 사용하여 전체 도메인에 사용될 수 있도록 모델을 만들어야 합니다.

샘플 데이터는 저의 도메인에 대해 얻을 수 있는 최대치의 데이터라고 가정하겠습니다. 그 이유는 데이터가 많을수록 더 나은, 더 정확한 모델을 만들어 낼 수 있기 때문입니다. 그리고 우리는 샘플 데이터에 대해 다음 질문을 고려해야 합니다.

위에서 언급한 문제 중에서, 샘플 데이터를 사용하여 학습한 모델이 다른 도메인 데이터에 대해 얼마나 잘 작동할 것인지, 전체 도메인의 성능을 어떻게 추정할 것인지에 대한 여러 가지 방법이 소개되고 있습니다. 이러한 방법들의 핵심 아이디어는 모델을 개발할 때, 학습에 사용된 샘플 데이터에 대한 성능보다는 전체 도메인 데이터에 대한 높은 성능을 달성하도록 모델을 설계한다는 것입니다.

1. 샘플 데이터로 모델을 훈련하여 사용하는 경우

최대한 많은 데이터를 사용해야 더 좋은 모델을 만들 수 있겠다는 생각으로, 가지고 있는 샘플 데이터 모두를 사용하여 모델을 만들 수 있습니다. 이 경우에 모델은 그 훈련 데이터에는 최적화되어 있겠지만 그 외의 다른 도메인 데이터에 대해서는 어떤 성능을 보일지 알 수가 없겠죠. 물론 이 샘플 데이터가 전체 도메인 데이터를 대표하는 것이고 잘 균형되어 있다는 보장이 있다면 괜찮겠지만, 그것을 보장하기는 어렵습니다.

훈련 데이터에만 최적화 된 모델을 과적합(overfitted) 모델이라고 부릅니다. 도메인 전체에 대한 일반적인 패턴을 찾은 것이 아니라, 샘플 데이터에 대해서만 과하게 학습되어, 도메인 전체에 대해서는 성능이 오히려 나빠지는 경우를 말합니다.

저자 메모

<<< 과적합, 최적합의 그림 삽입 예정>>>>>

2. 훈련 데이터와 테스트 데이터로 구분하여 학습을 진행하는 경우

가지고 있는 전체 샘플 데이터를 일반적으로 7:3의 비율로 나누어, 70%의 데이터를 모델 학습에 사용하고, 나머지 30%의 데이터는 그 만들어진 모델의 일반화 성능을 측정하는데 사용하는 것이죠. 모델의 성능을 추정하기에는 좋은 방법이지만 이것도 다음과 같은 문제가 있습니다.

3. 훈련, 검증, 평가 데이터로 구분하는 경우

기계학습 모델은 어떤 기본 모델이 선정되느냐에 따라서 성능이 달라지며, 같은 기본 모델이라도 선택 옵션에 따라서 다르게 학습되어 성능이 달라질 수 있습니다. 대표적인 신경망 모델인 다층 퍼셉트론의 경우만 보더라도, 은닉층의 개수, 은닉 노드의 개수, 활성 함수의 상수값, 학습 종료 기준값 등에 따라서 전혀 다른 성능을 보이는 모델이 만들어집니다. 따라서 더 성능 좋은 모델이 만들어지기 위해서 어떤 구조와 옵션값을 설정해야 할 텐데, 이것을 위해 학습을 진행해야 그 성능을 비교해볼 수 있습니다. 이것을 모델의 검증(Validation)이라고 부릅니다. 따라서 일반적인 경우에는, 데이터의 일부를 가지고 어떤 구조의 모델을 선정할 것인지 결정하기 위하여 훈련-검증 과정을 거치고, 그렇게 해서 모델의 구조와 옵션을 정한 후에는 가용한 데이터를 사용하여 그 기본 구조의 모델을 학습시킵니다. 그 최종 학습된 모델의 성능은 별도의 테스트 데이터로 평가해도 되고, 혹은 검증 과정에서 얻어진 교차검증값을 시용해도 됩니다.

주어진 데이터가 충분히 많은 양이라면, 데이터를 (훈련)-(검증)-(테스트) 데이터로 분리하여 모델 학습을 진행할 수도 있고, 보통의 양이라면 (훈련)-(검증/테스트) 데이터로 분리하여 학습을 해도 되고, 혹은 데이터 양이 적다면 하나의 데이터를 교차검증을 통하여 (훈련/검증/테스트)에 모두 사용할 수도 있습니다.