Artificial Intelligence and Law Story
기계가 이해하는 사람의 언어
자연어처리에 대해 이야기하기전에 다음과 같은 벤다이어그램을 한번 보자.
AI(인공지능)이라는 큰 틀안에 ML(기계학습)이있고, 기계학습안에 DL(딥러닝)이 있다. 그리고 NLP라고 불리는 자연어처리는 ML(기계학습)과 DL(딥러닝)을 교집합으로 가지고 있는 영역이 있다.
NLP(자연어처리)는 지난글(#2 인공지능과 법-(feat.자연어처리))에서 개념을 간단하게 설명했지만, 쉽게말해서 기계가 사람의 언어에 대해 처리하는 계산적 기술(Computational Technicques)의 집합이라고 할 수 있다. 이런 NLP(자연어처리)의 세부분야로는 감정분석,번역,음성인식,질의응답,구문분석등이 있다.
말이 어려워 보이지만, 쉬운 예를 들면, 워드 클라우드(Word Cloud)를 생각해보자. 아마도 밑에 그림과 같은 워드클라우드는 언론이나, 미디어 또는 어디선가 본 적이 있을 것이다. 이런 워드클라우드 또한 자연어처리를 통해 사람들의 관심사 또는 빈도수를 단순 카운트하여 시각화 시킨 것이다. 즉, 사람의 언어를 컴퓨터를 통해 계산하여 처리하는 기술들이 자연어처리의 핵심 개념이다.
하지만... 빈도수를 기초로한 워드클라우드 자체는 딱히 어떤 유의미한 의미 또는 정보를 제공하지는 않는다. 그저, 빈도수를 카운트한 것에 불과할 뿐...
그렇다면... 조금 더 스마트한(?) NLP(자연어처리)는 무엇이 있을까?
Uni gram, Bigram, Trigram ... 이것은 쉽게 설명하면, 어떤 단어 뒤에 어떤 단어가 따라올까?에 대해 확률적으로 계산하는 언어 모델이라고 생각하면 된다.
예를 들어, 기존의 텍스트 데이터들을 통해 p("Today is Monday")이라는 확률이 0.001이라고 한다면 p("Today Monday is")은 0.000000000001 이 될 것이다. 즉, 드물거나 아주 보기힘든 순서일 경우에, 확률은 낮아지고, 마치 기계가 인간의 언어를 이해하고 문장을 생성 또는 비어있는 단어를 예측하는 것처럼 보이는 것이다.
Bigram 같은 경우는 2개의 연속적인 단어를 보는 모델이고, Trigram 같은 경우는 3개의 연속적인 단어를 보는 모델이다. 따라서, 많은 텍스트 데이터를 사용할수록, 마치 기계가 인간의 언어를 이해하고 있는 것처럼 보이게 된다. 하지만, 위에서 NLP(자연어처리)가 계산적 기술의 집합이라고 정의되는 것을 보면 알 수 있듯이, 사실은 컴퓨터는 그저 수학적 계산을 통해 인간의 언어를 계산하고 처리하고 있는 것임에 불과하다는 것을 알 수있다.
이렇게 단순해보이는(?) 자연어처리가 어떻게 쓰이는지 궁금할 수도 있는데.. 바로, 미국에서 최고의 스펠링체크 소프트웨어로 불리는 Grammarly 또는 Ginger 또한 위에서 설명한 언어모델 또는 통계에 기반한 자연어처리 기술을 활용한 대표적인 소프트웨어라고 볼 수 있다. 물론 Grammarly와 Ginger와 같은 소프트웨어는 자연어처리에 있어서 딥러닝도 활용한다고 본사 홈페이지에서 밝히고 있다.
사실, 위에서 언급한 Language Model(언어모델) 같은 경우에 아주 쉬워보이지만? 자세히 파고들어가보면, 조금 더 알아야 할 복잡한(?) 개념들이 기다리고 있다.
지금 간략히 소개할 개념은 Topic Modeling(토픽모델링)인데, 본 글에서 설명하는 개념들은 사실, 하나하나 자세히 살펴보면서 이해하려면 어느정도의 시간을 필요로한다. 하지만 여기서는 해당 개념에 대한 대략적인 이해를 목표로 정리하겠다.
Topic Modeling(토픽모델링)이란, 쉽게 말해서 문서 가운데 연관된 단어들을 묶어서 주제분포를 만들어주고, 문서별로 주제가 얼마나 포함되어있는지 계산해주는 것이라 생각하면 된다.
Topic Modeling(토픽모델링)의 접근법은 다양하다. (LSA, pLSA, LDA, and the newer, deep learning-based lda2vec).
대표적인 기법은 LDA(Latent Dirichlet Allocation)인데, 사람들의 각 관심사와 관련된 '토픽'이 무엇인지 파악하는지 알 수 있게하는 접근법이라고 이해하면된다.
LDA(Latent Dirichlet Allocation)는 문서에 대한 확률 분포를 가정한다는 점에서 나이브베이즈 분류와 비슷하다고 생각할 수 있는데, 사실, LDA(Latent Dirichlet Allocation)를 이루는 이론적 기초는 베이즈 추론이다.
본 글에서는 수식과 필요한 이론의 설명은 생략한다. (자세한 개념의 설명은 하단 링크를 참고)
위 그림을 한번 보면, Spain 과 Madrid와의 관련성, Germany와 Berlin, France와 Paris가 연결되어 있다. 각 나라와 그 나라명의 수도인데, 이것 또한 NLP(자연어처리)를 통해 나타낼 수 있는 결과다. 어떻게 가능할까? 바로 Word Embedding 을 활용했기 때문이다. Word Embedding이란 쉽게 말해서, 우리가 쓰는 언어들을 벡터로 표현하여 처리하는 것을 말하는데, 이를 Word Embedding이라고 한다.
즉, 다음과 같이 벡터공간에 단어를 표현한 것이다. 이렇게 1,0으로 하나의 값을 표현하는 것을 ONE HOT ENCODING 이라고 하며 밑의 그림에서 만약 V개의 단어가 있다면, V개의 단어 배열을 V차원 벡터로 표현할 수 있을 것이다. 이를, ONE HOT VECTOR라고 한다.
이러한 Word Embedding 의 대표적인 표현 방법이 Bag of words / TF-IDF / Word2Vec / Glove 등등 여러가지가 있는데, 수식과 이론의 설명을 생략하고 핵심적인 개념만 설명하도록 하겠다.
Bag of Words(BOW) 모델 같은 경우 말 그대로, 주머니에 단어를 그냥 넣은 것과 같이, 문서 내에 존재하는 모든 유니크한 단어수가 벡터의 차원이 되어 고차원의 공간이 되는 것을 말한다. (위 그림처럼).
그렇다면, 여기에 문제가 있다. 많이 나온 단어라고 그 단어가 중요한 의미를 가진다고 볼 수 있을까? 예를 들어, 영어에는 관사나 접속사 등등 쓸데없는 말이 어마어마하게 많이 나올텐데, 그 단어의 빈도수가 높다는 이유로 중요하다고 할 수 없다라는 것이다.
이런 고민에서, TF-IDF 라는 개념, 즉 문서내에서 단어의 중요성을 단순히 Count 즉, 빈도수에 의한 것이 아닌, 이 TF-IDF 를 통해서 나타내었다고 이해하면된다.
하지만, 이것 또한 문제가 있다. 바로, 문장내에서의 순서는 고려하지 않게 되며, 이에 따른 문맥 정보가 사라진다는 것이다. 또한 위와 같이 모든 단어를 벡터공간에 표현하려고 하다보면, 데이터 공간이 너무 커져서 분석 기법의 성능이 약화되는 결과까지 초래할 수 있다.
2013년, 구글의 토마스 미코로프(Tomas Mikolov)는 Word2Vec 이라는 Word Embedding(워드 임베딩) 모델을 공개했고, 이는 말 그대로, 단어를 벡터로 변환시켜 신경망 구조를 활용하여 그 단어의 ONE-Hot Vector 를 입력으로 넣고 주변 단어의 One- Hot Vector 값을 예측하는 방식으로 학습이 이루어지는 개념을 말한다. (아래 그림 참조)
Word2Vec은 학습속도도 빠를 뿐더러 앞서 언급했던 모델의 문제점인 "단어의 맥락"을 고려하므로 단어의 의미를 잘파악해내는 것을 확인할 수 있다. 이와 같이 NLP(자연어처리)에는 다양한 테크닉들이 쓰이고 있으며, 여기에 미처 설명하지 못한 정말 수 많은 알고리즘과 개념들이 있다.
본 글의 목적은, 인터넷에 넘쳐나고 또 넘쳐나는 AI에 관한 글들 가운데, 인공지능과 법과 관련하여 NLP(자연어처리)가 쓰인다고 하는데, 이것이 도대체 무엇인지, 대략적인 그림을 볼 수 있도록 돕는 것을 목적으로 하였으며, 혹시, 자세한 내용을 알기 원한다면, 이전 글에도 언급했던 국내 법률 인공지능 전문 기업 인텔리콘 연구소의 대표이사 임영익씨의 저서 '프레디쿠스(PREDICUS)' (제6장 언어지능편)을 참고하면 많은 도움이 될 것이라 생각한다. 또한, 하단의 참고 링크글을 통해 부족한 개념을 알아가는데 도움이 되었으면 한다.
*본 글에서는, 제가 공부했던 자연어처리의 개념 가운데 수식과 어려운말을 최대한 배제하고, 해당 개념에 대한 소개와 개괄적인 이해를 목적으로 작성하였습니다.
<참고>
-<프레디쿠스> (임영익)
-<인공지능과 법> (한국인공지능 법학회)
-https://code.google.com/archive/p/word2vec
-<밑바닥부터 시작하는 데이터과학> (조엘 그루스)
-https://bab2min.tistory.com (자연어처리 관련 알고리즘 설명 참고)
-https://medium.com/nanonets/topic-modeling-with-lsa-psla-lda-and-lda2vec-555ff65b0b05