Language Modeling
언어 모델링은 단어 또는 토큰 시퀀스에 확률을 할당하며, 일반적으로 다음 토큰을 하나씩 예측합니다. n-그램, 신경망 모델, 평가를 다룹니다.
언어 모델링은 단어 또는 토큰 시퀀스에 확률을 할당하는 작업입니다. 확률의 연쇄 법칙에 따라 P(w1, w2, ..., wn) = P(w1) x P(w2 | w1) x ... x P(wn | w1, ..., wn-1)이므로, 이전 토큰을 바탕으로 다음 토큰을 예측하는 모델은 모든 텍스트의 확률을 정의하며, 그 예측값을 샘플링하면 새 텍스트를 생성할 수 있습니다. 다음 토큰 예측 목표는 모든 GPT 모델과 대부분의 대규모 언어 모델(LLM)을 학습시키며, LLM이 등장하기 수십 년 전부터 음성 인식 및 기계 번역 시스템에서 후보 출력을 순위화하는 데 소형 언어 모델이 사용되었습니다. 오늘날에도 휴대전화 키보드에서 다음 단어를 제안하는 데 사용됩니다.
언어 모델의 텍스트 생성 방식#
학습된 모델은 프롬프트를 읽고 어휘의 모든 토큰에 점수를 매긴 다음, 소프트맥스를 사용해 점수를 다음 토큰 확률로 변환합니다. 디코딩 규칙에 따라 토큰 하나를 선택하고 모델이 이를 추가한 후, 종료 토큰을 출력하거나 길이 제한에 도달할 때까지 이 과정을 반복합니다. 이것이 텍스트 생성의 작동 방식입니다.
온도 또는 뉴클리어스 샘플링을 이용한 샘플링은 일부 가능도를 다양성과 맞바꿉니다. 각 토큰은 이미 작성된 토큰에 따라 달라지므로 응답은 한 번에 토큰 하나씩 생성됩니다. Ultralytics LLM 인터페이스는 stream=True를 공급자에 전달하므로, 탐지된 장면을 설명하도록 모델에 요청하는 YOLO26 파이프라인은 도착하는 각 텍스트 델타를 즉시 출력할 수 있습니다.
N-그램에서 신경망 모델까지#
Claude Shannon은 정보 이론에 관한 1948년 논문에서 N-그램 통계를 이용해 영어의 단어 및 문자 근사 모델을 만들었습니다. N-그램 모델은 말뭉치에서 단어 시퀀스가 얼마나 자주 나타나는지 세어 P(다음 단어 | 이전 n-1개 단어)를 추정하며, 1970년대와 1980년대의 IBM 음성 인식 시스템은 이 모델에 의존했습니다. n = 2인 바이그램 모델은 몇 줄의 Python 코드로 개념을 보여 줍니다.
from collections import Counter
sentences = ["the cat sat on the mat .", "the dog sat on the rug .", "the cat saw the dog ."]
corpus = " ".join(sentences).split()
# Count word pairs to estimate P(next word | previous word)
pairs = Counter(zip(corpus, corpus[1:]))
firsts = Counter(corpus[:-1])
# The model's next-word distribution after "the"
print({nxt: round(n / firsts["the"], 2) for (prev, nxt), n in pairs.items() if prev == "the"})
# Chain rule: a sentence's probability is the product of its next-word probabilities
sentence = ["the", "dog", "sat", "on", "the", "mat"]
p = 1.0
for prev, nxt in zip(sentence, sentence[1:]):
p *= pairs[(prev, nxt)] / firsts[prev]
print(f"P(dog sat on the mat | the) = {p:.4f}")"the" 다음에 모델은 "cat"과 "dog"을 각각 0.33의 확률로, "mat"과 "rug"을 각각 0.17의 확률로 예측합니다. "the" 다음에 "dog sat on the mat"이 올 확률을 0.0278로 계산합니다. 해당 문장이 말뭉치에 등장한 적은 없지만, 구성된 모든 단어 쌍은 말뭉치에 있기 때문입니다. 말뭉치에 없는 단어 쌍에는 확률이 0으로 할당되므로, 실제 N-그램 모델에는 Kneser-Ney와 같은 스무딩 기법이 필요합니다. 또한 이런 모델은 n-1개 단어보다 더 먼 문맥을 활용할 수 없습니다.
Yoshua Bengio와 동료들은 2003년 신경 확률 언어 모델에서 카운트를 학습된 임베딩과 신경망으로 대체해 비슷한 단어가 통계적 정보를 공유하도록 했습니다. 순환 신경망(RNN)과 LSTM은 활용 가능한 문맥을 확장했으며, 전체 컨텍스트 윈도우에 셀프 어텐션을 적용하는 Transformer는 2017년 이후 표준 아키텍처가 되었습니다. GPT-3는 2020년에 1,750억 개의 파라미터를 가진 언어 모델이 프롬프트의 예시를 통해 새로운 작업을 학습할 수 있음을 보였습니다.
인과 언어 모델링과 마스크 언어 모델링#
인과 언어 모델링, 즉 오토리그레시브 언어 모델링은 각 토큰의 왼쪽에 있는 토큰을 바탕으로 해당 토큰을 예측하며 생성 모델의 기반이 되는 학습 목표입니다. 마스크 언어 모델링은 일부 토큰을 숨기고 양쪽 문맥을 이용해 이를 예측합니다. BERT는 입력 토큰의 15%를 대상으로 이 방식으로 학습합니다. 양방향 문맥 덕분에 분류 및 개체명 인식과 같은 이해 작업에 강하지만, 왼쪽에서 오른쪽으로 텍스트를 작성할 수는 없습니다. 확산 언어 모델은 마스킹을 확장해 여러 단계에 걸쳐 다수의 위치를 병렬로 채우는 생성 모델을 구현합니다.
학습 및 평가#
학습은 자기 지도 학습입니다. 원시 텍스트가 자체 레이블을 제공하며, 모델은 예측 분포와 실제 다음 토큰 간의 교차 엔트로피 손실 함수를 최소화합니다. 평균 손실의 지수 값은 표준 내재적 지표인 퍼플렉서티이며, 스케일링 법칙은 모델, 데이터, 연산량이 증가함에 따라 손실이 어떻게 감소하는지 설명합니다. 사전 학습된 기본 모델은 텍스트를 이어 쓰는 기능만 갖추지만, 지시 튜닝과 인간 피드백 기반 강화 학습(RLHF)을 적용하면 요청을 따르는 어시스턴트가 됩니다.
언어 모델링과 관련 용어#
- 언어 모델과 LLM: 언어 모델은 바이그램 테이블부터 Transformer까지 언어 모델링 작업으로 학습된 모든 모델을 가리킵니다. LLM은 수조 개의 토큰으로 학습되고 수십억 개의 파라미터를 가진 언어 모델입니다.
- 자연어 처리(NLP): 언어 모델링이 하나의 작업으로 포함되는 인간 언어 컴퓨팅 분야 전체를 가리킵니다.
- 시각적 오토리그레시브 모델링(VAR): 동일한 다음 단계 예측 방식을 이미지에 적용합니다. 단어 대신 토큰 맵을 거친 해상도에서 세밀한 해상도 순으로 생성합니다.










