데이터는 머신러닝에서 정말 중요합니다. 머신러닝은 데이터를 이용해서 문제를 해결하기 때문에 데이터의 중요성은 몇 번이고 강조해도 부족하지 않습니다. 머신러닝으로 문제를 풀 때는 데이터형, 품질, 양에 따라 고려해야 할 점이 달라집니다. '풀고자 하는 문제 유형' 역시 중요합니다. 어떤 문제를 풀지에 따라 고민거리가 달라지기 때문입니다. 이 장에서는 데이터와 풀고자 하는 문제 유형에 대해 알아봅시다.
- 데이터형에 따라 머신러닝에서 고려해야 할 점
- 데이터양과 품질이 달라질 때 고려해야 할 점
- 데이터에 치우침이 있을때 표준화하여 효율적으로 학습하는 방법
- 머신러닝 문제 휴형과 다양한 기법
3.1 데이터 형
데이터에도 유형이 있을까요? 있다면 머신러닝과 데이터형 간에는 어떤 연관이 있을까요? 이 절에서는 데이터형별 특징을 살펴보고 각각의 특징에 따라 어떤 머신러닝 기법을 사용하는지 살펴보겠습니다. 2장에서 설명한 바와 같이 머신러닝의 모델을 결정한느 것은 데이터에 대한 믿음(가정)입니다. 만일 우리가 다루는 데이터가 어떤 유형인지 알고 있다면 당연히 모델을 선택하는 일도 쉬워질 겁니다. 그리고 거의 대부분의 경우 데이터양이나 품질 때문에 생기는 고민에 비해 데이터형에 의한 고민은 쉽게 해결할 수 있습니다.
3.1.1 텍스트 데이터
텍스트 데이터는 다른 데이터에 비해 쉽게 구할 수 있습니다. 예를 들어워키피디아 덤프 파일이라든가 전자책 등 다양한 유형의 공개 텍스트 데이터가 있습니다. 또한 데이터의 의미 단위가 개별 단어나 연속하는 단어로 이루어져 있으므로 다른 데이터에 비해 의미 단위를 족각내기도 쉽습니다. 하지만 단위 데이터를 쉽게 조각내기 힘든 이미지 데이터나 음성 데이터와 달리 의미를 파악하려면 단어 간의 관계를 유추하거나 문법을 분석해야 합니다. 또한 의미 단위인 단어의 유형이 너무 다양하다는 문제도 있습니다. 텍스트 분석이 언뜻 보면 쉬워보이지만 이러한 문제들 때문에 사실은 굉장히 까다롭습니다.
특히 행렬을 이용해서 문서의 단어 분포를 표현하는 경우에는 존재하는 단어에 비해 문서에 나타나는 단어가 적으므로 행렬의 원소 대부분의 0인 상황이 많이 발생합니다. 이런 경우 데이터가 굉장히 희박(sparse)하다고 표현하며, 이러한 희박한 데이터를 이용하여 머신러닝을 하면 모델 학습이 잘못되어 실전 성능이 제대로 나오지 않게 됩니다. 그렇기 때문에 텍스트를 모델링하려면 이러한 상황을 해결해야 합니다.
또한 텍스트 데이터는 순서가 중요합니다. 순서에 따른 의미 변화를 모델링하기 위해서는 순차 모델 머신러닝 기법을 사용해야 합니다.
3.1.2 수치 데이터
수치 데이터는 금융, 생산 공정, 관측 장치 등으로 부터 얻을 수 있습니다. 많은 양을 쉽게 얻을 수 있지만 항상 노이즈가 섞여 있습니다. 노이즈가 생기는 이유는 다양하지만 일반적으로는 센서 노이즈와 현상의 무작위성이 원인입니다. 그렇기 때문에 수치 데이터 분석에는 노이즈에 강한 머신러닝 기법을 사용합니다.
수치 데이터는 대부분 수수자 피처를 가지기 때문에 텍스트에 비해 데이터 밀도가 높습니다. 그렇기 때문에 텍스트 데이터와는 다른 방식으로 접근해야 합니다.
텍스트 데이터와 비슷하게 데이터의 순서가 중요한 수치 데이터도 있습니다. 예를 들면 주식 데이터를 생각해 볼 수 있는데, 굉장이 노이즈가 많기 때문에 노이즈에 강한 숫차 모델, 예를 들면 칼만 필터(Kalman Filter)와 같은 모델을 사용합니다.
3.1.3 이미지 데이터
이미지 테이터는 최근 들어 주목받고 있습니다. 스마트폰, 디지털 카메라, 사진 및 동영상 공유 서비스가 발전함에 의해 사용할 수 있는 데이터양이 급격하게 늘어났고, 이는 데이터양이 많을 수록 성능이 향상되는 딥러닝을 이용한 모델이 전에 없던 성능을 낼 수 있게 해주었기 때문입니다.
이미지 데이터의 가장 큰 특징은 값(색상, 채도, 명도 등)과 위치에 따라 점의 의미가 달라진다는 겁니다.
이미지 데이터는 각 구역을 픽셀로 쪼개어 표현하게 되는데, 주변 픽셀에 따라 한 픽셀이 갖는 값의 의미가 달라집니다. 예를 들어 검은 구역이 있을 경우, 주변이 모두 검은 구역이면 사과의 가운데, 오른쪽 옆이 흰구역이면 사과의 가장자리가 되는 식이죠. 이렇게 픽셀 데이터가 근접한 픽셀 데이터와 강한 연관 관계를 가지는 것이 이미지 데이터의 가장 큰 특징입니다.
이러한 근접 연관성을 효과적으로 모델링하는 데는 '그래프 모델'에서 다룬 구조 모델 등을 사용합니다. 예를 덜어 대표적인 딥러닝 기법인 CNN(Convolutional Neural Network)은 한 픽셀과 그 주변 픽셀의 값을 동시에 고려하여 피처를 생성합니다.
비디오 데이터도 머신러인에 사용됩니다.예를 들어 비디오를 이용한 머신러닝을 할 경우, 비디오를 연속되는 이미지로 분할하여 사용하게 됩니다. 이때 연속된 이미지가 어떤 장면을 나타내는지 학습하기 위해 앞서 설명한 구조 모델을 확장시켜 화면의 위치 근접도와 시간 근접도를 복합적으로 사용하는기법이 적합합니다
3.1.4 음성 데이터
음성 데이터는 수치 데이터와 많은 부분에서 비슷합니다. 노이즈가 많으며 특히 시간에 따른 변화가 중요하기 때문에 시간에 따른 변화를 모델링할 수 있는 머신러닝 기법이 사용됩니다. 하지만 몇 가지 주목할 점이 있습니다.
음성 데이터는 소리에 관한 데이터이므로 일반적으로 소리의 높낮이나음색을 신호 처리 기법으로 전처리한 후에 사용하게 됩니다. 때표적인 기법으로 스펙트로그램(spectrogram)이나 퓨리에(Fourier)피처 등이 있습니다. 이러한 신호 처리 기법을 적용하여 얻은 피처와원래 신호를 조합하여 머시너닝을 하는 경우가 많습니다.
또한 데이터를 수집할 때 보통 한 가지 소리만 깔끔하게 얻는 경우는 많지 않습니다. 그래서 녹음된 소리를 여러 가지 소리로 나누는 머신러닝 기법을 사용한 이후에 앞서 언급한 기법을 일반적으로 사용합니다.
3.1.5 복합 데이터
복합 데이터는 다양한 유형의 데이터가 썩여 있는 것을 말합니다. 단순하게 생각하면 데이터의 특성에 따라 각기 다른 머신러닝 기법을 적용하여 분석을 할 수도 있지만, 연관 관계를 이용해서 여러 기법을 한번에 학습시키는 방법도 생각할 수 있습니다.
예를 들어 비디오(이미지 데이터, 음성 데이터)와 자막(텍스트 데이터)이 동시에 입력으로 들어오는 경우를 생각할 수 있습니다. 시간대별 이미지, 음성, 자막이 연관 관계를 가지고 있기 때문에 이러한 연관 관계를 한번에 학습할 수 있는 기법을 사용하면 각각을 따로 처리하는 것보다 더 좋은 결과를 얻을 수 있습니다. 최근에 각광받는 방법으로는 이미지 분류와 자막분류를 하는 신경망 모델을 동시에 중간 레이어를 공유해서 학습합니다. 그 결과로 이미지를 입력하면 그 이미지에 무엇이 있는지 텍스트로 설명할 수 있습니다.
3.2 데이터양과 품질
데이터양과 품질은 유형만큼이나 머신러닝 기법의 선택과 적용에 큰 영향을 끼칩니다. 이미 2장에서 간단히 설명했지만 여기서는 머시러닝을 실제로 적용할 때의 고려사항을 자세히 살펴보겠습니다.
3.2.1 데이터양과 머신러닝의 연관성
모든 머신러닝 기법은 데이터가 적으면 유용한 학습 결과를 얻기 힘듭니다. 그렇기 때문에 데이터를 많이 모으는 것은 괸장히 중요합니다. 하지만 데이터가 많더라도 특정 항목(레이블)에 대한 데이터가 적으면 해당 부분에 대해서는 학습이 제대로 되지 않을 수 있습니다. 이 문제는 이미지 태깅처럼 분류 항목 수가 굉장히 많은 경우에 비번히 발생합니다. 구체적으로 다음 세 경우를 들 수 있습니다.
데이터의 레이블을 얻기 굉장히 어려운 경우
사람이 일일이 예측 결과(예를 들면 이미지 태깅이나 문법 파싱)를 제공하는 경우에는 큰 비용이 들기 때문에 데이터의 레이블을 얻기 어렵습니다. 이런 경우에는 학습이 잘되지 않은 부분을 머신러닝 시스템이 사람에게 질문하는 방식으로 학습 성능을 높이는 액티브 러닝(active learning)기법을 사용하는 것도 좋습니다.
데이터양은 많지만 특정 레이블의 데이터가 부족한 경우
데이터가 전체적으로는 많지만 레이블 유형이 다양해서 어떤 레이블은 굉장히 적은 수의 데이터만 가지는 경우입니다. 사람이 레이블을 태깅하는 경우에는 특정 레이블로의 쏠림이 더 많이 발생해서 이 현상이 더 심각해지는 경우가 많습니다. 균형이 맞지 않게 되면 손실 함수는 데이터가 많은 레이블에 집중하고 나머지를 무시하기 때문에 균형잡힌 성능을 보여주지 못합니다.
이를 해결하려면 데이터양이 많은 레이블에서 임의로 데이터를 누락시켜(과소표집) 데이터의 균형을 맞추거나, 데이터가 적은 경우에도 잘 동작하는 원샷러닝(one-shot learning, 또는원샷학습)등의 기법을 사용할 수 있습니다. 데이터를 한 번만 보고 학습이 가능하다고 해서 원샷러닝이라 부릅니다.
데이터양은 많지만 특정 경우의 데이터가 아예 없는 경우
데이터가 들어오는데 새로운 레이블이 끊임없이 생성되는 경웅에는 제로샷러닝(zero-shot learning, 또는 제로샷학습)을 사용합니다. 대표적인 제로샷러닝 기법으로 다른 형식의 데이터를 이용해서 유사도를 판별하여 새로운 레이블을 학습 데이터 없이 예측하는 방법이 잇습니다. 예를 들어 비디오와 자막이 입력으로 주어지는 경우 자막의 유사도를 판단하여 이미지의 내용을 추측하는 방식을 사용할 수 있습니다.
3.2.2 데이터 품질과 머신러닝의 연관성
데이터양뿐만 아니라 품질도 머신러닝 기법 선택에 여향을 미칩니다. 데이터 품질은 노이즈양에 가장 크게 여향을 받습니다. 유용한 피처와 함께 레이블이 주어졌을 때 레이블의 무작위성에 따라 머신러닝 기법이 달라집니다. 데이터 품질에 따른 고려 사항은 다음과 같습니다.
관측 데이터에 노이즈가 많은 경우
무작위성이 높아 노이즈가 많은 경우는 수치 데이터에서 굉장히 비번하게 발생합니다. 데이터 양이 적으면 성능에 더 큰여향을 주는데, 이를 해결하려면 '간단한 모델'을 사용합니다. 간단한 모델은 가정이 가합니다. 이 모델은 유연하지 않고 노이즈에 강하기 때문에 이 경우에 적합한 모델이라고 볼 수 있습니다. 노이즈 자체를 가정에 두는 칼만 필터 같은 모델도 많이 이용됩니다.
레이블이 일정하지 않은 경우
크라우드 소싱이나 여러 사람이 수작업으로 레이블링하는 경우에는 작업자의 데이터나 레이블에 대한 해석 차이로 레이블이 통일되지 않을 수 있습니다. 예를 들어 단어가 긍정적인지 부정적인지 수치로 나타내는 작업을 여럿이서 한다고 가정합시다. A는 전반적으로 점수를 낮게 주고 B는 높게 주었다고 합시다. 이런 경우에는 평가자로 인한 편차를 줄이는 전처리 작업이 필요합니다. 수치값이라면 레이블의 평균과 분산을 구해서 맞춰주는 경우가 일반적이고, 여러 항목에서 고르는 작업의 경우에는 몇 명 이상이 동일한 항목을 고른 경우에만 그 값을 활용하는 방법이 있습니다. 즉, 전처리 작업을 한 후 에 머신러닝을 적용합니다.
3.3 데이터 표준화
데이터 척도 및 단위를 변환하여 데이터를 비교하기 쉽게 만드는 방법을 데이터 표준화(data normalization)라고 합니다. 데이터형에 따라서 데이터 표준화의 방식이 달라집니다. 여기서 다룰 데이터형에 따른 표준화 방법은 담음과 같습니다.
- 수치 데이터 표준화: 단위가 다른 수치 데이터를 비교하기 위해 데이터르 ㄹ변환하는 기법입니다.(예를 들면 키와몸무게_
- 카테고리 데이터 표준화: 숫자로 표현할 수 없는 항목을 수치 데이터로 변환하는 방버입니다.(예를 들면 성별)
- 서수 데이터 표준화: 순서 혹은 크기가 있는 데이터의 카테고리 차이를 나타내기 위해 데이터를 변환하는 기법입니다.(예를 들면 영화 별점, 설문지 응답등)
3.3.1 수치 데이터 표준화
키와 몸무게, 구매상품 수와 구매 가격 등 단위가 다른 두 수치 데이터를 직접 비교하는 것은 의미가 없습니다. 이럴 때는 각 데이터를 평균이 0, 표준편차 1인 데이터로 바꾼후 비교하면 효과적입니다. 이런 식으로 데이터를 변환하는 방법을 z-점수 표준화(z-score standardization)라고 합니다.
z-점수 표준화 외에 데이터를 변환하는 방법으로 척도화와 벡터 정규화가 있습니다. 척도화(scaling)는 피처의 최댓값 및 최솟값을 이용하여 피처 값의 범위를 조정하는 방법입니다. x를 원래 데이터의 피처값, x1를 변환된 피처값으로 표기할 때의 척도화를 식으로 나타내면 다음과 같습니ㅏㄷ.
척도화
x1 = (x - min(x)) /(max(x)-min(x))
벡터 정규화(vector normaliztion)는 한 데이터 가지는 피처 벡터의 노름(norm)이 1이 되게 하는 방법입니다. 노름은 벡터의 크기라고 볼수 있으며, 벡터 x의 노름은 ||x||로 표시하고 다음 식으료 계산합니다.
||x|| = 루트(xx1 + xx2 + xx3 .... xxn)
x1 = x / ||x||
즉, 벡터 정규화는 벡터의 각 요소를 벡터의 총 크기로 나누는 것이라고 볼 수 있습니다. 이렇게 하면 크기가 다른 벡터들의 요소를 비교할 수 있게 됩니다.
예를 들어 구매 항목 피처 벡터가 디비디 카테고리 구매 수와 간식 카테고리 구매수로 이루어진 경우을 생각해 봅시다. 사용자가 A가 디비디10개와 감자침 5개를 샀고, 사용자 B가 디비디 6개와 감자칩 3개를 샀다고 했을 때, 구매한 상품의 총 수는 다르지만 두 사용자 모두 디비디를 감자칩의 2배수로 구매했다는 점에서 두 사용자는 비슷하다고 볼 수 있습니다. 이 경우 두 사용자의 벡터 크기는 다음과 같이 구합니다.
사용자 A 의 피처 벡터 크기 루트(10*10 + 5*5) = 11
사용자 B 의 피처 벡터 크기 루트(6*6 + 3*3) = 7
각 피처 요소를 나누면(즉, 벡터 정규화를 하면) 사용자 A의 피처 벡터는 (10/11, 5/11), 사용자 B의 피처 벡터는 (6/7, 3/7)로 비슷한 값이 됩니다. 이 두 벡터로 유클리드 거리를 계산하면 사용자 A와 B의 유사도가 높게 나올 겁니다.
데이터형과 데이터 값 및 학습에 사용하는 모델에 따라 데이터 표준화 방법을 바꾸는 것이 성능에 도움이 됩니다. 예를 들어 선형 희귀의 경우 z-점수 표준화를 하는 편이 성능도 좋고 이해하기 쉬운 결과가 나옵니다. 길이가 다른 문서 안의 단어 빈도를 피처 벡터로 바꾼 뒤 유사도를 계산할 경우 피처 벡터를 벡터 정규화한 후 계산해야 정확한 비교를 할 수 있습니다.
3.3.2 카테고리 데이터 표준화
상품 카테고리의 차이는 어떻게 계산해야 할까요? 상품명, 상품 카테고리, 성별과 같은 비수치 데이터 사이의 유사도 계산에는 원-핫 인코딩(혹은 더미코딩)방식을 이용합니다. 원-핫 이코딩이란 카테고리 데이터 값을 피처로 만든 후 1 또는 0으로 지정하는 방법입니다. 예를 들어 '성별:나성, 성별:여성' 대신 남성은 0, 여성은 1로 수치화하여 '성별:0, 성별:1' 로 표기하는 겁니다.
3.3.3 서수 데이터 표준화
카테고리 데이터이면서 카테고리에 순서가 있는 데이터형을 서수(ordinal)데이터라고 합니다.
서수는 설문조사 답변(예를 들면 '전혀 그렇지 않다, 그렇지 않다, 어느 쪽도 아니다, 맞다, 매우 맞다')이나 영화의 별점을 생각하면 쉽습니다. 담변이나 별점을 1 부터 5의 숫자로 표시하기는 하지만 가능한 별점이 카테고리로 정해져 있으므로 이는 수치 데이터가 아닙니다. 예를 들어 가능한 별이 1~5점인 경우와 1~10점인 경우, 별점 3점이 가지는 의미는 매우 다릅니다.
하지만 각 카테고리가 동등하지 않다는 점에서 카테고리 데이터도 아닙니다. 따라서 다순히 수치 데이터로 취급하여 평균과 분산을 이용해서 표준화하거나 원-핫 인코딩으로 변환하는 것은 적절하지 않습니다. 이러한 경웅에는 일반적으로 다음 식을 이용하여 0과 1사이의 값으로 표준화 합니다.
서수형 데이터 표준화
(t -1 /2 )/M, i = 1,2,...,M
t: 카테고리
M: 가능한 카테고리
옐르 들어 별점 5점 만점에 별점 3인경우에는 표준화한 값이 (3-1)/5 = 0.5가 됩니다. 별점 3점이 1점과 5점의 한가운데임을 생각하면 0.5로 표시하는게 적절한 것 같습니다. 별점 10점 만점에 별점 3인 경우에는 (3 - 12)/10 = 0.25로 다른 값이 나오게 됩니다.
0부터 1사이로 척도화하는 방법도 생각할 수 있지만, 이 경우 별점 1을 수치 0 으로 바꾸게 되므로 데이터의 의미가 약간 달라집니다. 별점 1과 수치가 존재하지 않음을 의미하는 0은 다르니까요.
3.4 문제 유형
지금까지 데이터양과 품질에 따른 고려 사항을 살펴봤습니다. 이 절에서는 문제 유형에 따른 고려 사항을 살펴보겠습니다. 문제 휴형은 크게 희귀, 분류, 군집화, 표현형학습으로 구분할 수 있습니다. 문제 휴형을 잘못 선택하면 원하는 답을 얻지 못할 수 있기 때문에 문제를 구별하기는 기준은 꼭 숙지해둬야 합니다.
3.4.1 회귀문제
회귀는 머신러닝 문제 중에서도 가장 기본입니다. 회귀는 간단히 말해 입력을 받아서 가장 적합한 숫자값을 예측하는 문제입니다. 옐르 들어 주어진 상황 정보를 종합해서 주식값이 얼마가 될지 예측하는 겁니다.
회귀를 가장 기본적인 문제로 보는 이유는 출력된 결과를 해석하는 방식에 따라 여러가지 문제를 풀 수 있기 때문입니다. 예를 들어 출력된 숫자를 확률로도 특정 항목 번호로도 해석할 수 있습니다. 그렇기 때문에 어떤 문제를 풀더라도 결귀에는 회귀문제로 환원되는 경우가 많습니다.
회귀문제에 사용되는 머신러닝 기법은 다른 머신러닝 기법의 기초가되는 경우가 많습니다. 회귀문제를 푸는 기법으로는 통계학에서도 널리 쓰이는 선형회귀, 가우시안 프로세스 회귀, 칼만 필터가 유명합니다.
3.4.2 분류문제
분류는 회귀만큼이나 기본적인 머신러닝 문제입니다. 회귀 기법으로 분류 문제를 풀 수도 있지만, 보통은 분류에 해당하는 손실함수를 직접 최적화해서 푸는 방법을 많이 사용합니다. 예를 들어 인터넷 신문기사의 단어들을 가지고 이 기사가 어떤 분류 항목에 해당하는지 선택하는 경우들 들 수 있습니다.
분류 문제에서는 주어진 입력에 대해 여러가지 가능한 항목 중에서 한 가지를 선택하는 경우가 많지만, 기법에 따라서는 여러가지 선택하기도 합니다. 여러가지 항목에서 하나를 고르는 문제를 멀티 클래스(혹은 다중 클래스)분류라고 부르고, 복수를 고르는 문제를 멀티레이블(혹은 다중 레이블) 분류라고 부룹니다.
분류는 주어진 이미지가 어떤 항목에 속하는지 판별하는 문제, 생산 공정에서 제품의 데이터로 하자를 판별하는 문제, 텍스트의 의미가 어떤 항목에 해당하는지 판별하는 문제 등 셀수 없이 다양한 경우에 사용됩니다. 이전 시간을 고려한 주어진 상황을 보고 여러가능성이 있는 답 중에서 하나를 고르는 경우는 모두 분류 문제입니다.
분류문제를 풀 때는 기본적으로 로지스틱 회귀, 서프트 벡터 머신, 신경망 등 사용합니다. 그리고 입력이 시간에 따라 변화하는 데이터를 모델링 하는 경우에는 CRF나 RNN등을 사용합니다.
3.4.3 군집화 문제
군집화는 비슷한 성격의 데이터를 묶는 머신러닝 문제입니다. 물론 각각의 입력을 받아 출력으로 항목(레이블)을 예측하는 분류 문제로 볼 수도 있지만, 가장 큰 차이는 항목이 주어지는 것이 아니라 데이터에 내재된 분류를 찾아내야 한다는 점입니다. 즉, 받은 입력을 비슷한 성격별로 묶어야 합니다.
군비화 문제는 현재 주어진 데이터를 분석하는 데 사용합니다.(기존 데이터와 비교하여 미래 데이터에 대해서도 군집화를 할 수 있습니다). 예를 들어 비슷한 비디오나 문서끼리 묶어서 찾기 편하게 만들거나 비슷한 사용자를 군집화해서 군집별 특성을 살펴보는 경우를 떠올릴 수 있습니다. 군집화 기법을 문서에 활용한 것으로는 토픽 모델링이 유명합니다. 이 기법은 많은 그리고 레이블이 없는 문서에서 공통 주제를 발견하여 문서를 주제별로 묶습니다.
군집화 문제에서 가장 중요하게 여기는 것은 데이터 유사도(혹은 유사상)입니다. 이 유사도를 어떻게 정의하느냐에 따라 군집화 결과가 크게 달라집니다. 옐르 들어 이미지 데이터에서 크기에 따른 군집화와이미지 색상에 따른 군지화의 결과는 크게 다릅니다.
군집화 깁버은 종종 입력을 간추리는 용도로도 사용됩니다. 입력을 직접 사용하는 대신 군집에 얼마나 속하는지에 대한 강도를 이용해서 입력을 간단하게 표현해서 사용하는 것 입니다. 이렇게 변형된 군집화 기법은 다음 절에서 소개할 표현형학습과 유사한 역할을 수행하게 됩니다.
대표적인 기법으로는 K-평균 군집화(K-means clustering)와 평균이동 군집화(mean shift)가 있습니다. 문서를 토픽에 따라 군집화하는 방법은 토픽 모델링이라고 부르는데, LDA(latent dirichlet allocation, 잠재 디리클레 할당)라는 기법이 유명합니다. 엄밀하게 따지자면 군집화와 토픽 모델링은 접근하는 관점이 약간 다르지만, 비슷한 성격을 묶는다는 의미에서 이처럼 분류해보았습니다.
3.4.4 표현형학습(임베딩학습)
표현형학습은 앞서 설명한 3가지 문제보다 더 근본적인 문제를 다루는데 사용합니다. 표현형 학습은 풀고자 하는 문제에 적합한 표현형(representation)을 데이터로부터 추출하는 것을 말합니다. 표현형과 데이터로부터 직접적으로 추출하는 피처 차이는 다음과 같습니다.
1. 표현형은 피처보다 훨씬 더 간략합니다(표현형의 차원이 훨씬 더 낮습니다.)
2. 피처는 높은 차원을 가지는 경우가 많기 때문에 많은 부분이 0으로 차 있습니다(희박하다고 표현합니다). 표현형은 훨씬 낮은 차원으로서 데이터를 잘 설명해야 하기 때문에 밀집도가 높습니다.
블로그에 올린 일기를 통해 그날그날마다 글쓴이가 느낀 감정을 파악하려 하는 경우를 생각해봅시다. 분류 문제를 이용해서 푼다면 일기 문서의 구성 단어를 한하나 '긍정적'인 것과 '부정적'인 것으로 분류하고 그 수를 비교해서 날마다에 대해 긍정과 부정 두 가지 중 하나를 고르게 하는 문제로 환원할 수 있을 겁니다. 하지만 한 단어의 의미는 단순하게 긍정이나 부정만으로 결정되지 않죠. 더 복잡한 의미를 지니는 경우가 많습니다.
딥러닝에서는 이러한 문제를 해결할 때 긍정 혹은 부정에 속하는 단어 대신 표현형학습을 통해 얻은 단어 임베딩을 사용합니다. 보통표현형학습은 더 쉽게 구할 수 있는 다른 데이터를 이용해서 학습을 합니다. 예를 들어 데이터양이 훨씬 많은 워키백과를 이용하여 단어의 표현형을 학습한 후 그 표현형을 블로그 기사의 분류에 사용하여 문제를 풉니다.
이렇게 표현형은 다른데이터에서 학습하여 다양한 문제를 푸는데 사용할 수 있습니다. 즉, 위키백과에서 '고양이'라는 단어와 '야옹이'라는 단어의 표현형이 비슷하게 나오도록 학습한다면 그 결과를 블ㄹ로그 분류에도 유용하게 사용할 수 있습니다.
대표적인 임베딩 학습으로 문서 처리에 강점을 보이는 word2vec 모델과 그 파생모델, 행렬 분해가 있습니다.
댓글 없음:
댓글 쓰기