어느 순간부터 딥러닝이 점점 핫해지기 시작했는데요.
OpenAI의 ChatGPT가 공개되면서 LLM에 대한 관심이 폭주하기 시작했어요.
이번 포스팅 시리즈는 초기 LM부터 LLM까지 자연어 처리 모델이 어떻게 진화해 왔는지 그 과정을 살펴보려고해요.
오늘은
1. 자연어 처리가 무엇인지
2. 임베딩이 왜 필요한지
3. 어떤 방법론들이 제시되어있고, 특징은 무엇인지
크게 세 포인트로 알아볼게요.
그리고 이후에는 각 임베딩 방법론들을 자세히 알아보며 LLM까지 한번 이해해보도록 하겠습니다.
그럼 시작해볼게요!

자연어 처리(NLP)란 무엇인가?
사람들은 일상에서 대화할 때 언어를 이용하죠. 이것을 바로 '자연어'라고 부르는데요.
반면 컴퓨터는 숫자만 이해할 수 있기 때문에 인간의 언어를 직접 처리하기는 어렵습니다.
이때, 컴퓨터가 자연어를 이해하고 해석하며, 문장을 생성할 수 있도록 돕는 기술을 자연어 처리(Natural Language Processing)라고 합니다.
즉, 자연어 처리는 컴퓨터가 인간의 언어를 효과적으로 다룰 수 있도록 만드는 기술 분야입니다.
임베딩이란 무엇인가?
임베딩은 위에서 말씀드린 '자연어'를 컴퓨터가 잘 이해할 수 있는 의미있는 '숫자'로 바꿔주는 방법입니다.
예를 들어 "안녕하세요" 를 [66.3, 0.33, 5.33] 등의 숫자로 바꿔줍니다.
초기에는 정말 단순한 원-핫 벡터(one-hot vector)라는 방법으로 표현했지만, 단어 간의 의미를 반영하지 못하고, 벡터의 차원만 커지는 문제가 있었습니다. 이를 해결하기 위해 벡터 공간에 임베딩하여 반영하려는 연구가 등장했습니다.
| 💡임베딩은 자연어 처리만 있나요? 임베딩은 어떤 데이터를 더 의미있는 표현 공간으로 변환하는 과정을 의미합니다. 따라서 이미지, 영상, 보이스 등의 다른 데이터들을 임베딩하여 벡터 공간에 의미있는 벡터로 표현을 할 수 있습니다. 위에서 말씀 드렸듯이 이렇게 표현하는 이유는 컴퓨터가 잘 알아듣게 하기 위함입니다. 여기서는 자연어 처리에서의 임베딩만 다룰 예정입니다. |
임베딩의 종류

임베딩은 정말 다양한 방법론들이 제안되었는데요. 이 제안된 방법론들은 크게 3가지의 카테고리로 나눌 수 있습니다.
첫 번째는 단순 빈도 기반으로하는 통계적 임베딩, 두 번째는 단어 벡터를 학습해서 사용하는 정적 임베딩, 마지막으로는 문맥을 반영하여 의미 변화 처리가 가능한 동적 임베딩입니다. 간단하게 하나씩 살펴볼게요.
1. 통계적 임베딩
초기 자연어 임베딩 방법론들은 정말 간단하게 단어의 빈도수를 기반으로 임베딩했습니다.
크게는 TF-IDF, LSA, LDA 등이 있는데요. 간단하게 그 모델들의 특징을 살펴보면 다음과 같습니다.
하나씩 차근차근 포스팅할 예정이니 여기서 다 이해하실 필요는 없습니다.
| 방법론 | 방식 | 문제 |
| TF-IDF | 단어 빈도 x 역문서 빈도 사용 | 단어 순서를 고려하지 않고, 희소 벡터 발생 |
| LSA | 단어-문서 행렬에 특이값 분해를 적용하여 차원 축소 | 단어 순서나 문맥을 반영하지 못함 |
| LDA | 단어를 확률적 토픽 분포로 모델링 | 문장 내 단어 순서를 반영하지 않음 |
통계적 임베딩 방법은 단순 빈도 기반의 방식이라 단어의 의미나 문맥을 반영하기 어렵다는 한계점이 있습니다.
2. 정적 임베딩
통계적 임베딩 보다 한 단계 더 발전한 임베딩 방법인데요. 단어 간의 유사도를 반영하면서 '고정된 벡터'를 제공하는 방식입니다.
즉, 특정 단어에 대한 임베딩이 정해져있는 것이죠. 때문에, 문맥에 따라 달라지는 단어의 의미를 잘 반영하지는 못합니다.
| 방법론 | 방식 | 문제 |
| Word2Vec | - CBOW : 주변 단어 -> 중심 단어 예측 - Skip-gram : 중심 단어 -> 주변 단어 예측 |
동일한 단어는 항상 같은 벡터를 가짐 |
| GloVe | 통계적인 방법과 Word2Vec의 결합 | 여전히 문맥을 반영하지 못함 |
| FastText | 단어를 Subword단위로 분해하여 학습 | 여전히 문맥을 고려하지 못함 |
단어 의미를 잘 반영하지만, 문맥을 고려하지 못하는 한계점은 여전히 남아있습니다.
3. 동적 임베딩
정적 임베딩의 한계를 해결하기 위해 문맥을 반영하는 임베딩이 등장했습니다.
요즘 핫한 LLM도 결국 동적 임베딩으로 임베딩을 한 뒤, 자연어를 처리합니다.
| 방법론 | 방식 | 문제 |
| ELMo | BiLSTM 기반의 모델 | LSTM기반이라 긴 문장에서 성능 저하 |
| BERT | Transformer기반 양방향 학습 문맥에 따라 단어 벡터가 다르게 변함 |
계산량이 많고 느림 |
| GPT | Transformer 기반 단방향 학습 주어진 문맥에서 다음 단어를 예측하는 방식 |
문맥을 한 방향에서만 보기 때문에 한계 존재 |
| T5/BART | 문장 전체를 재구성하는 방식 번역, 요약, 문서 생성 등 다양한 태스크 수행 가능 |
계산량이 많고 느림 |
현재는 자연어 처리의 임베딩은 동적 임베딩까지 발전하면서 단어의 의미 뿐만 아니라 문맥까지도 잘 고려해냅니다.
하지만 그 만큼 계산량이 굉장히 많은데요. 따라서 계산량, 비용을 줄이는 연구도 활발히 진행되고 있습니다.
최근에는 ChatGPT 대비 비용이 굉장히 저렴한 딥시크가 등장해서 핫 이슈였죠.
| 💡임베딩시 고려해야 할 것 임베딩이 언어를 숫자로 표현해주는 것이라고 단순하게 말할 수 있는데요. "그럼 그냥 숫자로 변환해주면 되는거 아닌가? 왜이렇게 방법이 많지?" 생각이 드실 수 있어요. 예를들어 좋아해는 10, 싫어해는 11, 사랑해는 12라고 해봅시다. 현실에서 좋아해는 싫어해보다 사랑해와 거리가 가까워야하는데요. 이렇게 되면 싫어해와 더 가까워지죠. 물론 싫어해를 12, 사랑해를 11로 정의하면 가까워지긴 하겠지만, 이걸 모든 언어에 수동으로 적용시키기에는 한계가 있습니다. 뿐만 아니라 '영희가 사과를 먹는다.'와 '영희가 사과를 했다'의 사과는 다른 의미를 지니는데요. 하나의 수치로 정해버리면 두 사과가 같은 의미로 인식됩니다. 따라서 문맥에 따라 다르게 인식할 수 있게 임베딩 해야겠죠. 전자의 좋아해, 싫어해 예시는 어떤 단어끼리 더 연관있고, 가까운지 '단어의 의미'를 고려해야하고, 후지의 사과 예시는 '문맥'을 잘 반영해야합니다. 이것이 임베딩시 고려해야할 것들입니다. |
| 카테고리 | 기법 | 문맥 반영 | 단점 |
| 통계적 임베딩 | TF-IDF, LSA, LDA | X | 단어 순서, 의미 반영 불가 |
| 정적 임베딩 | Word2Vec, GloVe, FastText | X | 문맥 반영 불가, 다의어 처리 불가 |
| 동적 임베딩 | ELMo, BERT, GPT, T5 | O | 계산랑 크고, 비용 높음 |
이번 포스팅에서는 자연어 처리의 기본 개념과 임베딩의 필요성에 대해서 알아봤는데요.
여기서 언급되었던 임베딩 모델들은 추후 포스팅에서 하나씩 자세하게 다룰 예정입니다.
앞으로 포스팅도 많이 기대해주세요!
질문과 의견은 언제든 환영입니다.

'인공지능공부 > 자연어처리' 카테고리의 다른 글
| 통계적 임베딩으로 문서의 핵심 단어를 찾는 TF-IDF (0) | 2025.03.10 |
|---|---|
| 자연어처리 기초 토크나이저의 모든것! 종류부터 최신 트렌드까지! (0) | 2025.03.08 |
| Self-Attentive Sentence Embedding(SASE) 구현해보기 (0) | 2023.03.22 |
| Self-Attentive Sentence Embedding(SASE)의 모든 것 (1) | 2023.03.21 |
| fasttext의 모든 것 (0) | 2023.03.20 |