Text Generation(or generative model)
generation도 classification이다.
RNN을 통해서 Text Generation을 하는 것을 지켜보자
but, RNN을 통해 text generation을 잘 하진 않는다(이해하려고 RNN으로 사용해보는것.)
그 다음 RNN 위치에 Transformers를 넣으면 된다. (그게 GPT라고 볼 수 있음)

한 종류의 decoder를 가지고 many-to-many를 할 수 있다.(꼭 인코더 디코더로 여러겹 쌓을 필요는 없다.)
이미지 캡셔닝: 이미지에 해당하는 월드 시퀀스를 제러네이티드 하는것 (seq to seq로 구현된다.) (one-to-many로 작동하지 않는다.)
그래서 텍스트 제너레이션을 할때는 seq-to-seq로 대부분 해결된다.
RNN은 Language 모델링에 사용된다.
쓰고있는 모든 언어를 인코딩하는것이 Language 모델링이다.
building(come이 나왔으면 here이 나오게끔 학습시키는 과정)
우리가 사용하는 모든 언어들을 인코딩 시키는 것 -> 우리가 사용하는 문장의 probablity를 높여가는 것이다. (Language 모델링) -> ultimit purpose..
가장 간단하게 probablity를 떠올려보자 -> counter base -> 전체에서 초록색 공이 나올 확률
우리의 word를 이만큼 정해서 counter base로 나타내는건 옳지 못한 방향이다.
모든 sentence에서 다음 단어가 나오는걸 예측하는것은 비효율적이다.
문장을 나눠서 단어별로 확률을 고려한다.
sentence가 하나의 유닛으로 썼지만, 지금은 그 유닛을 word로 사용하는것이다. -> conditional probability(문장을 나눠서 단어별로 고려를 한다.)

쪼개진 words y1,y2,...yn
결과값: 현재의 타임스텝에서 나온 확률을 계산해서 다 곱해라 <--- 이걸 높여가는 과정
(Left-to-Right) Language models

맨 오른쪽에 있는 word의 확률을 높여가는 방식을 선정했다면 very good
auto-regressive -> Left-to-Right를 사용했다.
(masked) Language models

중간에 있는 word의 확률을 높여가는 방식으로 사용한다면 text generation에 사용할 수 없다.
BERT는 그래서 text genration에는 쓸 수 없고 classification에만 사용할 수 있다.
Neural Language Model 훈련 (Word2Vec와 비교)
- Word2Vec와의 유사점
- 비슷한 접근법이지만, 모든 타겟-컨텍스트 단어 쌍을 생성하지 않고 문장 쓰기 방향(좌->우)에 초점을 맞춤.
- 데이터 준비
- 예시로, 단어 사전 크기를 7로 설정.
- One-hot 인코딩된 학습 샘플 생성:
- x= [ 1, 0, 0, 0, 0, 0, 0], y = [0, 1, 0, 0, 0, 0, 0]
- 모델 구조 (Word2Vec 복습)
- 두 개의 가중치 행렬 사용:
- 임베딩 가중치: [vocab_size, embedding_dim] => [7, 100]
- 컨텍스트 가중치: [embedding_dim,vocab_size] => [100, 7.
- 출력은 softmax를 거쳐 단어 분포로 변환.
- 두 개의 가중치 행렬 사용:
- 출력 예시
- 예측 분포: y^ = [0.1, 0.4, 0.05, 0.2, 0.1, 0.05, 0.1]
- 목표 (손실 함수)
- Cross-Entropy 손실 사용: Cross-entropy Loss = -1 * log(0.4)
language model은 무조건 many-to-many인데
code 구현을 할때는 실제로 many-to-one이 되어버린다.
컨셉과 구현의 간극이 발생
-> Language Model의 컨셉(many-to-many)과 구현(시점별 반복)이 다르게 보이는 이유는 효율성과 계산 용이성 때문. 이 간극을 줄이기 위해서는 병렬처리 기반 구조나 Seq2Seq 방식을 고려할 수 있다. 그러나 대부분의 auto-regressive 모델은 현재 방식으로도 충분히 성능을 발휘하고 있어 간극이 허용되고 있는 상태.
'AI' 카테고리의 다른 글
| [NLP] 시작 (5) | 2025.04.16 |
|---|---|
| Transformer (0) | 2024.12.16 |
| Seq2Seq Text Generation (0) | 2024.12.13 |
| Linear Classifier, Loss Func, Softmax Func, Optimization (0) | 2024.11.04 |
| Image Classification, Text Classification (0) | 2024.09.23 |