비전공자도 이해할 수 있는 AI지식 -기계는 언어를 이해할 수 없는가-

1. 언어를 이해한다는 것은 무슨 말인가

 

그렇다면 이루다도 GPT같은 언어 생성 모델을 기반으로 하는 챗봇이었을까요?

 

컨퍼런스에서 이루다의 기술을 발표한 자료에 따르면, 이루다는 언어 생성 모델을 활용한 것이 아닙니다.

 

이루다에 적용한 것은 대화를 이해하고 여러 개의 응답 중 가장 적절한 응답을 선택하는 이해 모델에 좀 더 가깝습니다.

 

이루다의 원리를 이해하기 위해서는 먼저 언어를 이해한다는 것이 과연 무엇을 의미하는지부터 알아야합니다.

 

"백두산의 높이는 얼마야?"

 

 

검색엔진에 질문을 입력하면 바로 정답을 찾아주는 경우가 있습니다.

 

"백두산의 높이는 얼마야?"라고 질문하면 관련 문서에서 2744m라고 정답을 바로 찾아냅니다.

 

정답을 한번에 찾아낸다는 점에서 유사한 문서를 찾아내는 검색엔진과는 조금 다른 기술입니다.

 

이런 기술을 질의응답(question answering)이라고 하는데, 원래 질의응답은 기계번역과 함께 자연어 처리 연구의 대표적인 난제 중 하나였습니다.

 

그러나 최근에는 기술이 발전하고 특히 딥러닝을 도입하면서 연구가 급물살을 타게 되죠.

 

기계번역이 그랬던 것처럼 질의응답도 수많은 난제를 해결하고 있습니다.

 

그래서 이처럼 검색엔진에서 바로 질의응답 결과를 보여줄 수 있는 수준이 되었죠.

 

그렇다면 컴퓨터는 어떻게 질문을 이해하고 곧바로 정답을 찾아줄까요?

 

과연 인간이 이해하는 것처럼 질문의 의미를 이해하는 것일까요?

 

 

2. BERT, 언어를 이해하는 괴물 모델

 

언어를 이해하는 가장 유명한 모델은 구글에서 개발한 BERT입니다.

 

GPT와 마찬가지로 트랜스포머 모델을 응용한 방식이죠.

 

트랜스포머의 양방향 인코더 표현, Bidirectional Encoder Representations from Transformers라는 이름의 약자입니다.

 

 

사실 억지로 끼워맞춰서 만든 감이 있습니다. 바로 직전에 나온 자연어 처리 모델이 ELMo, Embeddings from Language Model이였습니다.

 

둘 다 Sesame Street의 인기 캐릭터입니다. 다분히 과학자들의 유머가 녹아있는 이름인 셈이죠.

 

 

 

GPT가 채택한 것은 트랜스포머의 디코더이고, BERT가 채택한 것은 트랜스포머의 인코더입니다.

 

기계번역에서 인코더는 언어의 이해를 담당하고, 디코더는 언어의 생성을 담당합니다.

 

 

 

BERT와 GPT는 각각 이해와 생성을 담당하는 모델을 채택했습니다.

 

그렇다면 BERT는 어떻게 언어 이해 모델을 구축할까요?

 

BERT는 문장 내의 단어 중 15%를 가리고 그 단어를 맞추도록 학습합니다.

 

앞서 Word2Vec이 window 가운데 빈칸을 순차적으로 뚫어가면서 맞추었다면,

 

BERT는 전체 문장에서 특정 단어를 무작위로 가려놓고 맞춰나갑니다.

 

"아이들은 일요일에 ____ 레고를 갖고 놀기 좋아한다. 그러나 철수는 토요일에 집에서 ____ 더 좋아한다. 왜냐하면 영희가 토요일에 항상 ___ 때문이다."

 

이렇게 전체 문장에서 무작위로 단어를 가리고 여기에 해당하는 단어가 무엇인지 맞추면서 학습합니다.

 

이때 재밌게도 가린 단어 중 일부에 틀린 단어를 넣기도 하고 일부는 단어를 그대로 두고는 가렸다고 거짓 정보를 입력하기도 합니다.

 

이런 식으로 일부러 노이즈를 삽입하여 모델이 지나치게 과적합하는 걸 방지하는 거죠.

 

이는 궁극적으로 모델의 성능을 더욱 높입니다.

 

2013년에 나온 Word2Vec은 언어 이해 모델입니다. 그리고 2018년에 나온 BERT 또한 언어 이해 모델이죠.

 

특정 단어를 가려놓고 들어갈 단어를 맞추도록 하는 것은 언어를 이해하려는 모델이 쓰는 방식입니다.

 

BERT는 Word2Vec과 마찬가지로 문장의 의미를 벡터로 잘 표현하기 위해 엄청나게 많은 문장을 학습하죠.

 

 

3. 전이학습, 이미 알고 있는 지식을 활용하여 문제를 해결하다

 

그렇다면 질의응답 문제를 해결하기 위해서 매번 엄청나게 많은 문장을 학습해야 할까요?

 

친구에게 "백두산의 높이는 얼마야?"라고 물었다고 가정해봅시다.

 

평소 역사와 지리책을 많이 읽는 친구라면 정답을 알고 있을 가능성이 높습니다.

 

또는 정답을 모르더라도 관련한 배경지식을 갖고 있을 가능성이 높습니다.

 

1. 한라산은 1950m다.2. 백두산은 한반도에서 가장 높다.

 

예를 들어 한라산은 1950m라는 점 그리고 백두산은 한반도에서 가장 높기 때문에 한라산보다 더 높은 산이라는 점.

 

이 2가지 사전지식만 있어도 일단 대충 2000m는 넘을 거라고 추측할 수 있습니다.

 

정답을 맞힐 가능성이, 하다 못해 정답에 근접할 가능성이 매우 높아지겠네요.

 

똑똑한 사람이라면 이런 사전 지식이 머릿속에 있을 것이고 정답을 맞힐 확률 또한 높습니다.

 

BERT는 이처럼 사전 지식을 활용하여 모델의 정확도를 높이는 대표적인 모델입니다.

 

이를 미리 학습한 사전 지식을 그대로 가져와서 전이 학습(transfer learning)한다고 말합니다.

 

전이 학습은 말 그대로 사전 지식을 그대로 이전해서 활용한다는 이야기입니다.

 

이제 질의응답 문제를 해결할 때는 사전 지식을 그대로 활용하면서 문제해결을 위한 약간의 학습만 더하면 됩니다.

 

엄청난 데이터를 매번 학습할 필요가 없죠.

 

전이 학습을 하면 추가 학습은 조금만 해도 충분히 좋은 성능을 냅니다.

 

중학교때 공부를 잘하던 친구가 고등학교 때에도 공부를 잘하는 것, 만능 스포츠맨 친구가 새로운 운동을 금방 습득하는 것 모두 비슷한 원리죠.

 

 

4. 정말로 질문을 이해하고 정답을 말하는 것일까

 

그렇다면 질의응답에서 정답은 어떻게 찾아낼까요?

 

"백두산의 높이는 얼마야?"라는 질문을 받았을 때, 어떻게 정답을 정확하게 추출해낼 수 있을까요?

 

정말로 질문의 의도를 인간처럼 이해하고 정답을 찾아내는 걸까요?

 

 

---------------------------------------------------------------------------------------------------------------

 

백두산의 높이는 얼마야?

 

2750m 99%

2750 0.01%

2750m) 0.009%

275 0.008%

2750m)와 맞먹는 0.006%

 

"대회 코스가 백두산 높이(2750m)와 맞먹는...."

 

--------------------------------------------------------------------------------------------------------

 

위 지문은 정답일 확률을 수학적으로 계산해서 점수가 높은 순으로 나열한 결과입니다.

 

아울러 정답일 확률은 추출한 문장에서 정답이 있는 위치에 대한 확률을 말합니다.

 

지문을 보면 2750m라는 값을 99%확률로 사실상 정답으로 확신하고 있습니다.

 

정확히 말하면 추출한 문장의 15번째 문자부터 20번째 문자 앞까지의 위치를 정답으로 확신한다는 이야기 입니다.

 

입력: [0.40038,0.94774,0.37657,...., 0.96302, 0.34981]출력: [15,20]

 

BERT는 마치 사람이 질문을 이해한 것처럼 행동합니다.

 

하지만 실제로는 질문을 숫자로 변환한 값을 계산하고, 본문에서 정답의 위치를 확률적으로 계산할 뿐입니다.

 

어떻게 보면 조금 허탈합니다.

 

컴퓨터가 마치 언어를 이해하는 것처럼 보였는데, 그저 숫자와 위치를 계산한 것뿐이니 말이죠.

 

 

5. 이루다의 비밀

 

이제 처음의 질문으로 다시 돌아가보죠.

 

세상을 놀라게 한 챗봇, 이루다가 대화하는 방식을 공개할 차례입니다.

 

이루다가 대화하는 방식도 질의응답과 유사합니다.

 

앞서 이루다는 언어 생성 모델이 아니라고 했습니다.

 

이루다는 카톡 대화 데이터에서 추출한 1억 개의 답변 데이터베이스를 미리 구축한 후

 

직전까지 진행한 대화를 바탕으로 가장 적절한 답변을 출력으로 골라내는, 사실상 언어 이해 모델입니다.

 

여기서 대화를 벡터로, 즉 숫자로 바꾸는 역할을 BERT가 처리합니다

 

https://jiho-ml.com/weekly-nlp-31/

 

그리고 정답을 고를 때 앞서 살펴본 "코사인 거리"를 활용합니다.

 

BERT로 대화를 적절히 이해하여 벡터로 표현한 다음에는 해당 벡터와 코사인 거리가 가장 가까운 문장을 정답으로 선택합니다.

 

그렇게 1억 여개의 답변 중에서 가장 유사한 답 하나를 골라내는 거죠.

 

원래 이런 방식은 대화의 전개가 매우 제한적인 모습을 보이지만,

 

그럼에도 불구하고 이루다가 풍성한 대화를 할 수 있었던 이유는 정답 후보를 무려 1억여개나 보유했기 때문이기도 합니다.

 

그래서 이루다는 마치 사람처럼 자연스럽게 대화할 수 있었죠.

 

물론 1억여개의 대화를 제대로 필터링하지 못해 개인정보 문제가 불거져 아쉬운 퇴장을 했지만요.

 

불과 2주 남짓밖에 우리와 함께하지 못한 이루다는 이렇게 1억개의 답변을 미리 챙겨두고 수학적 확률에 따라 적절한 답변을 하는 챗봇이었습니다.

 

TAGS.

Comments