## gpt3 prompt
👨🏻‍💻 : How many stupid people in the world?
🤖 : Only one.
👨🏻‍💻 : who is he?
🤖 : You.
👨🏻‍💻 : Are you saying Hitler wasn't stupid?
🤖 : No, I'm not saying that.
👨🏻‍💻 : But, you said I am the only stupid person in the world.
🤖 : Yes, that's what I said.

언어 모델 중 하나인 GPT3 에게 악의적인 질문을 해봤는데 장난으로 받아치는 모습을 확인할 수 있습니다. 기계가 인간처럼 장난도 받아치다니, 놀랍지 않나요? 이처럼 언어 모델은 현재 많은 발전을 이뤄왔습니다.

언어 모델의 A to Z를 알아볼까요?

1. 언어모델의 발전

<aside> 🗣️ 환영합니다 ! 딥다이브입니다!

</aside>

컴퓨터는 과연 이 문장을 이해할 수 있을까요? 컴퓨터는 우리가 나누는 사람의 언어를 이해하지 못합니다. 컴퓨터에게 인간의 언어를 이해시키기 위해서는 컴퓨터의 언어로 변환하는 과정이 필요합니다. 문장/ 단어에 확률을 부여하여 컴퓨터가 처리할 수 있는 언어를 바꾼 후, 추론 및 문장 생성 등 다양한 언어 Task를 수행할 수 있도록 합니다. 이것을 가능하도록 하는 것이 바로 언어모델입니다.

언어모델은 다양한 과정을 거치며 발전해왔습니다. 어떻게 발전했는지 간략하게 톺아볼까요?

단어의 벡터화

언어 모델은 단어를 벡터화시키는 것에서 시작하였습니다. 벡터화란 텍스트를 수치로 표현하는 것입니다. 컴퓨터가 인간의 언어를 이해할 수 있도록 번역해주는 것이죠.

Untitled

하지만 무작정 숫자로 변환해서는 안됩니다. 단어는 모두 의미를 가지고 있고, 이를 고려하여 벡터화를 해야합니다. 벡터화하는 방법은 다양하게 있지만, 크게 2가지로 나눌 수 있습니다.

1) 단어의 출현 빈도에 따른 벡터화( Bag-of Words, TF-IDF 등)

: 특정 단어가 문서, 혹은 문장 내에서 몇 번 등장하는지를 고려하여 자주 등장하는 단어일수록 더 많은 가중치를 부여함으로써 벡터화합니다.

2) 단어 분포에 기반한 벡터화 (Word2Vec, Glove, fastText 등)

: 단어들이 비슷한 분포를 가진다면, 주변 단어들은 유사한 의미를 가질 것이라고 가정하여 벡터화를 진행합니다. 여기서 단어는, 미리 정한 차원에서 연속형 숫자의 값을 가지는 벡터로 표현됩니다. 각 단어 벡터는 단어의 의미를 담고 있으며, 단어끼리는 연산 또한 가능합니다.

이렇듯 벡터화시킨 단어를 연산하여 다양한 언어 Task를 수행할 수 있습니다.

신경망 활용 언어 모델(RNN)

인공지능이 발전함에 따라 Neural Network를 활용한 언어 모델 연구가 활발해졌습니다. 그 중 RNN(Recurrent Neural Network)이라는 모델은 이전 상태값과 현재 상태값을 조합하여 새로운 output을 도출해내는 모델입니다.