이러한 시도가 최근에서야 보인 이유는 decoder only model에서 쓰이는 causal attention mechanism으로 인해, 전체 input sequence를 참조하지 못해서 풍부한 컨텍스트 표현에 제약이 있기 때문이라고 지적하고 있다.
causal attention (=masked multi head attention) 미래의 토큰을 볼 수 없도록 마스킹 한 후 진행되는 attention 연산
이러한 제약은 생성 작업을 위해서 필요하지만, 텍스트 임베딩에서는 전체 입력 시퀀스에 대한 정보를 필요로 하기 때문에 적합하지 않다.
그렇다면 그냥 Encoder only model 쓰면 되지 않아?
굳이 Decoder의 구조까지 변경해가면서 써야 하는 이유는 뭘까? 그냥 Encoder-only 모델을 쓰면 되는 거 아닐까?
본 논문에서는 decoder only model를 사용하는 것애 몇 가지 장점이 있다고 주장한다.
사전 학습 과정에서 Decoder-only LLM은 일부 토큰이 아닌 모든 입력 토큰에서 학습하기 때문에 동일한 양의 학습 데이터가 있을 때 더 효율적으로 학습 가능 -> Encoder only 모델은 일반적으로 pretraining을 진행할 때 input sequence의 15%를 마스킹하기 때문 (BERT) -> 효율적인 학습에 대한 실험은 챕터 5에 기재되어 있다
최근 연구에서 뛰어난 성능의 instruction decoder model이 많이 등장했기 때문 -> Instruction을 사용해 다양한 작업에 일반화가 가능해졌다
2. LLM2Vec
사전 훈련된 Decoder only LLM을 범용적인 text encoder로 변환하기 위한 비지도 접근방식이다.
LLM2Vec 과정은 다음과 같이 3단계로 구성된다.
1.Enabling Bidirectional Attention
2. masked next token Prediction
3. unsupervised contrastive learning
Enabling bidirectional attention (Bi)
첫 번째로 Decoder only LLM의 causal attention mask를 all-ones matrix로 대체하는 것이다.
이렇게 하면 각 토큰이 시퀀스의 다른 모든 토큰에 액세스하는 것이 가능해져, Bidirectional LLM으로의 변환이 가능하다.
하지만 사전학습 시 Decoder-only LLM이 미래 토큰을 고려하도록 훈련되지 않았기 때문에, 이러한 나이브한 접근 방식은 더 나쁜 representation을 생성할 수도 있다.
실제로 대부분의 모델에서는 bidirectional attention만 enable 했을 때, embedding performance가 감소하는 모습을 보였다.
따라서 아래의 추가적인 전략들을 사용해, Decoder 모델이 미래 토큰을 고려하도록 학습을 진행한다.
Masked next token prediction (MNTP)
모델이 bidirectional attention을 인식하도록 하는 전략이다.
MNTP는 next token prediction + Masked language modeling을 결합한 새로운 학습 목표이다.
임의의 시퀀스 x = (x1, ...x_n) 이 주어진다고 가정할 때, 먼저 입력 토큰의 일부를 마스킹한 다음 마스킹된 토큰을 예측하도록 모델을 훈련한다.
각 입력 문장을 임베딩한 후 frozen하고,representation 상단에 task-specific linear classifer를 훈련해서 부착함
최신 encoder only model인 DeBERTa-v3-large와 비교 진행
실험 결과
검정색 선 : Causal attention (Uni) 빨간 선 : DeBERTa-v3-large
Causal attention (Uni) 를 사용하는 것만으로 이미 Encoder-only baseline을 뛰어 넘었다. -> 이는 모델 크기의 차이로 인해 어떻게 보면 당연한 결과이다. (Deberta-large-v3 : 304M / Decoder model : 1.3 ~ 7B)
Naive하게 bidirectional attention을 적용할 경우(Bi) 성능이 크게 저하되었다
특이하게도 Mistral의 경우에는 성능 저하가 훨씬 덜했고, NER 태스크에서는 오히려 성능이 오르기도 했다
MNTP만 사용한 경우 (w/o SimCSE) 모든 모델과 작업에서 성능이 향상되엇다
SimCSE를 사용한 경우, 오히려 성능 하락이 일어났다 -> SimCSE는 sequence level에서 representation을 조정하기 때문에, word-level에서는 성능 저하가 보이는 것으로 판단
데이터 구성은 35개의 문장 triple set \(\{(q_i, s_i^+, s_i^-)\}^{35}_{i=1}\)으로 구성되어 있다.
데이터셋 예시
\(q_i\) = \((A_i, B_i)\)
\(s_i^+\) = \((A_i, C_i)\)
\(s_i^-\) =\((A_i, D_i)\)
\(A_i, B_i, C_i\) 는 모두 비슷한 의미를 지님 \(B_i, D_i\) 는 서로 다른 의미
문장의 첫 부분 \(A_i\) 에만 pooling을 진행해서 각 문장에 대한 시퀀스 표현을 생성한 다음, 결과 임베딩 간의 코사인 유사도를 계산
이 때 prefix \(A_i\) 의 표현에 대해 미래 토큰인 \(B_i, C_i, D_i\)의 정보를 통합하는 모델은 positive example에 더 높은 similarity를 할당할 것이다.
실험 결과
S-LLaMA-1.3B의 경우 bidirectional attention과 MNTP 훈련만으로도 positive / negative example에 대한 명확한 구분 가능
Mistral-7B의 경우 모든 설정에서 query - positive example 유사성이 query - negative eample 유사성보다 큼
training (MNTP, SimCSE) 없이도 Mistral model에서 bidriectional attention이 잘 먹히는 이유는?
실험 세팅
각 모델의 단일 입력 시퀀스 (위키피디아의 무작위 문장)을 넣고 모든 레이어 l에서 causal \(H_l^c\), bidirectional attention \(H_l^{bi}\) 로 hidden representation을 계산
모든 레이어에 대해 causal attention, bidirectional attention으로 구성된 표현 사이의 코사인 유사도, 즉 \(sim( H_l^c , H_l^{bi}\)을 계산 -> 대부분의 레이어에서 이 유사도는 낮을 것으로 예상되는데, 학습 없이 bidirectional attention을 활성화하면 상당히 다른 표현이 생성되기 때문
실험 결과
LLaMa 기반 모델에서는 유사도가 매우 다르게 나타나는 반면, Mistral 에서는 높은 코사인 유사도를 보임
-> Mistral을 훈련할 때 어떤 형태의 bidirectional attention이 학습된 것으로 보이나, 자세한 조사는 향후 연구로 남겨둠
5. Combining LLM2Vec with supervised contrastive learning
현재까지는 unsupervised contrastive learning을 사용한 방식만 평가했다.
그렇다면 supervised contrastive learning을 사용하면 어떻게 될까?