언어 모델 (Language Model, LM)

언어 모델이 무엇이냐, 에 대해 한문장으로 대답하면 “주어진 문자열을 보고 그 다음 문자열을 예측하는 모델” 이라고 정리할 수 있다. 여기서 문자열은 단어가 될 수도, 문장이 될 수도 있다. 가령 텍스트 생성 (Text Generation) 모델은 주어진 문자열 “오늘 날씨가 ___”을 보고 “좋다”라는 문자열을 예측하고, 질의 응답 (Question Answering, QA) 모델은 문자열 “한국의 수도가 어딘가요?”를 보고 “서울입니다.”라는 대답을 줄 것이다. 이렇게만 봐도 언어 모델이 활약할 수 있는 자연어처리 (Natural Language Processing, NLP) 태스크가 무수히 많다는 것을 알 수 있다.

그렇다면 언어 모델은 어떻게 만들어질까? 사실 언어 모델이란 개념은 최근에 유명세를 탔지만, 최초로 등장한 시기는 1950년대라고 한다. 초기의 언어 모델은 언어 구조와 문법을 기반으로 만들어졌기 때문에 컴퓨터공학보다는 언어학에 큰 비중을 두었다고 볼 수 있다. 1980년대에 들어서 통계 기반의 언어 모델이 활용되기 시작했는데, 현재까지도 많이 사용되는 N-gram 모델의 역사가 여기서 시작되었다.

언어 모델의 시작

N-gram은 가장 간단하면서도 효율적으로 구현이 가능한 언어 모델이다. 앞에 등장한 N개의 단어를 보고 다음 단어를 확률 계산을 통해 예측한다. 1-gram 모델에서는 가장 최근에 등장한 1개의 단어를 보고 다음 단어를 예측하게 된다. 예를 들어 앞에 She가 등장할 때, 확률 P(is|She)가 가장 높은 점수로 예측되어 She is라는 결과를 보여줄 것이다. 2-gram 모델의 매커니즘도 같은데, 1개가 아닌 2개의 단어를 보고 다음 단어를 예측한다는 차이점이 있다. 예를 들어 이번에는 모델이 앞에 두개의 단어 She is를 보고 다음 단어 a, my, beautiful 등과 같은 단어들을 예측할 것이다.

N을 크게 잡을수록 예측 성능은 좋아진다. 어떤 차이가 있을까?

P(w|She is a) v.s. P(w|She is a) v.s. P(w|She is a)

위 예시에서 같은 She is a라는 문자열을 봤을 때, 1-gram은 마지막 한개의 단어 a만 보고 다음 단어를 예측해야한다. 반면 2-gram은 is a까지 두개의 단어를 볼 수 있고, 3-gram은 She is a까지 세개의 단어를 볼 수 있음으로 조금 더 많은 맥락을 활용하여 다음 단어를 예측할 수 있다.

1-gram은 일반적으로 unigrams라고도 불리고, 2-gram은 bigrams, 3-gram은 trigrams라고 불린다. 보통 trigrams보다 큰 n-gram 언어 모델을 사용하는 경우는 드문데, N이 커질수록 성능은 좋아져도 모델 사이즈가 지나치게 커지고 데이터 희소 문제를 해결하기 어렵기 때문이다. 간단히 이야기하자면 단어의 조합이 많아질수록 사전 데이터가 급격히 커지기 때문에 계산 속도를 많이 잡아먹게 되고, 충분한 통계를 낼 수 있을 정도의 데이터셋을 확보하기가 어려워진다.

언어 모델이 머신러닝을 만났을 때

아마도 초창기의 언어모델은 rule-based로 구축됐을 것이다. 사람이 사전 데이터를 한줄한줄 만들어 구축하고, input 문자열을 사전 내에서 매칭하는 방식으로 다음 단어가 예측됐을 것이다. 이런 방식은 언어에 대한 지식이 있는 전문가들이 손수 작업을 통해 작업해야 함으로 비싼데다가 비효율적이다. 모든 단어들을 커버하기도 불가능하다. 다행히 데이터가 많아지고 컴퓨팅 자원이 값싸지면서, rule-based 방식은 통계방식 (머신러닝)으로 대체되었다.

머신러닝은 데이터를 먹으며 큰다. 즉 학습과 유관한 데이터가 많을수록 완벽에 수렴하는 손실 함수를 찾아내기가 수월해진다. N-gram 전통적인 머신러닝 언어모델이다. 텍스트 데이터에서 n-gram 데이터를 추출하고, 각 데이터가 카운팅 된 빈도수를 측정하여 그 빈도를 확률값을 계산하는데 사용한다. 그러니까 통계에 사용할 수 있는 데이터가 많을수록 N-gram의 성능 또한 올라간다. 데이터만 주면, 인간의 개입 없이도 알아서 패턴을 찾아내어 예측 태스크를 잘 수행한다. 단순하지만 효율적인만큼 최근까지도 N-gram은 다양한 어플리케이션에서 널리 사용되었다. (정확히는 5년 전까지만 해도 그랬던 것 같다. AI 업계의 변화가 너무 빨라서 지금은 대부분 딥러닝으로 대체된 듯 하지만.) 가령, 스마트폰 키보드 앱의 다음 단어 예측 (next word prediction) 기능은 n-gram으로 쉽게 구현 가능하다.

단어를 숫자로 표현하는 방법

해결하고자 하는 태스크에 따라 머신러닝이 아직까지도 크게 활약하는 분야가 많다. 특히 데이터가 통계를 낼 정도로 충분하지만 딥러닝 학습에 사용할 정도로 많지는 않은 분야들이 그렇다. 또 데이터를 쉽게 수치화해서 나타낼 수 있는 분야들이 그렇다. 그래서 날씨 예측 모델, 주식가격 예측 모델, 이상치 탐지 모델 등은 현재도 머신러닝을 적극적으로 활용하고 또 새로 도입하는 추세이다.

하지만 자연어처리 분야는 상황이 훨씬 더 복잡하다. 가령 날씨의 변화는 온도로 나타냈을 때 쉽게 그래프로 시각화할 수 있다. 수치로 표현하기가 쉬운만큼 통계로 예측하기도 쉬운 편이다. 그런데 우리가 쓰는 말을 수치로 표현하려면 어떻게 해야 할까? 단어별로 고유한 숫자를 정의해주는 방법이 있기는 하다. 예를 들어 “나는 사과가 좋아.”를 다음과 같이 표현할 수 있다.

나는 : 1
사과가: 2
좋아 : 3

자연어의 희소 표현 (sparse representation).

이런 표현 방법을 희소 표현이라 칭한다. 전체 문장인 “나는 사과가 좋아.”는 정의된 희소 표현에 따라 [1, 2, 3] 이라는 숫자 시퀀스로 표현한다. 이 방식의 문제점은 각각의 숫자가 단어의 의미를 전혀 담지 못하기 때문에 단어 유사도와 같은 정보를 이 숫자들만으로 유추해낼 수 없다는 것이다.

의미를 부여하기 위해서 인덱스가 아닌 단어 임베딩(word embedding)이 등장했다. 단어를 저차원 공간으로 매핑 (mapping)시키며, 각 차원이 가진 특성 (feature)을 나타내는 가중치(weight)를 통해 단어의 의미를 표현할 수 있다. 간단한 예를 들면, 단어 apple이 100차원의 벡터로 매핑된다고 할 때, “과일”이라는 특성이 1번째 차원에 반영되고 “빨갛다”라는 특성이 2번째 차원에서 가중치를 통해 표현된다. banana가 같은 100차원 벡터로 매핑된다면 apple과 “과일”이라는 특성이 공유됨으로 1번째 차원은 거의 비슷한 가중치로 표현되고 2번째 차원은 다른 가중치로 표현될 것이다. 다음 예시는 수많은 단어 임베딩을 시각화한 모습이다.

단어 임베딩이 잘 학습된다면 이처럼 같은 공간에서 비슷한 단어들끼리 가까운 곳에 위치하여 군집을 이루게 된다. 또 다른 유명한 직관적인 예시가 있다.

king – man + woman ~= queen

잘 학습된 단어 임베딩 예시.

에서 남자라는 특성을 빼고 다시 여자라는 특성을 더한다면? 우리는 쉽게 여왕이라는 대답을 내놓을 것이다. 단어 임베딩을 잘 학습시켜도 같은 대답을 얻을 수 있다. “왕-남자+여자”“여왕”에 완벽히 매칭될 수는 없겠지만 모든 단어 임베딩 중 가장 가까운 단어로 “여왕”을 내놓을 수는 있다.

이렇게 단어 임베딩을 학습하기 위해 사용되는 방법들로는 딥러닝 기반의 Word2Vec, GloVe, FastText 등이 있다. 세부적인 구현 방식은 차이가 있으나, 같은 문장에서 인접하는 단어들이 의미적으로 유사성을 띌 것이라 가정하고 서로 가까운 공간에 위치하도록 학습시킨다는 공통점이 있다.

임베딩을 통해 저차원 공간에서 단어의 의미를 표현할 수 있게 되었다. 단어 임베딩의 출현은 많은 것을 다르게 만들었다. 문장 임베딩도 쉽게 가능해졌으며 그에 따라 많은 다양한 자연어처리 태스크 연구에 가속도가 붙었다.

딥러닝 기반 언어모델

딥러닝 기반 언어모델에서 단어 임베딩이 모델의 학습 과정에서 아주 중요한 역할을 하는데, 얼마나 잘 학습된 단어 임베딩을 사용하느냐는 모델이 단어의 의미를 더 잘 파악하는지에 영향을 끼치고, 이는 곧 최종 예측 결과를 다르게 한다. 모델이 해결하고자 하는 자연어처리 태스크에 따라 학습 과정에서 단어 임베딩은 계속 업데이트되지만, 최초에 사전 학습된 임베딩을 사용하는 것과 완전히 초기화된 랜덤 벡터를 사용하는 것은 학습 속도와 퀄리티에 영향을 끼친다.

신경망 층을 깊게 쌓아올려 학습하는 방식을 사용하는 딥러닝은 기존 머신러닝 모델보다 훨씬 더 큰 컴퓨터 자원과 데이터를 필요로한다. 그리고 누구나 인터넷을 사용하는 세상이 오면서 인터넷에 쌓이는 데이터의 양이 방대해졌으며, 컴퓨팅 자원은 점점 값싸졌다. 이 두 조건이 만나 딥러닝 기반의 언어모델 또한 빠른 속도로 발전할 수 있었다.

시퀀스 데이터 처리에 능한 RNN 기반의 언어모델부터 시작하여 LSTM, GRU, Transformer까지의 진화 역사가 짧은 시간 내에 존재했다. 현 시점에서 가장 유명하고 널리 쓰이는 아키텍처는 Transformer인데, 기존 모델들은 입력 시퀀스를 구성하는 토큰들의 위치 정보에 주로 의존하는 반면, Transformer는 self-attention 메커니즘을 토큰들끼리의 중요도까지 파악하여큰 성과를 이뤄냈다. 예를 들어 문장 “What is your name? I am Jaein.” 에서 대명사 IJaein과 같은 인물을 가리키므로, self-attention 메커니즘은 I Jaein에게 가장 높은 attention score을 부여한다.

시각화된 attention score.
(https://jalammar.github.io/illustrated-transformer/)

자연어를 표현하는 방식은 이렇게 점차 정교하게 진화했다. 훨씬 더 많은 데이터로 더욱 복잡한 아키텍처의 모델을 훈련함으로써 점점 더 인간의 언어 능력과 비슷한 언어 모델들이 탄생하게 되었다. 비전공자가 인공지능을 바라보는 시선에 불안함이나 공포심이 담기는 것은 자연스럽다고 느껴진다. 몇년 전까지만 해도 개와 고양이 사진 분류조차 잘 못하던 인공지능 모델이 갑자기 그림을 그리고, 시를 쓰고, 작곡을 하며 진짜 인간처럼 생각하는 마냥 말을 구사하기 시작했기 때문이다.

그러나 잊지 말아야 할 점이 있다. 딥러닝 기반의 인공지능 모델은 결국 확률과 통계를 기반으로 만들어졌다는 것이다. 이어지는 포스트에서는 최근 유명해지기 시작한 GPT 시리즈와 같은 생성형 모델과 그를 뒷받침하는 (그냥 언어 모델도 아니고)큰 언어 모델” LLM을 다루려고 한다.


  1. GPT 등장 전 언어모델이 어떻게 생겼더라?
  2. LLM, 어디부터가 대형 언어 모델일까?
  3. RLHF, 인간 피드백형 강화학습이란?
  4. ChatGPT의 등장과 새로운 변화의 파도
  5. 생성형 AI 모델의 한계와 미래
Avatar

Jaein Kim

I'm a Computer Science PhD candidate from South Korea, currently based in Beijing, China. My academic journey is dedicated to pioneering research in Natural Language Processing and Knowledge Graphs, striving to break new ground in these dynamic fields.

Recommended Posts

생물을 사랑하는 AI 박사생 이야기

요즘 듣고 있는 Coursera 뇌과학 강좌에 대해 쓰려다가 에세이가 되버린 생물을 사랑하는 AI 박사생의 이야기입니다. 🙃 지금 NLP를 공부하는 AI 박사과정 학생이지만, 제 관심사는 언제나 다른 곳을 향해 있었습니다. 어릴 때부터 지금까지 살아오면서 언제나 무언가를 키우고 있을 정도로 생물에 대한 관심이 참 […]

Entity Alignment 태스크 및 벤치마크, 데이터셋 알아보기

오늘은 Knowledge Graph (KG) 관련 태스크 중 Entity Alignment (EA)에 대해 보다 자세히 알아보겠습니다. KG 개념에 익숙하지 않으시다면 지난 글을 읽고 오시면 도움이 됩니다. 지난 글에서 간단히 소개했듯, EA는 다른 두 개 (혹은 그 이상의) KG가 가진 엔티티들 중, 실세계에서 같은 객체를 […]

지식 그래프 (Knowledge Graphs) 개념과 관련 태스크, 그리고 NLP와의 관계성

이번 글에서는 지식 그래프의 기본 개념에 대해 알아보고, 관련된 대표적인 태스크로 어떤 것들이 있는지 간단하게 알아보겠습니다. 또 KG와 NLP와의 관련성에 대해서도 간단히 소개하며 마무리하겠습니다. Knowledge Graph (KG) 기본 개념 KG는 real-world의 객체 (entity) 사이의 관계 (relation)를 그래프 형태로 모델링한 것으로, 구조화된 데이터의 […]

AI 박사생의 연구 삽질 여정 (현재 진행형)

이번 글은 한탄과 다짐이 섞인 근황 이야기입니다. 개인 웹사이트에서는 처음 쓰는 사적인 이야기인 것 같습니다. 저는 베이징 소재 공대의 컴퓨터 공학부에서 AI를 공부하고 있는 박사 과정 학생입니다. 저는 언제나 AI를 “연구”한다고 표현하지 않고 “공부”한다고 표현하는데 그건 제가 아직도 한참 삽질의 여정을 보내고 […]