Classification 문제 셋팅

Mirrored feed : http://hugman.re.kr/blog/classification_setting/

이 글에서는 Supervised Learning 에서의 '분류 - Classification' 문제를 일반적으로 어떻게 설정하고 푸는지를 알아봅니다.

다른 사람들이 문제를 풀었을 때, 그 문제를 어떻게 풀었나 보기 전에 살펴봐야 할 것이 "그 사람이 이 문제를 어떻게 바라보고(설정하고) 풀기 시작하였나?" 입니다. 이 문제 셋팅, 혹은 문제의식에서부터 모든 해결 방법 혹은 파생 문제들이 만들어지며, 동시에 구조적 한계점도 발생하게 됩니다.

Mordern AI 에서의 분류 문제 (Classification) 도 셋팅 방법이 사실상 정해져 있습니다. 크게 다음과 같은 형태로 설정됩니다.

  • Class 설정 : 분류의 대상이 되는 Category 를 설정
  • Class 별 데이터 수집
  • Classification Model 구현
  • Cost Function 구현 : Model 이 예측한 값과 실제 정답간의 오차를 어떻게 계산할 것인가?
  • Model Parameter Update : 오차를 줄어 들게 하는 모델로의 진화를 어떻게 만들어 낼 것인가?
  • Evaluation : 별도로 마련된 평가데이터를 활용해 내 Classification Model 의 성능 측정

아무리 복잡한 수식을 포함하는 분류 방법론도, 위의 틀을 벗어나지 않습니다. 각 항목별로 변이가 조금 생기는 것이죠.

위의 틀을 바탕으로, 감성분석기를 설명해보겠습니다.

일단 감성분석 대상 문서나 서비스를 살펴보고, 몇 개의 감성 Tag 를 서비스에 전달해주어야 하는지 결정해야 합니다. 보통 "긍정", "부정", "중립", "객관" 정도로 나눠볼 수 있으니, 우리의 감성분석 서비스는 총 4가지의 감성정보를 제공해주는 분류모델을 만들어 내는것으로 결정합니다.

그 다음은, 기존에 쌓인 로그나 혹은 신규 데이터를 하나씩 읽고, 정해진 Class 4개 중 하나로 Tag를 달아 줍니다. 예를 들어, "이 호텔은 꼭 다시 가고 싶습니다" 정도의 문장에는 "Positive"(긍정) tag를 달아주겠습니다. 이런식으로 가지고 있는 모든 훈련 데이터 혹은 평가 데이터에 대해서 아래와 같이 태깅을 수행합니다.

  • 다음에 또 가려 구요! -> [positive]
  • 좀 비좁은 느낌을 가져다 줄지도! -> [negative]
  • 비싼 호텔인가 싶었어요. -> [neutral]
  • 무료 Wi-Fi -> [objective]

그 다음으로 수행해야 할 것은, 각 문장이 들어올 때 마다, 저 4가지에 대한 값을 부여해줄 모델을 만드는 것입니다. 수도 없이 많은 방법이 있겠지만, 아주 간단한 수준의 Single Layer Perceptron 을 구현해봅니다.

(Single Layer Perceptron 에 대해서는 전혀 몰라도 됩니다. 어떠한 분류 방법을 쓰던, 최종 class에 값으르 부여한다는 것 정도만 아시며 됩니다.)

여기서 가장 왼쪽 바구니(class) 부터, 긍정 - 부정 - 중립 - 객관의 순이라고 정합니다. 이렇게 되면, y1 값은 긍정의 점수, y2는 부정의 점수, y3는 중립의 점수, y4는 객관의 점수가 계산되는 것입니다.

즉 우리가 어떤 방법을 쓰던, 우리가 하는 Classification 의 큰 틀은, 입력을 가공해서 값을 계산한 뒤, 정해진 클래스에 해당하는 바구니에 값을 채워 넣는 것이라고 직관적으로 이해하시면 됩니다.

이렇게 값이 계산되고 나면, '학습'을 위해서 우리의 모델이 얼마나 맞았나, 혹은 얼마나 틀렸는지를 계산해야 합니다. 이러한 오차를 계산하기 위해서는, 어떤식으로든 우리가 알고 있는 정답도 "숫자"로표현되어야 합니다. 여기서 중요한 주제 중 하나인 "정답을 어떻게 표현해야 하나?"가 나옵니다. 이 주제는 다음글에서 자세하게 다루겠습니다.

위의 형태대로 설정한 분류모델은 아무리 잘 설계한 방법을 쓰더라도, 4가지 중 하나 밖에는 말할 수 없습니다. 즉 어떠한 문장이던, 긍정/부정/중립/객관 중 하나로만 맵핑하게끔 구조적으로 설계되었습니다. 사람은 어떠한 문장을 보는 순간 "이건 저 4가지 카테고리에 속하지 않는데?" 라는 것을 바로 알 수 있지만, 위의 형태대로 "문제를 설정"하고 구현한 분류 방법론은 4가지 감성 카테고리에 속하지 않는 문장도, 무조건 4가지 중 하나로 연결지으려고 한다는 것입니다. 이러한 인공지능의 구조적 한계를 아는것은 매우 중요합니다. 현재 우리가 다루고 있는 인공지능의 대부분의 방법론은 "모르는 것을 모른다고 말 할 수 없습니다."

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 64231.88
ETH 3128.59
USDT 1.00
SBD 3.95