본문 바로가기

개발/NLP Trends

Weekly NLP #07 Review : 머신러닝과 NLP는 왜 함께 갈까

※ 본 블로그 포스트는 박지호님의 "Weekly NLP" 내용을 채용하여 개인공부를 기록한 포스트입니다.
원작자의 허가를 맡았으며 불법적인 공유가 아님을 미리 알립니다.

 

인간은 태어난 순간부터 언어를 접합니다. 아기가 세상에 나온 순간 부모로부터 불리는 이름은 처음에는 그저 여러 소리중 하나로 들리겠지요. 하지만 점점 커가면서 부모가 아기에게 내는 소리는 장난감에서 나는 방울소리나 음악 소리와는 다르게 어떠한 의미가 있다는 것을 서서히 깨우쳐 나갈 것 입니다. 어떠한 형태의 소리는 자기를 부르는 것을 의미하고, 다른 형태는 밥 먹을 시간이 되었다는 것을 알려준다는 걸 아기는 놀라운 속도로 배워갑니다.

언어를 이해한다는 것은 무슨 의미일까요?

 

NLP에서 가장 큰 화두는 언어 이해 (natural language understanding; NLU)입니다.
거의 모든 NLP 문제는 NLU가 필요합니다. 대화시스템(dialogue system)은 유저가 무엇을 원하는지 이해하여 답을 해야 하고, 감성 분석(sentiment analysis)는 글쓴이가 어떤 주제에 대해 어떤 감성을 가지고 있는지 파악하여 숫자로 나타내야 합니다. 그렇기에 NLP 시스템을 만들려면 위 질문에 대한 답, 아니 완벽하게 답할 수는 없기에 어느정도의 방향성은 가지고 있어야만 한다고 생각합니다.

위클리NLP의 지난여행에서는 기술적인 내용의 기초를 다루었습니다. 하지만 오늘은 조금 철학적이고, 추상적인 부분을 이야기해보려 합니다. 기존의 글은 bottom-up approach였다면,  오늘의 글은 top-down approach인 것이죠. 

언어란 무엇인가?

현대 언어학의 아버지라고 불리는 Noam Chomsky는 언어를 발생시키는 규칙들의 집합이 존재한다고 믿었습니다. 수많은 규칙들이 있고 이에 따라 우리는 말을 하거나 글을 쓴다는 것이죠. 예를 들어 모든 언어에는 정해진 어순이라는 것이 있습니다.

나는 사과를 먹는다 : <주어> + <목적어> + <동사>

 

그리고 ~는, ~를 같은 조사에 대한 규칙이 또 있죠. 하나하나 분석을 하자면 엄청나게 많은 규칙이 있을 것입니다.
Chomsky는 이를 context-free grammer (CFG)라고 불렀고, 이는 현대 언어학의 근간이 되었습니다. 많은 언어학자들이 하는 일은 하나의 언어가 어떻게 쓰이는지, 그로 인해 어떠한 규칙들이 있는지 연구하는 일입니다.

CFG는 프로그래밍 언어를 만들 때 역시 쓰입니다. 프로그래밍 언어는 컴퓨터 컴파일러가 이해해야 하는 인공 언어 (artificial language)이기 때문에 무조건 규칙에 의해 파생된 구문만 이해할 수 있고, 인간의 언어와 다르게 예외 문법을 처리할 필요가 없기 때문에 (compile error를 고치는 건 프로그래머의 몫!), CFG라는 일종의 프레임워크가 상당히 적합합니다.

하지만 인간의 언어는 어떨까요? 예를 들어 이 문장을 한번 봅시다:

나는 먹는다 사과를

 

위의 어순에 관한 규칙을 어긴 문장입니다만, 우리는 이 문장을 이해하는데 큰 문제가 없습니다. 이처럼 컴파일러와는 다르게 인간은 예외 경우를 상당히 유연하게 처리할 수 있다는 것을 알 수 있습니다. 이런 예외까지 생각하면 우리 뇌에는 얼마나 많은 언어 규칙을 습득하고 있는 것일까요?

이미 정석으로 언어를 배운다고 해도 엄청나게 많은 규칙이 필요한데요..?, 출처 : https://jiho-ml.com/weekly-nlp-7/

언어를 컴퓨터에게 가르친다면?

이 많은 언어 규칙들이 우리의 뇌에 저장이 되어있다고 가정을 해봅시다.
그렇다면 이것들을 컴퓨터에게 어떻게 가르칠 수 있을까요? 우리 뇌 안에 있는 규칙들이 엑셀 시트에 한 줄 한 줄 정리해 있으면 얼마나 좋을까요. 하지만 그건 불가능하겠죠.

그렇다면 일단 우리의 뇌에서 나오는 언어를 하나의 함수라고 생각해보면 어떨까요?

함수 : 두개의 변수 $x, y$사이에서, $x$가 일정한 범위 내에서 값이 변하는 데 따라서 $y$의 값이 종속적으로 정해질 때, $x$에 대하여 $y$에 이르는 말. $y$가 $x$의 함수라는 것은 $y=f(x)$라고 표현한다.

함수를 진짜 간단하게 표현한다면, 출처 : https://jiho-ml.com/weekly-nlp-7/

우리가 대화를 하는 경우를 생각해봅시다. 어떤 화자가 어떤 말을 하였을 때, 우리는 화자의 말, 본인의 멘탈 상태, 주변 환경등을 고려하여 답을 같은 언어로 뱉거나 행동으로 취합니다.

$input(x)$ - 말하는 사람이 전달한 말, 듣는이의 멘탈 상태, 주변 환경 등
$output(y)$ - 듣는 사람이 반응하는 말 그리고/또는 행동

 

이처럼 우리는 대화, 더 나아가 언어를 함수라는 모델로 정의할 수 있습니다.
그렇다면 컴퓨터는 이 함수를 찾으면 됩니다. $x$와 $y$의 상관관계만 찾으면 되는 겁니다! 참 쉽죠?

언어라는 함수는 2차 방정식이 아니라...

중학교때 배운 2차 함수 방정식을 기억하시나요? $y=ax+b$에서 $a$와 $b$만 구하면 $x$와 $y$의 상관관계를 계산할 수 있었죠. 하지만 언어를 표현하는 함수는 이것보다는 훨씬 더 복잡할 것입니다. $n$차 방정식에서 $n$이 2가 아니라 쉽게 100,1000,10000이 될 수도 있습니다.

이런 고차원 함수의 완벽한 답을 찾는 것은 불가능하기에, 근사치를 구하는 방법밖에 없습니다. 이를 function approximation이라고 합니다. 예를 들어, 이미 우리가 배운 linear regression 역시 선형 함수의 approximate를 데이터를 통해 구하는 것입니다.

linear function을 데이터를 통해 approximate 한 linear regression, 출처 : https://jiho-ml.com/weekly-nlp-7/

그렇다면 언어라는 엄청나게 복잡한 시스템을 어떻게 함수로 표현하여 approximate할 수 있을까요?
다행히 우리에게는 머신러닝이 있습니다. 머신러닝의 본질은 수많은 데이터가 주어졌을 때 어떠한 형태의 함수에 fit하는 것입니다. 특히 딥 러닝은 엄청나게 복잡하고 parameter(매개 변수)가 많은 non-linear function을 approximate 하는데 유용한 기술입니다. 그렇기 때문에 NLP는 필연적으로 머신 러닝, 더 나아가 딥 러닝과 떼놓으려 해도 뗄 수 없는 학문이 된 것입니다.


취업을 준비하는 저에게 옛날부터 풀리지 않던 의문이 있었습니다. 그때마다 주변에 조언을 구하기도 하고 개발 커뮤니티를 이용해 질문을 하기도 하고 나름대로 답변을 찾아보려고 노력했었죠. 그 결과는 아래와 같습니다.

Q : NLP를 다루는 신입 엔지니어가 갖춰야 할 가장 정량적인 기초수준이 어느정도 될까요?
A : NLP를 왜 하고싶으신가요?

무언가 이상해보이죠?ㅎㅎ
이 포스팅을 보는 여러분도 위의 대화를 보자마자 "응..?" 하고 느낄 수 있습니다. 맞습니다. 사실 저 답변은 저에게 그리 도움이 되지 않았습니다. 그렇지만 오늘 포스팅에서 다루었던 것과 같이 근본적인 맥락을 살펴볼 수 있게 도움을 준 답변이죠. 

누구나 접하기 쉬운 정보에 이렇게 나와있죠. 

출처 ; https://www.youtube.com/watch?v=WTRaYhX4HRU

인공지능은 가장 넓은 범위이고 딥러닝은 기계학습의 일종이다.
딥러닝을 익히기 위해서는 기계 학습 (= 머신러닝)에 대한 기본적인 내용을 안 뒤에 들여다봐야 한다는 것입니다.  

말주변이 없는 제가 결국 드리고 싶은 말은 무엇이냐 하면 근원적인 내용을 배제하고는 깊은 내용을 알 수 없다는 것입니다. 이것을 생각하며 처음에 제가 받은 질문을 생각해보면 저는 왜 NLP를 하고 싶을까요?

사람들은 사회속에서 제각기 다른 삶을 살아갑니다. 사회구성원인 우리중 중복된 인생은 없다고 생각하고 기술이 삶의 효율을 올려줄 수 있다고 믿습니다. 그런점에서 NLP는 굉장히 매력적입니다. 시대가 변하고 기술의 발전이 고도화되어 사람을 대신할 수 있는 학문은 NLP가 유일하다고 생각합니다. 저는 고도화된 NLU을 활용한 서비스를 개발하여 개개인에 맞춤화된 업무지원 시스템을 만들고 싶습니다. 가장 가깝다고 생각한 방식은 Siri, Alexa와 같은 인공지능 비서이고 개인 한명한명에게 보급되는 '개인용 인공지능 비서의 보편화'를 목표로 NLP업무를 하고자 합니다.  

해당 리뷰포스팅을 하면서 기술적 증진보다도 더 큰 의미를 가지는 내용을 생각하게 되었습니다. 뿌듯하네요ㅎㅎ

출처 : https://jiho-ml.com/weekly-nlp-7/

 

Week 7 - 머신 러닝과 NLP는 왜 함께 갈까

인간은 태어난 순간부터 언어를 접합니다. 아기가 세상에 나온 순간 부모로부터 불리는 이름은 처음에는 그저 여러 소리 중 하나로 들리겠지요. 하지만 점점 커가면서 부모가 아기에게 내는 소

jiho-ml.com