- RNNs VS Transformers
- 두 모델 모두 Sequence modeling에 사용됨
- 차이점: long-range dependencies(장기 의존성 처리) and parallelization(병렬 처리)
- RNN의 단점: Recurrent computation이 느림

-> 모델이 한 번에 한 토큰씩 예측해 나가는 과정. 이를 통해 새로운 텍스트를 생성함
-> 모델이 문장 전체를 보고, 각 위치에서 다음 올 토큰을 병렬로 예측하는 방식. 훈련 시에는 문장을 한 번에 입력하고 병렬로 예측 결과를 얻어 더 빠르게 학습할 수 있음



: 현재 단어와의 유사성에 따라 가중된 이전 단어들의 합

-> x1부터 xi까지의 토큰 임베딩을 현재 토큰 xi와의 유사도에 기반하여 가중합을 계산하는 것

-> ai: xi와의 유사성에 따라 x1부터 x7(자기 자신인 xi까지 포함)까지의 가중합




-> 현재 요소 xi와 이전 요소 xj의 유사성을 계산하기 위해 qi(Query)와 kj(Key) 사이의 내적(dot product)을 사용
-> xj를 합산하는 대신, vj(value)를 합산

-> 내적의 결과가 양수or음수의 매우 큰 값(arbitrarily large value)이 될 수 있음
-> 이러한 큰 값을 지수 함수로 변환하면 학습 중에 수치적 문제와 기울기 소실이 발생할 수 있음
내적(Score)을 Query와 Key vector의 차원 dk의 제곱근으로 나누는 방식으로 값을 조정하여 임베딩 크기와 관련된 요소로 내적 값을 스케일링함

*Attention Head: 각 독립적인 가중합 계산 과정

-> Head가 여러개로, 여러개의 독립적인 가중합을 계산함!
-> 여러 헤드에서 계산된 가중합(즉, 여러 어텐션 헤드의 결과)을 결합하여 최종 어텐션 출력

-> 각각의 Attention Head는 서로 다른 문맥적 정보를 처리함
- Attention for Contextual Embeddings
- Attention은 Contextual information을 통합하여 토큰의 표현을 풍부하게 만드는 방법
-> 각 단어의 embedding은 서로 다른 문맥에서 다르게 나타남
- 정보를 한 토큰에서 다른 토큰으로 이동시키는 방식
- Attention을 통해 얻은 Contextual Embeddings
: 단어가 그 Context 안에서 가지는 의미를 표현한 것
: 각 토큰은 상위로 전달되며 수정됨
: 모델이 각 토큰을 처리하는 동안 이전 층의 출력을 유지하면서 그 위에 새로운 정보를 더하는 방식

- "Prenorm" 아키텍처
: 현재 방식, Feedforward Layer 전에 Layer Norm이 적용됨
-> 잔차 연결에 포함된 정보가 모델의 변환을 거치기 전에 정규화하여 신호가 왜곡되지 않도록 하는 방법- "Postnorm" 아키텍처
: 예전 방식, Feedforward Layer 이후에 Layer Norm이 적용됨
-> 신호가 이미 처리된 후에 정규화하는 방식
-> 비선형성(Non-linearilty)이 필요하므로, Feedforward layer가 필요함

Feedforward Layer의 가중치
: 토큰 위치 i에 대해 동일하게 적용됨
: But, layer가 달라지면 가중치도 달라짐
-> 각 layer 에서 다른 방식으로 입력을 처리하고 학습함
Feedforward network의 은닉층 차원 dff는 종종 모델 차원 d보다 큼
-> 이는 네트워크가 더 많은 정보를 학습할 수 있도록 용량을 늘리는 방법
-> 모델의 차원 d = 512 -> 은닉층 차원 dff = 2048 -> 512
-> 더 복잡한 패턴을 학습할 수 있음

벡터 xi는 두 번 정규화됨
통계학에서 사용되는 z-스코어의 변형으로, 은닉층의 단일 벡터에 적용됨

-> Skip Connection으로 attention 결과 t2에 원래 입력 xi를 더해줌(원래 정보 유지)
-> 최종 Skip connection: t5에 이전 단계의 t3를 더해줌

-> 트랜스포머는 이러한 블록들이 쌓인 구조로 이루어져있으며, 모든 벡터는 동일한 차원 d를 가짐

- Residual Stream은 개별 토큰의 정보 흐름을 유지하는 반면, Attention은 이웃한 토큰에서 정보를 가져와 정보를 이동시킴!
- 잔차 스트림(Residual Stream)
: 잔차 스트림은 각 토큰에 대해 정보가 흐르는 경로
트랜스포머 블록의 모든 부분은 하나의 잔차 스트림(1개의 토큰)에 적용
-> 한 토큰에 대한 정보는 그 토큰 내에서만 처리됨!- Attention은 다른 토큰들로부터 정보를 가져옴
-> 문맥을 고려- Attention Head
: 이웃한 토큰의 잔차 스트림에서 현재 스트림으로 정보를 이동시키는 과정-> 다른 토큰에서 중요한 정보를 현재 토큰으로 끌어와 더 나은 문맥 이해를 가능하게 함
-> 이를 통해 각 토큰은 자신의 주변 단어들과의 관계를 학습함

Q*KT

각 입력 토큰에 대한 Attention vector (A), N x d 크기의 행렬



: 주로 트랜스포머(Transformer) 모델의 디코더(Decoder)에서 사용되는 기법으로, 미래 정보가 모델에 미리 노출되지 않도록 막는 역할
-> Q*KT는 각 쿼리와 모든 키(쿼리 이후의 미래 키도 포함하여)의 점수(score)를 가지고 있음
-> 마스킹 기법을 통해 모델은 현재 시점에서 아직 나오지 않은 단어를 추측해야 하는 상황을 학습함 (다음 단어를 알고 있으면 너무 쉬우니까)


-> 최종 Attention A: 입력 토큰들 간의 관계를 고려하여 최종적으로 가중합된 정보(문맥적 정보를 반영한 벡터)

: 각 단어를 고정된 차원의 벡터로 변환하는 과정
ex) Fish = 
: 각 단어의 위치 정보를 나타내는 행렬을 생성
위치 임베딩 행렬 Epos는 [1 x N]크기
-> N: 입력 시퀀스의 최대 길이
Absolute position embedding(절대 위치 임베딩): 각 단어가 문장 내에서 몇 번째에 위치하는지를 나타내는 방식
-> 처음에는 위치 임베딩이 임의로 초기화(절대 위치 임베딩)되며, 훈련 과정에서 학습을 통해 모델이 이 임베딩을 문맥에 맞게 더 나은 위치로 조정함
-> 위치 임베딩도 학습 가능한 파라미터

- Training, 훈련 시에는
: 마스킹을 사용한 병렬 계산- Inference, 실제 추론 시에는
: 자기회귀식(Autoregressive) 다음 단어 예측
-> 마스킹 없이!

= Causal(인과적) LLMs
= Autoregressive(자기회귀적) LLMs
= Left-to-right LLMs
-> 좌에서 우로 단어를 예측
-> 입력된 텍스트를 기반으로 다음 단어를 순차적으로 예측

ex) 감정 분석(Sentiment analysis): “I like Jackie Chan”
이 문장을 언어 모델에 입력:
The sentiment of the sentence "I like Jackie Chan" is:
그리고 모델이 다음에 어떤 단어를 예측하는지 확인



: 모델의 확률을 기반으로 단어를 선택하여 생성하는 작업
-> 모델은 각 단어에 대해 확률을 부여하며, 확률이 높은 단어는 선택될 가능성이 높아짐. But 무작위성 때문에 확률이 낮은 단어도 선택될 가능성은 존재함
word sampling의 고려 요소: quality and diversity(다양성)
높은 확률의 단어 강조 시
-> 품질 상승: 더 정확, 더 일관성(coherent), 사실적
-> 다양성 감소: 지루하고, 반복적
중간 확률의 단어 강조 시
-> 품질 저하: 덜 사실적, 일관성 떨어짐(incoherent)
-> 다양성 증가: 더 창의적, 다양한 결과

1) 선택할 단어의 수 k를 정함
2) vocabulary V에 있는 각 단어에 대해, 언어 모델을 사용하여 주어진 문맥에서 이 단어의 가능성 p를 계산
3) 단어들을 가능성 순으로 정렬하고, 가장 가능성이 높은 상위 k개의 단어만 남김
4) 남은 k개의 단어들의 점수를 다시 정규화하여 합이 1이 되는 확률 분포로 만듦
5) 이 상위 k개의 가장 가능성 높은 단어들 중에서, 각 단어의 확률에 따라 무작위로 하나의 단어를 sampling
-> 문제점: k는 고정되어 있기에 상황에 따라 매우 다른 확률 질량을 포함할 수 있음

: 상위 p% 의 확률 질량만 유지함
: 위 조건을 만족하는 가장 작은 단어 집합
: 분포를 자르는 대신 재구성함
: 열역학으로부터 아이디어
-> 높은 온도에서 시스템은 유연, 다양한 상태 탐색 가능
-> 낮은 온도에서 시스템은 더 나은 상태만 탐색할 가능성 높음

- (τ는 0~1 사이의 값)
- τ가 1에 가까울수록:
분포는 거의 변하지 않아서, 원래 모델이 계산한 확률대로 단어를 선택- τ가 낮을수록:
소프트맥스로 넘어가는 입력값이 커지기 때문에, 소프트맥스는 높은 값을 1에 가깝게, 낮은 값을 0에 가깝게 만듦
즉, 확률이 높은 단어는 더 확실하게 높아지고, 확률이 낮은 단어는 거의 선택되지 않게 함(Greedy)- τ가 0에 가까워질수록:
가장 확률이 높은 단어의 확률이 거의 1에 가까워지기 때문에, 가장 가능성 높은 단어만 선택됨


: 텍스트를 개별 단어로 분리하여 각 단어를 별도의 단위로 처리하는 과정
<장점>
<단점>

: 텍스트를 개별 문자로 분리하여, 각 문자를 고유한 토큰으로 취급
<장점>
<단점>

: 단어를 의미있는 subword 단위로 분리하여, 단어 기반과 문자 기반 접근 사이의 균형을 맞춤
<장점>
<단점>
-> 이러한 제한점은 대규모 corpus를 사용하여 해결 가능
-> 모델이 실제 단어 w에 높은 확률을 할당하도록 하고 싶음
-> 즉, 모델이 w에 너무 낮은 확률을 할당하면, 손실이 커져야 함


: 학습 중에 모델이 잘못된 예측을 하더라도, 그 예측을 사용하지 않고 정답 단어를 제공하여 모델이 다음 단어를 더 정확하게 예측할 수 있게 함
: 정답을 기반으로 다음 단어를 계속 예측하기 때문에, 모델이 더 빠르게 학습
<한계점>
추론 시 다르게 동작: 실제 추론 단계에서는 Teacher Forcing을 사용할 수 없기 때문에, 모델이 학습 중 경험하지 못한 잘못된 예측을 기반으로 문장을 생성할 때 어려움 (학습과 추론의 불일치)
각 토큰 위치 t에서, 모델은 정답 토큰 w1:t를 봄
-> 다음 토큰 wt+1에 대한 손실(-로그 확률)을 계산
다음 토큰 위치 t+1에서는 모델이 wt+1에 대해 예측한 것을 무시함
-> 대신, 정답 토큰 wt+1를 문맥에 추가하고, 다음 단계로 넘어감
- Scaling Laws
: power laws: 모델 성능(손실)이 모델 크기, 데이터 양, 연산량의 증가에 따라 비례적으로 향상되지 않음 -> 성능 향상률이 점점 줄어듦
<LLM 성능의 의존 요소>
- 모델 크기: 임베딩을 제외한 파라미터 수
- 데이터셋 크기: 훈련 데이터의 양
- 연산량(Compute): 연산량(FLOPS 등)
-> 위 3가지 요소들을 증가시킬수록 성능은 향상되지만, 일정 수준 이상부터는 성능 향상이 점점 느려짐(성능이 power law에 따라 증가하기 때문)
-> Scaling laws를 사용하여 학습 초기 단계에서 더 많은 데이터를 추가하거나 모델 크기를 증가시켰을 때 손실이 어떻게 변할지 예측할 수 있음
-> 모델 성능을 개선하려면 파라미터 수(더 많은 레이어, 더 넓은 문맥), 더 많은 데이터, 또는 더 많은 학습 반복을 추가할 수 있음

pretraining에서 보지 못한 새로운 도메인에 적응하기 위한 Fine tuning

계속된 pretraining(finetuning)을 통한 새로운 도메인 적응은 대형 LLM에서 문제가 됨
-> 훈련해야 할 엄청난 수의 파라미터
-> 배치 경사 하강법의 각 패스에서 매우 많은 거대한 레이어를 통해 역전파를 해야함
-> 처리 능력, 메모리, 시간 면에서 비용이 많이 듦
- Parameter-Efficient Finetuning (PEFT)
- 파인튜닝 시 업데이트할 파라미터의 일부만 효율적으로 선택
-> 일부 파라미터를 freeze하여 변경하지 않고, 일부 소수 파라미터만 업데이트-> LoRA (Low-Rank Adaptation)
- 트랜스포머 모델은 많은 dense matrix 곱셈 레이어를 가지고 있음
ex) Attention에서의 WQ, WK, WV, WO 레이어- 파인튜닝 시 이 레이어들을 업데이트하는 대신,
-> 레이어를 동결하고, 더 적은 파라미터로 Low-rank approximation(저차원 근사)을 업데이트함
-> 원래의 파라미터 W는 동결하고, 대신 A와 B라는 저차원 행렬을 추가로 학습시켜서 파라미터 업데이트를 효율적으로 줄이는 방법
- In-context Learning (ICL)
: 과제 시연을 자연어 형식으로 프롬프트에 통합하는 기술
-> pretraining된 LLM이 모델을 파인튜닝하지 않고도 새로운 작업을 처리할 수 있게 함
-> 대규모 데이터로 사전 학습된 모델일수록 In-context learning의 성능이 더 좋아짐- Prompt
: 모델의 사고 과정과 이후 출력을 이끄는 의미적 선행 정보(Semantic prior)

- Chain-of-Thought (CoT) Prompting
: 프롬프트에 중간 추론 과정(intermediate reasoning steps)을 포함시켜 LLM의 추론 능력을 향상시키는 기술
-> 특히 복잡한 추론 작업에서 few-show 프롬프트(모델이 수행해야 할 작업을 몇 가지 사례를 통해 보여주고, 그 사례를 기반으로 새로운 입력에 대한 결과를 생성하도록 유도)와 결합될 때 효과적

Positional Embedding
: 절대 위치 임베딩(Absolute Position Embedding) → 상대 위치 임베딩(Relative Position Embeddings, RoPE)
Layer Norm
: Layer Norm(LN) → Root Mean Square (RMS) Norm