LLM 의 발전과정 (NLP 자연어처리 발전사)
이미지 처리와 CNN
이미지 처리는 오랜 기간동안 중요한 정복대상이었고, 그 싸움에서 가장 중요한 도구 CNN (합성곱 신경망, Convolution Neural Network) 입니다.
우리가 적외선 카메라로 보면 세상이 다르게 보이듯, CNN은 원본 이미지 필터를 씌워 이미지에 숨겨진(?) 특징을 뽑아내는 과정입니다.
우리의 시각 처리과정과 신경망을 닮은 이 방식은 자연어 처리 방식에도 영향을 미칩니다.
자연어 처리 (NLP, Natural Language Processing)
자연어 처리도 CNN 의 방식을 도입했고 성과가 있었습니다. 하지만 언어는 앞뒤 단어와의 관계, 단어의 뉘앙스 차이 등 이미지와는 다른 특징들이 있습니다. 그래서 이를 효과적으로 잡아낼 방법이 필요하게 되었습니다.
NMT 와 RNN
번역 과정을 예로 들어보면, 과거의 번역은 단어별 번역 후 문법적으로 재배열(PBMT, Phrase-Based Machine Translation)하는 방법을 사용하였습니다. 하지만 이 방식은 번역의 결과가 상대적으로 만족스럽지 못했습니다. (예전 세대의 번역기들 성능을 떠올려보세요) 다른 방식을 적용할 필요가 있었죠.
그래서 개발된 것이 신경망을 사용하는 방법으로, NMT(Neural Machine Translation)라 불립니다. 그리고 NMT는 RNN (순환 신경망, Recurrent Neural Network) 구조를 사용했습니다.
NMT 모델의 기본 동작 방식:
- 인코딩:
- 원본 언어 문장을 토큰화합니다.
- 인코더(주로 RNN/LSTM)가 이 토큰들을 순차적으로 처리합니다.
- 문장의 의미를 고정 길이 벡터(컨텍스트 벡터)로 압축합니다.
- 디코딩:
- 디코더(역시 RNN/LSTM)가 컨텍스트 벡터를 입력으로 받습니다.
- 목표 언어로 단어를 하나씩 생성합니다.
- 이전에 생성된 단어를 다음 단어 예측의 입력으로 사용합니다.
- 학습:
- 병렬 코퍼스를 사용하여 end-to-end로 학습합니다.
- 목표는 생성된 번역과 실제 번역 사이의 차이를 최소화하는 것입니다.
요약하자면 문장의 끝에 이르기까지 단어 하나 하나씩 분석해서 문장의 특징을 나타내는 (고정된 갯수의) 숫자들을 찾아내는 방식으로 동작합니다. 이 숫자들이 문장 전체의 의미를 압축하여 담고있는 컨텍스트 벡터입니다.
이 방식이 분명 이전보다는 언어의 특징을 잘 반영하고 있지만, 아래와 같이 문제점 또한 나타났습니다.
- 긴 문장의 경우 중요 정보가 손실되거나 번역 품질이 저하
- 병렬 처리의 한계: 순차적 처리를 해야하므로 계산 효율성 저하
- 앞서 계산한 값을 다음 단어 계산에 다시 사용하므로 마지막에 등장하는 단어의 중요도 하락
이런 문제점을 해결하는 과정에서 등장한 획기적인 기술이 그 유명한 Attention 메커니즘과 Transformer 아키텍처입니다.
Attention & Transformer
Attention은 “집중”이라는 뜻으로, 인간이 문장을 이해할 때처럼 중요한 부분에 집중하는 방식을 모방한 기술입니다. Attention 메커니즘은 RNN과 함께 사용되어 성능 향상을 꾀할 수 있었지만 여전히 순차적 처리로 인한 느린 속도 등 한계점이 있었습니다.
Attention
- 인간이 문장을 이해할 때처럼 중요한 부분에 집중하는 방식을 모방한 기술
- 입력된 문장의 모든 부분을 평가
- 현재 작업에 가장 관련 있는 부분에 더 많은 “주의(Attention)”를 기울입니다.
- 예를 들어, 번역 시 원문의 특정 단어와 가장 관련 있는 부분에 집중합니다.
- 우리가 공부할 때 중요 부분에 밑줄 좍좍 긋는것처럼
- Attention 연산을 위한 핵심 개념 : 쿼리(Q) / 키(K) / 밸류(V)
- 현재 처리중인 단어의 벡터표현 / 모든 입력 단어의 벡터표현 / 모든 입력 단어의 변환된 벡터 표현
- 쿼리와 키들 간의 유사도를 계산합니다.
- 이 유사도 점수를 바탕으로 각 밸류의 중요도(가중치)를 결정합니다.
- 가중치가 적용된 밸류들의 합을 최종 출력으로 사용합니다.
이때 등장한 논문이 “Attention Is All You Need”이며, 여기서 Transformer 아키텍처를 제안하게 됩니다.
Attention Is All You Need
- 2017년 신경정보처리시스템 학회(NIPS, 현재는 NeurIPS)
- 구글 브레인 팀과 구글 리서치 팀에서 작성
- Transformer 아키텍처를 소개하여 자연어 처리 분야에 혁명적인 변화
- BERT, GPT 등 현대적인 언어 모델들의 기반이 됨
즉, 현대적인 언어모델을 이해하기 위해서는 Attention 메커니즘과 Transformer 아키텍처에 대한 이해가 필요합니다.
Transformer
- 순차적 처리(RNN) 대신 병렬 처리를 사용하므로 효율적이고 연산이 빠릅니다.
- 여러 개의 attention 레이어를 쌓아 복잡한 관계를 학습합니다.
- Self-Attention: 입력 문장 내에서 단어들 간의 관계를 파악
- Multi-Head Attention: 여러 관점에서 정보를 처리
- Position Encoding: 순서 정보를 유지
- 인코더와 디코더 구조를 사용
- Transformer에서 인코더와 디코더는 각각 입력 처리와 출력 생성이라는 서로 다른 역할을 수행
- 함께 작동하여 다양한 자연어 처리 작업을 수행
- 인코더: 원본 언어 문장을 처리, 인코더는 입력 전체를 처리
- 디코더: 번역된 목표 언어 문장을 생성(또는 요약), 디코더는 출력을 순차적으로 생성
Attention 과 Transformer 가 발표 이후 대표적인 두 언어모델 진영, BERT / GPT 가 등장하게 됩니다. 그리고 이 두 진영의 경쟁적인 연구아래 급속하게 현대적인(?) 언어모델들이 등장하게 됩니다.
BERT (Bidirectional Encoder Representations from Transformers)
- 구글 2018년, 압도적인 성능으로 NLP의 대표주자가 됨
- 기존 :
- 앞의 단어들을 참고하여 다음에 나올 단어를 예측.
- 문장의 단어들을 순차적으로 처리할 때, 현재 단어 이전에 등장한 단어들만 동시에 봄
- BERT
- 문장의 중간 단어를 마스킹하고, 전체 문장에서 해당 단어를 예측하는 방식으로 학습 (MLM, Masked Language Model)
- 비지도학습, 라벨링 없이 웹 상의 자료로 저렴하게 학습
- BERT 동작 방식
- 토큰 / 포지션 / 세그먼트 -> BERT 로직 -> 출력
GPT (Generative Pre-trained Transformer)
- BERT 에 조금 앞서 등장
- Transformer 구조에서 encoder 부분은 생략
- 디코더만으로 문장을 잘 생성해내는 모델을 제작,
- 이전 토큰들을 기반으로 다음 토큰을 예측하는 방식으로 학습
- 인코더가 필요하지 않은 이유
- 입력을 “인코딩”하는 대신, 직접 처리하고 생성
- 모델이 자체적으로 입력의 표현을 학습
- 각 레이어가 이전 레이어의 출력을 처리하며, 이는 일종의 점진적 “인코딩” 역할 수행
이후 발표되는 언어모델들은 더 큰 모델이 더 나은 성능을 보이는 경향이 있어 모델 크기가 증가되기도 하고, 동시에 효율성에 대한 연구가 함께 진행되기도 했습니다. 또한 다국어 처리, 도메인이나 작업에 특화된 모델, AI 의 윤리에 대한 논의, 멀티모달 (텍스트/이미지/영상) 통합, 자기지도 학습 및 추론능력 강화 등 다양한 방면으로 연구가 진행중입니다.
맺으며
아래는 핵심이 되는 Attention/Transformer 를 시각화해서 설명해주는 영상입니다. 일독하시길 강력 추천합니다.