https://openreview.net/forum?id=CWAvMSNUqT
Pooling And Attention: What Are Effective Designs For LLM-Based...
The significant advancements of Large Language Models (LLMs) in generative tasks have led to a growing body of work exploring LLM-based embedding models. While these models, employing different...
openreview.net
ICLR 2025 Reject된 논문입니다.
그래도 여러 모델을 다양한 pooling 방법, attention 방버을 통해 test했고, 어떤 방식을 써야 할까에 조금은 도움이 된 논문입니다.
코드도 있으니 구현해보기 너무 좋을 것 같아요

다 성능을 말하지만 전부 데이터도 다르고, attention, pooling 방식 모두가 다르다...
이렇게 되다 보니 상세한 비교가 불가능하다.

깊은 레이어에서 비슷한 임베딩을 보여주고, 초반 레이어는 변화가 많은 것을 알 수 있다.
두 번째 figure에서 Layer에 따른 성능을 보여주는데 Layer가 깊어져도 큰 차이가 없는 것을 보아 낮은 Layer에서도 높은 성능을 낼 수 있음을 보여준다.

논문에서 제안한 pooling 방식인데 여기엔 큰 관심이 없어서...

Casual Attention에서 EOS token pooling이 생각보다 낮은 성능을 가진게 좀 아쉽네요...

| 문제 상황 (Motivation) | 기존 LLM 기반 임베딩 모델들은 다양한 pooling/attention 전략을 사용하지만 서로 다른 데이터, 모델, 학습 세팅으로 인해 설계 효과를 정량적으로 비교하기 어려움. 또한 대부분 통계적 유의성 없이 보고됨. |
| 연구 목표 | 동일한 base LLM과 동일한 학습 데이터를 사용하여 pooling과 attention 전략만 바꿔가며 임베딩 성능에 어떤 영향을 주는지 공정하게 실험하고 분석 |
| 제안 방법 (Method) | ▶ 총 5가지 pooling/attention 조합 실험 ▶ 새로운 기법 제안: Multi-Layers Trainable Pooling ▶ 모든 실험에서 동일한 학습 데이터(Mistral-7B, 1.4M 쌍), 동일한 contrastive learning 사용 |
| Multi-Layers Trainable Pooling | 모든 layer의 hidden state를 사용하여 layer 가중치와 cross-attention을 통해 정보를 통합 → 기존 last-layer 기반보다 다양한 semantic 정보를 활용 가능 |
| 실험 디자인 | ▶ Mistral-7B, Qwen2-0.5B 사용 ▶ LoRA (r=16), contrastive learning ▶ 평가: MTEB 전체 benchmark (STS, Retrieval, Classification, Clustering 등) ▶ 통계 검정: Wilcoxon Signed Rank Test |
| 실험 조합 (5개) | Model 1: EOS + Causal Model 2: Last-layer trainable + Causal Model 3: Multi-layer trainable + Causal Model 4: Last-layer trainable + Bi-attn Model 5: Multi-layer trainable + Bi-attn |
| 주요 결과 | ✅ Model 5 (Multi-layer + Bi-attn): STS/Retrieval 최고 성능 ✅ Model 1 (EOS + Causal): Classification/Clustering에서 더 안정적 📉 Task 간 성능 편차 → pooling/attention은 task-dependent |
| 추가 실험 | 분류/군집용 데이터 추가 시 Retrieval 성능 하락 / Clustering 성능 향상 발생 → 서로 상충하는 목적 함수를 가짐 |
| 기여 (Contributions) | 🔹 동일 조건에서 pooling/attention 설계 효과 정량 분석 🔹 새로운 pooling 구조 제안 🔹 통계적 유의성까지 검정 🔹 NV-Embed 등 기존 모델과 비교 실험 제공 🔹 공개 코드: https://github.com/yixuantt/PoolingAndAttn |
| 한계 (Limitations) | 🔸 제안 방식은 STS/Retrieval에는 좋지만 다른 task엔 부적합 🔸 mean pooling, NV-Embed 완전 구현 비교 초기엔 빠짐 🔸 ablation 및 하이퍼파라미터 분석 부족 🔸 성능 향상이 작고 불균형하며 기술적 참신성이 약하다는 지적 |
| Reviewer 평가 요약 | 🔸 실험 설계는 우수 🔸 성능과 기여는 제한적 🔸 기초 해석 부족, 성능 편차의 원인에 대한 분석이 약함 🔸 논문은 reject 되었지만 후속 연구 가능성은 높게 평가됨 |
논문 “Pooling and Attention: What Are Effective Designs for LLM-Based Embedding Models?”은 다양한 Pooling 및 Attention 설계가 LLM 기반 임베딩 성능에 미치는 영향을 통제 실험으로 분석하고, 새로운 기법인 Multi-Layers Trainable Pooling을 제안한 연구입니다. 이 논문은 ICLR 2025 또는 NeurIPS 2024와 같은 수준의 학회에 제출되었으나, Reject 되었습니다.
📌 Reject 사유 요약
| 주요 사유 | 내용 요약 |
| 1. 기술적 기여 부족 | “Multi-Layers Trainable Pooling”이 기존 NV-Embed와 유사하며, 구조적 참신성이 충분하지 않다는 평가. |
| 2. 성능 향상 미약 & 불균형 | 제안 기법은 STS/Retrieval에는 향상되지만, Classification/Clustering에는 성능 저하가 발생. |
| 3. 실험 설계 미흡 | 중요한 ablation 실험, 하이퍼파라미터 튜닝 분석이 빠짐. 예: cross-attention query 수, dim, layer weight 없이도 되는가 등 |
| 4. 분석 부족 | task별 성능 편차의 원인에 대한 이론적 설명이나 해석이 부족하다는 지적. |
| 5. 비교 실험 누락 | Bi-directional + mean pooling, 또는 진짜 NV-Embed 스타일 baseline과의 직접적 비교가 부족 |
📋 Reviewer 별 주요 코멘트
🧾 Area Chair TPte (Reject 권고)
- 제안된 방법이 일관되게 좋은 결과를 내지 못하며, 성능 향상도 작고 task 간 편차가 큼
- 특히 기술적 novelty가 부족하고, classification 성능 하락 원인에 대한 이론적 설명 미비
🧾 Reviewer pdQZ (Score: 5 - Reject 경계)
- 장점: 실험 규모, 통계적 검정
- 단점: 성능 향상이 “놀랍지 않고 작다”, 제안 기법이 “크게 새롭지 않다”
- 질문: STS/Retrieval과 Clustering/Classification 사이 성능 차이의 근본 원인이 뭔지 설명 필요
🧾 Reviewer YfBn (Score: 3 - Reject)
- 제안 기법이 NV-Embed와의 차별점이 부족
- Mean Pooling + Bi-attn 조건을 실험에서 제외한 것은 문제
- layer weight의 역할과 attention 중첩 설명이 모호
- “왜 classification data를 추가했는데도 성능이 낮아졌는가?”에 대한 분석 필요
🧾 Reviewer S4qG (Score: 5 → 상향조정, 여전히 Reject)
- 장점: 좋은 ablation, pooling 설계 아이디어는 흥미로움
- 단점: 초기 학습 데이터가 retrieval 위주라 classification task에 편향
- 제안에 따라 classification/clustering 데이터를 추가한 실험을 수행한 점은 긍정적
- 그러나 성능은 여전히 하락하거나 미미 → 학습 전략, 데이터 믹스, loss function 개선 필요
🧾 Reviewer jm3o (Score: 5)
- 장점: 설계 공정성, 통계적 검정, 체계적인 설명 및 시각화
- 단점:
- 임베딩 설계 자체의 “근본적 이해와 해석이 부족”
- 모델 구성요소의 ablation이 부족 (Q matrix, attention dim 등)
- 단순한 설계와의 비교 부재 (ex. last-layer pooling만 쓰는 경우)
🔧 저자 응답 및 보완 노력
| 응답 항목 | 대응 내용 |
| 성능 편차 원인 분석 | STS/Retrieval과 Classification/Clustering은 목표 함수가 근본적으로 다르며, 하나의 설계로 모두 잡기 어려움. 다양한 task용 데이터를 추가 실험하여 trade-off 관찰 |
| 전체 MTEB 결과 보완 | Pair classification, summarization 등 전체 결과 테이블 포함 |
| NV-Embed 비교 실험 보완 | Model 4를 NV-Embed 방식과 맞췄으며, 진짜 NV-Embed-style baseline도 별도로 추가 |
| Task-dependent Q 실험 | instruction 기반 query vector를 학습에 반영했지만, 오히려 성능 하락. 개선 여지 있음 |
| Layer weight 역할 | Layer weight는 positional 정보 + 중요도 학습을 위해 필요. attention으로는 position 간 구분 불가 |
📈 학문적 기여는 인정되었지만 Reject된 이유 요약
| 평가 항목 | 논문이 받은 평 |
| 문제 정의 | 적절하고 실용적인 문제 제기 (LLM 임베딩 설계 최적화) |
| 실험 설계 | 공정한 조건 (동일 모델, 데이터), 대규모 실험 및 통계 검정 수행 |
| 기술적 참신성 | NV-Embed와의 차별성이 약하며 “구조 확장”에 가깝다고 판단 |
| 성능 향상 | 일부 task에선 유의미하지만, 다른 task에서는 하락 혹은 미미 |
| 해석력 | 왜 task별로 다르게 작동하는지에 대한 이론적 분석 미흡 |
| 비교 실험 및 ablation | 일부 핵심 조합/설계가 실험에서 빠짐 (특히 Bi-attn + Mean 등) |
💡 향후 보완 방향 제안
- Ablation 실험 강화
→ Q의 수, dim, layer weight 유무, attention head 수 등 구성요소의 영향 정량 분석 필요 - Task-aware 구조 설계
→ STS, Retrieval, Classification의 다중 목적 학습 구조 설계 고려 (예: multitask loss) - Root-cause 분석 강화
→ Layer별 정보 차이에 따른 성능 차이 분석 (representation probing, attribution 등) - 간결한 baseline과 직접 비교
→ Multi-layer 구조 없이도 유사 성능이 나는 경우도 실험해야 설계 정당성 확보 - Fine-grained task analysis
→ Retrieval 안에서도 entity vs. passage retrieval 성능 분석처럼 task 내 세분화 필요
📌 핵심 요약표
| 문제 상황 | 다양한 LLM 기반 임베딩 모델들이 서로 다른 학습 세팅·데이터·설계로 비교가 어렵고, Pooling 및 Attention 전략의 효과를 명확히 비교한 연구가 부족 |
| 연구 목표 | 동일한 LLM (Mistral-7B, Qwen2-0.5B), 동일 데이터, 동일 학습 방식으로 Pooling/Attention 전략만 다르게 실험하여 성능과 통계적 유의성을 분석 |
| 방법론 | ① Pooling 방식: EOS-last, Last-layer trainable, Multi-layer trainable ② Attention 방식: Causal vs. Bidirectional ③ 총 5가지 모델 조합으로 MTEB 벤치마크에서 비교 |
| 학습 데이터 | 총 1.4M 개의 쿼리-문서 쌍 (Quora, MSMARCO, SQuAD 등 18개), contrastive learning 사용 |
| 하이퍼파라미터 | LoRA r=16, learning rate=1e-5, batch=2048, step=1000 |
| 결과 요약 | - Multi-Layer + Bi-Attention은 STS/Retrieval에서 최고 성능 - Classification/Clustering은 Causal + Simple pooling이 더 효과적 |
| 기여 | 🔹 동등 조건 하 실험을 통한 설계 비교 🔹 새로운 Pooling 전략 제안 🔹통계적 검정을 통한 신뢰성 확보 |
| 한계 | - Task에 따라 최적 구조가 다름 (one-size-fits-all 구조 없음) - Classification 등에서는 복잡한 구조가 오히려 성능 저하 가능성 있음 |
🧩 문제 상황 (Motivation)
- 기존 LLM 기반 임베딩 모델은 서로 다른 데이터, base LLM, pooling/attention 전략 사용 → 직접 비교가 불가능
- 성능 차이가 pooling 때문인지, attention 때문인지, 데이터 때문인지 명확하지 않음
- 대부분의 연구가 통계적 유의성(statistical significance)을 보고하지 않아 신뢰도 낮음
⚙️ 실험 구성 및 방법론
1. Pooling 전략
| Pooling 종류 | 설명 |
| EOS-last token | 마지막 토큰의 hidden state 사용 (ex: E5, OpenAI text embedding) |
| Mean Pooling | 전체 token 평균 (실험에선 제외: causal일 경우 성능 낮음) |
| Trainable Pooling (NV-Embed) | MLP 또는 Cross-Attn으로 hidden state 변환 |
| Proposed: Multi-Layer Trainable Pooling | 모든 layer의 hidden state를 cross-attention을 통해 조합하여 semantic space로 투영 |
2. Attention 전략
| Causal | 기존 LLM 학습 방식 (Unidirectional) |
| Bidirectional | Representation task에 적합. 모든 토큰이 서로를 볼 수 있음 (ex: GritLM, LLM2Vec 등) |
🧪 실험 설정
- Base 모델: Mistral-7B-v0.1 및 Qwen2-0.5B
- 학습 방법: LoRA(16) + Contrastive learning (in-batch negatives)
- 총 5개 모델 조합:
| 모델 | Pooling | Attention |
| Model 1 | EOS-Last | Causal |
| Model 2 | Last-layer Trainable | Causal |
| Model 3 | Multi-layer Trainable | Causal |
| Model 4 | Last-layer Trainable | Bi-directional |
| Model 5 | Multi-layer Trainable | Bi-directional |
- 평가: MTEB Benchmark (STS, Retrieval, Classification, Clustering 등 총 56개 task)
- 검정: Wilcoxon Signed Rank Test (p < 0.05 유의 기준)
📊 실험 결과 요약
✅ Pooling 전략별 성능
| Task | EOS-Last vs Last-layer | EOS-Last vs Multi-layer | Last vs Multi-layer |
| STS | Multi-layer 우세 ★ | Multi-layer 우세 ★ | Bi-attn이면 Multi-layer가 우세 ★ |
| Retrieval | 유의하지 않음 | Multi-layer 미세 우세 | Bi-attn이면 Multi-layer가 우세 ★ |
| Classification | 단순 EOS-Last가 오히려 우수 | 복잡할수록 하락 | Bi-attn에서 성능 저하 |
| Clustering | 단순 EOS-Last가 더 안정적 | 복잡할수록 하락 | Bi-attn에서 Multi-layer는 일부 회복 ★ |
(★: 통계적 유의성 있음)
✅ 가장 우수한 조합
- Retrieval/STS: Model 5 (Multi-layer + Bidirectional)
- Classification/Clustering: Model 1 (EOS + Causal)
🧠 Multi-Layer Trainable Pooling 아키텍처 요약
- 입력: 모든 Layer의 Hidden States
- 가중치: Layer 별 가중치 W∈R^{l×d}
- Pooling 구조:
- Layer 가중치를 적용해 Layer Representation 생성
- Cross-attention block에 query Q는 trainable, key/value는 layer representation에서 생성
- Cross-attention 결과를 MLP로 투영하여 최종 embedding 생성
🧪 Robustness 실험: Qwen2-0.5B 사용
- 동일 조건으로 모델 1~5 학습
- 성능은 전반적으로 낮지만, 모델 간 경향은 Mistral과 일치
- STS/Retrieval에선 Multi-layer + Bidirectional 우세
- 작은 모델에선 복잡한 구조 도입해도 큰 이득 없음 → 단순 EOS + Causal도 효율적
📌 결론
- Task-specific 최적화가 필요: 하나의 구조로 모든 task 성능을 올릴 수는 없음
- Retrieval/RAG 등에서는 Multi-layer + Bi-Attn이 매우 효과적
- Classification/Clustering에는 단순한 구조가 더 낫기도 함
- 제안한 Multi-layer pooling은 정보 활용을 극대화하며, 향후 embedding 모델 설계에 중요한 전략으로 작용할 수 있음
논문 **“Pooling and Attention: What Are Effective Designs for LLM-Based Embedding Models?”**는 기존 LLM 기반 임베딩 모델 설계에서 pooling 및 attention 전략의 효과성을 공정하게 비교하고자 했으며, 이를 통해 기존 연구들 간의 모호한 비교 결과에 명확성을 제공하고자 했습니다.
🔍 1. Encoder 기반 임베딩 모델 연구 (Pre-LLM 시대)
이 계열은 BERT와 같은 encoder-only 모델을 중심으로 sentence embedding을 다루며, 비교적 단순한 구조에서 높은 효율성을 추구했습니다.
| 연구 | 모델 | 핵심 내용 |
| BERT | BERT | Masked Language Modeling 기반의 사전학습. Encoder-only 구조. |
| Sentence-BERT (SBERT) | SBERT | Siamese 구조로 BERT를 사용하여 문장 임베딩 생성. Cosine similarity를 위한 contrastive 학습 도입. |
| INSTRUCTOR | T5-encoder 기반 | Instruction을 입력에 포함하여 다양한 downstream task에 적용 가능한 universal embedding 모델 생성. |
| BGE-M3 | XLM-R 기반 | Dense + Sparse 임베딩을 결합하여 다양한 granularity를 학습하는 multi-function embedding model 제안. |
➡️ 의의: 문장 임베딩 효율성을 획기적으로 높였지만, 대규모 LLM의 문맥 이해 능력을 충분히 활용하지 못함.
🤖 2. LLM 기반 임베딩 모델 연구 (본 논문의 직전 흐름)
대규모 LLM을 기반으로 임베딩을 수행하면서, 다양한 attention/pooling 전략을 도입한 선행 연구들이 있습니다.
| 연구 | 모델 | Pooling 전략 | Attention | 주요 특징 |
| RepLLaMA | LLaMA | Mean Pooling | Bi-directional | LLM을 retriever로 fine-tuning한 선구적 연구. |
| E5-Mistral | Mistral | EOS-Last Token | Causal | Instruction + Synthetic data를 활용한 contrastive 학습 기반 임베딩 모델 |
| GritLM | Mistral | Mean Pooling | Bidirectional | Instruction tuning 기반. 일반 LLM보다 임베딩 성능 우수 |
| LLM2Vec | LLaMA/Mistral | Mean Pooling | Bidirectional | LLM을 encoder로 활용하여, 임베딩 구조로 변형 |
| NV-Embed | Mistral | Trainable Pooling | Bidirectional | Cross-attention 기반의 latent attention layer 도입. NVidia에서 제안한 고성능 임베딩 모델 |
➡️ 문제점: 서로 다른 학습 조건 (데이터, base LLM, pooling 구조 등)을 사용하여 설계의 효과를 직접 비교하기 어려움. 또한 대부분 통계적 유의성 없음.
🧠 3. 본 논문이 제안하는 핵심 기술과 연계된 연구
🧩 [1] Multi-layer Representation 활용 관련
- Clark (2019): BERT의 attention layer가 각기 다른 의미 정보를 담고 있다는 점을 분석
- Oh et al. (2022): 마지막 layer에만 의존하지 않고 layer-wise attention pooling을 통해 다양한 의미 정보를 추출
- Ju et al. (2024): LLM의 각 layer가 계층적인 의미를 다루는 것을 layer probing을 통해 확인
→ 본 논문의 "Multi-Layer Trainable Pooling"은 이러한 연구를 기반으로 실제 임베딩 모델에서 모든 layer의 정보를 trainable하게 결합하는 전략을 도입함.
🧩 [2] Cross-Attention 기반 Pooling
- Flamingo (Alayrac et al., 2022): cross-attention을 통해 다양한 길이의 vision frames를 고정된 latent embedding으로 변환
- NV-Embed (Lee et al., 2024): last layer의 hidden state를 cross-attention에 입력하여 고정된 dimension embedding으로 전환
→ 본 논문은 NV-Embed를 확장해 모든 layer의 hidden state + trainable layer weight + cross-attention을 결합하여 성능을 강화함.
📊 4. 평가 기준 및 벤치마크 관련 연구
| 연구 | 벤치마크 | 주요 내용 |
| MTEB | Massive Text Embedding Benchmark | Retrieval, STS, Clustering, Classification 등 56개 task 포함 |
| Springer et al. (2024) | 임베딩 안정성 향상 | 같은 문장 반복을 통해 embedding 품질 개선 연구 |
| Wang et al. (2023) | E5 시리즈 | 다양한 STS/IR task를 포함하여 모델 학습, 평가 및 MTEB 사용 |
→ 본 논문은 MTEB 전체 task에 대해 통계적 검정까지 수행한 점에서 기존 연구보다 신뢰성 있는 분석 제공.
🧩 기타 관련 기술
- LoRA (Hu et al., 2021): LLM의 parameter-efficient fine-tuning을 위한 low-rank adaptation 방법. 본 논문에서도 LLM embedding 학습에 사용.
- Contrastive Learning (Henderson et al., 2017): positive/negative 샘플 간 거리 최소/최대화를 통해 임베딩 학습. 본 논문은 in-batch negatives를 사용.
🔚 요약: 본 논문의 위치와 기여
| 측면 | 내용 |
| 기술적 기여 | 기존 연구의 단점을 보완하여 pooling 및 attention 전략의 효과를 통계적으로 정량 분석 |
| 설계적 기여 | Multi-Layer Trainable Pooling이라는 새로운 pooling 구조 제안 (정보 손실 줄임) |
| 벤치마크 기여 | MTEB 전 task에 대해 동일 조건, 통계 검정 기반 성능 비교를 수행 |
| 한계 보완 | 서로 다른 데이터/모델 사용으로 인해 발생한 비교의 불공정성 제거 |
🔍 논문의 방법론 (Methodology)
본 논문의 핵심 목적은 다음과 같습니다:
❝ 동일한 LLM과 동일한 데이터로 pooling과 attention 전략만 바꿔서 임베딩 모델 성능에 어떤 영향을 주는지 정량적이고 통계적으로 분석하자 ❞
이 목표를 달성하기 위해 다음 3가지 설계 요소를 중심으로 연구를 설계했습니다:
🧩 1. Pooling 전략 (3가지 방식 비교)
LLM은 일반적으로 각 token에 대해 l개의 hidden layer 출력을 제공합니다.
이 때, 텍스트 전체를 대표할 고정 길이 임베딩 벡터를 만들기 위한 방법이 바로 Pooling입니다.
📌 1-1. EOS-Last Token Pooling (Baseline)
- 정의: 마지막 레이어의 마지막 토큰 (EOS)의 hidden state를 임베딩으로 사용
- 공식:
h_{EOS} = H[-1, n-1, :]
여기서 H는 (layers × tokens × hidden_dim) 형태의 hidden state - 왜 사용하는가?
causal LLM의 경우, 다음 토큰을 예측하도록 학습되기 때문에 마지막 토큰은 앞의 모든 정보를 요약한 representation 역할을 함. - 예시:
- 입력: "How tall is Mount Everest? </s>" → </s> 토큰의 마지막 레이어 hidden state를 그대로 사용
📌 1-2. Last-Layer Trainable Pooling
- 정의: 마지막 레이어의 모든 토큰 hidden state를 입력으로 받아 trainable한 cross-attention 네트워크를 통해 임베딩을 생성
- 공식:
h_{pool} = CrossAttention(Q, K, V)
여기서 K, V는 마지막 layer의 hidden states로부터 생성, Q는 학습 가능한 query matrix - 직관: 모델이 중요한 토큰에 집중하여 더 풍부한 임베딩을 학습할 수 있도록 유도
- 예시:
- 입력: "Albert Einstein was a theoretical physicist." → "Albert", "Einstein", "physicist"와 같은 중요한 단어를 attention으로 강조하여 임베딩 구성
📌 1-3. Multi-Layers Trainable Pooling (논문 제안 방식)
- 핵심 아이디어: 단일 레이어(hidden[-1]) 정보만 사용하지 말고 모든 레이어의 정보를 가중합 및 cross-attention으로 활용하자.
- 배경: LLM의 각 레이어는 다른 semantic 특성을 학습 (예: lower layer는 구조, 중간은 구문, 마지막은 task-specific)
- 구성 절차:
- 모든 레이어의 hidden state 수집
- causal: EOS 토큰의 모든 레이어 hidden state → H[:, -1, :]
- bidirectional: 각 레이어에 대해 token mean → 1/n * ∑_{i=1}^n H[:, i, :]
- Trainable Layer Weight 추가
- 각 layer에 대한 중요도를 반영하기 위해 trainable matrix W∈R^{l × d}추가
- Cross-Attention Pooling
- Key/Value: h_{layers}로부터 계산
- Query: 학습 가능한 parameter Q∈R^{r×d'} 사용
- Attention 후 MLP 통과 → 최종 임베딩 출력
- 모든 레이어의 hidden state 수집
- 장점:
- 단일 레이어의 bias 제거
- 다양한 semantic 정보를 통합할 수 있음
- 예시:
- 입력: "Photosynthesis is the process used by plants to convert light into energy." → 3~5 layer는 '과학적 개념'을, 20~24 layer는 문장 구조를 encode할 수 있음 → 이를 모두 조합하여 의미적으로 풍부한 embedding 생성
🧠 2. Attention 전략 (2가지 방식 비교)
📌 2-1. Causal Attention
- 정의: 현재 토큰은 과거 토큰만 바라볼 수 있음 (decoder LLM의 기본 방식)
- 특징:
- 자연스러운 언어 생성을 유도
- 하지만 임베딩 관점에서는 문맥 정보가 제한됨 (편향 발생)
📌 2-2. Bidirectional Attention
- 정의: 모든 토큰이 모든 토큰을 볼 수 있음 (BERT와 같은 encoder 구조)
- 장점:
- 전체 문맥을 고려한 임베딩 가능
- STS, IR task에서는 더 효과적
- 주의:
- EOS-last token pooling과는 호환이 좋지 않음 (EOS가 "마지막"이라는 의미가 없음)
🧪 3. 학습 설정
| Base LLM | Mistral-7B-v0.1 |
| 학습 방식 | Contrastive Learning (positive/negative pair) |
| Parameter Efficient Fine-Tuning | LoRA (r=16) |
| 데이터 | 총 1.4M 쌍 (MSMARCO, Quora 등 18개 open set) |
| Pooling 구조 설정 | Trainable cross-attention: 32 heads, dim=4096 |
| Evaluation | MTEB 전체 benchmark 사용 (STS, IR, Classification, Clustering 등 총 56 task) |
| 통계 분석 | Wilcoxon Signed Rank Test (p < 0.05 기준) |
✅ 총 5개 모델 설계 비교
| 모델 | Pooling | Attention |
| Model 1 | EOS-Last | Causal |
| Model 2 | Last-Layer Trainable | Causal |
| Model 3 | Multi-Layers Trainable | Causal |
| Model 4 | Last-Layer Trainable | Bidirectional |
| Model 5 | Multi-Layers Trainable | Bidirectional |
🎯 핵심 요약
| 전략 | 효과적인 Task | 비고 |
| EOS-last + Causal | Classification, Clustering | 단순하지만 안정적 |
| Multi-layer + Bi-Attn | Retrieval, STS | 성능 최상, 비용 높음 |
| Last-layer Trainable | 중간 수준 | 일부 task에서는 Overfitting 가능 |
💡 전문가 팁: 실전 적용 가이드
| 상황 | 추천 구조 |
| RAG 시스템의 retriever | Model 5 (Multi-layer + Bi-attn) |
| 단순 카테고리 분류/군집화 | Model 1 (EOS + Causal) |
| 작은 모델 기반 경량 임베딩 | Model 1 또는 2 (Qwen2 등 소형 모델에 적합) |
| 학습 시간/자원이 제한됨 | Last-layer pooling + Causal로 시작 |
✅ 1. 결과 (Results)
논문에서는 동일한 LLM과 데이터셋을 기반으로 총 5가지 Pooling & Attention 조합을 실험하여 MTEB 벤치마크의 주요 task들(STS, Retrieval, Classification, Clustering)에 대해 성능을 비교했습니다.
📊 주요 결과 요약표 (Mistral-7B 기준)
| 모델 | Pooling | Attention | STS | Retrieval | Classification | Clustering |
| Model 1 | EOS-Last | Causal | ✅ baseline | baseline | ✅ 최고 | ✅ 최고 |
| Model 2 | Last-layer Trainable | Causal | ▲ +0.0129* | ▲ +0.0102 | ▼ | ▼ |
| Model 3 | Multi-layer Trainable | Causal | ▲ +0.0118* | ▲ +0.0135 | ▼ | △ |
| Model 4 | Last-layer Trainable | Bi-directional | ▲ +0.0095* | ▲ +0.0213 | ▼▼ | ▼▼ |
| Model 5 | Multi-layer Trainable | Bi-directional | ✅ 최고 ▲ +0.0166* | ✅ 최고 ▲ +0.0226* | ▼▼▼ | ▼▼ |
* = 통계적으로 유의미한 차이 (Wilcoxon p < 0.05)
🔍 세부 분석 결과
- Retrieval & STS:
→ Model 5 (Multi-layer + Bi-attention)이 가장 성능이 뛰어났으며, 기존 설계(Model 1) 대비 최대 +4.2% 향상. - Classification & Clustering:
→ Model 1 (EOS + Causal)이 여전히 가장 강력하며, 복잡한 pooling/attention 전략은 오히려 성능 저하 유발 가능성 있음. - Qwen2-0.5B 모델로 진행한 robustness 실험에서도 동일한 경향 유지됨.
🧠 2. 결론 (Conclusion)
논문의 핵심 결론은 다음과 같습니다:
❝ LLM 기반 임베딩 모델 설계에서 pooling과 attention 전략은 task에 따라 최적 조합이 달라진다. Retrieval 및 STS에선 복잡한 설계가 효과적이지만, classification/clustering에선 단순 설계가 오히려 더 나은 결과를 낳는다. ❞
📌 구체적 결론
- Retrieval / STS
→ Multi-Layer Trainable Pooling + Bidirectional Attention 구조가 성능 및 통계적으로 가장 우수
→ LLM의 모든 레이어 정보를 활용해 semantic representation 강화 - Classification / Clustering
→ 복잡한 구조는 오히려 정보 과다 및 과적합 위험
→ EOS-Last Token Pooling + Causal Attention이 더 안정적이며 효율적 - 전반적인 시사점
- “One-size-fits-all” 설계는 존재하지 않음
- 실제 사용 시에는 task-specific 설계 전략이 필수
⚠️ 3. 한계 (Limitations)
논문은 강력한 실험 설계에도 불구하고 다음과 같은 한계를 가지고 있습니다:
| 항목 | 내용 |
| 제한된 LLM 베이스 | Mistral-7B, Qwen2-0.5B만 사용 → GPT, Claude, Mixtral, LLaMA-3 등 대규모 모델에 대한 일반화 한계 |
| Mean Pooling 제외 | 실험 스코프를 제한하기 위해 mean pooling은 제외되었지만, 일부 task에서는 여전히 유용할 수 있음 |
| 연산량 증가 | Multi-layer pooling은 compute/resource 측면에서 훨씬 무거움 |
| Downstream fine-tuning 미포함 | task-specific fine-tuning과의 interaction은 분석하지 않음 |
🌟 4. 기여 (Contributions)
논문의 주요 학문적/실용적 기여는 다음과 같습니다:
| 카테고리 | 기여 내용 |
| 실험 설계 | 기존 연구들과 달리 동일한 LLM, 동일한 데이터, 동일한 학습 방식을 사용해 pooling/attention의 영향만 정밀 비교 |
| 새로운 기법 제안 | 모든 레이어 정보를 활용하는 Multi-Layers Trainable Pooling 제안 및 구현 |
| 통계적 검정 도입 | Wilcoxon Signed Rank Test를 활용해 성능 차이에 대한 통계적 유의성 확보 |
| 공개 코드 제공 | 모든 실험 및 pooling module을 공개하여 reproducibility 확보 |
| ➡ https://github.com/yixuantt/PoolingAndAttn | |
| 실용적 인사이트 제공 | 실무 환경에서 task별로 어떤 설계가 적합한지 명확하게 가이드 제시 (RAG vs Clustering 등) |
좋습니다. 논문에서 제안한 Multi-Layers Trainable Pooling은 이 연구의 핵심 기여 중 하나로, 기존의 단일 레이어 기반 임베딩(Pooling) 전략이 가진 정보 손실 문제를 해결하려는 의도로 설계되었습니다.
🧠 Multi-Layers Trainable Pooling: 자세한 설명
1. ❓ 왜 필요한가? (Motivation)
기존 대부분의 임베딩 전략은 LLM의 마지막 레이어(hidden[-1])만을 사용해서 임베딩을 구성합니다.
하지만,
- LLM의 각 레이어는 서로 다른 수준의 의미 정보를 담고 있음
- 하위 레이어: 문법, 구문
- 중간 레이어: 의미적 패턴
- 상위 레이어: task-specific 정보
- 따라서 마지막 레이어만 사용하면 중간/하위 레이어의 풍부한 정보가 소실됨
☝️ 해결 아이디어
➜ "모든 레이어의 정보를 모아서 더 정교한 임베딩을 만들자."
2. 🧩 구조 요약 (설계 개요)
요약:
“모든 레이어의 출력(H)을 입력으로 받아서,
cross-attention 네트워크로 중요한 layer 정보를 추출하고,
이를 임베딩 벡터로 투영하는 학습 가능한 pooling 레이어”
3. ⚙️ 작동 절차 (Step-by-step)
🔸 Step 1: 모든 레이어의 hidden state 수집
- 입력 텍스트를 LLM에 넣으면 hidden states H는 다음과 같은 형태:
H∈R^{L×N×D}- L: 레이어 수 (예: 32)
- N: 토큰 수 (예: 128)
- D: hidden dim (예: 4096)
- Causal Attention 모델이면 → 각 레이어에서 EOS token만 추출:
h_{causal} = H[ : , −1, : ] ∈ R^{L×D} - Bi-directional 모델이면 → 각 레이어의 mean vector 사용:
h_{bi} = 1/N * ∑_{i=1}^N H[ : , i, : ] ∈ R^{L×D}
🔸 Step 2: Trainable Layer Weight Matrix 추가
- 모든 레이어가 동일하게 중요한 건 아님 → Layer마다 중요도를 학습
h_{layers} = h + W- W ∈ R^{L×D}: 학습 가능한 layer weight
- h: 위에서 만든 h_{causal} 또는 h_{bi}
🔸 Step 3: Cross-Attention을 통한 정보 집약
- 이제 hlayersh_{layers}를 Key, Value로 사용
- K , V=h_{layers} ⋅ W_K, h_{layers} ⋅ W_V
- 학습 가능한 Query 벡터 Q ∈ R^{r×d′}사용
(보통 r = 1, 즉 고정된 query 하나 → 1개의 임베딩 생성) - Cross-Attention 연산 수행
- 결과를 MLP 통과시켜 최종 embedding 출력

🔸 Step 4: MLP 투영
- 위 attention 출력을 MLP로 정제:
- FinalEmbedding=MLP(CrossAttentionOutput)
- 결과적으로 shape: R^D 크기의 텍스트 임베딩 벡터가 완성
4. 🧪 예시: “What is quantum entanglement?”
- 입력 텍스트를 Mistral-7B에 넣음 → 32개 레이어의 hidden state 생성
- 각 레이어의 EOS token hidden vector만 추출 (causal 모델 기준)
- 레이어별로 가중치를 다르게 부여하여 조합
- cross-attention을 통해 가장 의미 있는 layer 정보 추출
- 그 정보를 기반으로 고정 차원의 임베딩 생성
5. 📈 장점 vs 단점
| 장점 | 설명 |
| 🧠 정보 손실 방지 | 다양한 semantic depth의 정보를 반영 가능 |
| 🎯 task-specific 표현 가능 | Layer 가중치를 학습함으로써 task에 따라 중요한 layer 강조 |
| 🔍 분석 가능성 증가 | 어떤 레이어가 중요한지 해석 가능 (Layer Attribution) |
| 단점 | 설명 |
| 🧮 연산량 증가 | 모든 레이어를 저장하고 처리해야 함 |
| 💾 메모리 부담 | 특히 7B~13B 모델에서는 hidden state가 매우 큼 |
| 🐢 느린 inference | 실시간 임베딩 추출에는 다소 무거울 수 있음 |
✅ 정리 요약
| 항목 | 내용 |
| 이름 | Multi-Layers Trainable Pooling |
| 목적 | LLM의 모든 레이어 정보를 통합해 더 정밀한 임베딩 생성 |
| 핵심 구성 | layer-weighted hidden state + cross-attention + MLP |
| 최적 task | Semantic Textual Similarity, Information Retrieval |
| 비교 우위 | 기존의 last-layer pooling보다 성능 ↑ (통계적으로 유의함) |
🔧 참고 구현 스니펫 (PyTorch 스타일 예시)
class MultiLayerPooling(nn.Module):
def __init__(self, num_layers=32, hidden_size=4096):
super().__init__()
self.layer_weights = nn.Parameter(torch.randn(num_layers, hidden_size))
self.query = nn.Parameter(torch.randn(1, hidden_size))
self.attn = nn.MultiheadAttention(embed_dim=hidden_size, num_heads=8, batch_first=True)
self.mlp = nn.Sequential(nn.Linear(hidden_size, hidden_size), nn.ReLU())
def forward(self, hidden_states): # shape: [batch, layers, hidden]
h = hidden_states + self.layer_weights # broadcasting
attn_out, _ = self.attn(self.query.unsqueeze(0), h, h)
return self.mlp(attn_out.squeeze(0))