https://kaiokendev.github.io/context
Extending Context is Hard
pages
kaiokendev.github.io
kaiokendev.github.io
확장 컨텍스트는 어렵지만 불가능하지는 않습니다†
표면적으로는 쉬운 작업이어야 합니다.
저는 긴 시퀀스 길이에 대해 사전 훈련된 모델을 미세 조정하는 방법을 연구하면서 이 글을 작성하고 있었습니다. 이 경우, 사전 훈련된 모델은 LLaMa이며, 사전 훈련 시퀀스 길이는 2048입니다. 긴 시퀀스에서 모델을 단순히 미세 조정하는 것은 항상 작동하지 않는 것처럼 보였지만, 가능해야 한다고 생각했으므로 완전히 도전해 보았습니다. 이제 1줄의 코드로 컨텍스트를 확장하는 방법이 있으며, 이에 많은 관심이 집중되고 있습니다. 불행하게도, 이에 대한 오해도 많이 있으며, 왜 작동하는지와 왜 그렇게 간단한지에 대해서도 오해가 많습니다. 사람들이 그것을 "해킹"이나 "트릭"이라고 부르는 이유는 단순히 1줄의 코드때문입니다. 그래서 내가 생각한 것들을 머릿속에서 던져주고 무슨 일이 일어나는지 명확히하기 위해 이 글을 출판하기로 결정했습니다.
다시 말해서, 실수가 있을 수 있다는 것을 기대하세요 lol
동시 작업
편집: 2023년 6월 27일
Meta 자체가 Chen et al. 2023을 통해 동시에 동일한 보간 속성을 발견했다는 사실을 알려줬습니다. 그들의 논문을 읽는 것을 강력히 추천합니다. 그들의 발견 중 많은 부분이 내 것과 유사하지만, 그들은 이 작동 방식에 대한 광범위한 실험과 추가적인 이유를 제시합니다. 그렇습니다, 동시에 두 곳에서 발견된 것에 대해 저도 놀랐습니다!
논문: https://arxiv.org/pdf/2306.15595.pdf
The Problem
그렇다면 모델이 학습 내용을 확장된 시퀀스 길이에 대해 일반화하기가 왜 어려울까요? 이와 관련하여 다음 논문들을 살펴보겠습니다.
Anil et al. 2022는 "방해 토큰"이 입력 중에 존재하기 때문에 길이 추정이 실패하는 것을 큰 부분으로 관찰했습니다. 그들의 부록 F에서 아래 내용을 강조하고 싶습니다.
4장에서의 분석 결과, 우리는 패딩된 스크래치패드 전략을 사용해도 "학습되지 않은 위치 인코딩"이나 "EOS 토큰 예측"이 앞서 언급한 경로변화를 일으키는 것이 아니라는 사실을 보여줍니다. 이는 transformer가 입력 및 스크래치패드의 "올바른" 섹션에 주의를 기울이고 긴 길이에 대해 일반화되는 순차 전략을 구현하는 스크래치패드에 기여하는 방법을 배우지 못한다는 점을 나타냅니다. transformer 컨텍스트 창의 어느 섹션(입력 또는 스크래치패드)에서 방해 토큰이 성능 변화에 더 많이 기여하는가? 모든 방해 토큰을 제거하면 완벽한 길이 추정을 할 수 있을까요? [...] 이 실험에서 우리는 다음 결론을 내립니다:
- 모든 방해 토큰을 제거하면 완벽한 길이 추정이 가능합니다.
- 방해 입력 토큰은 길이 추정 성능에 더 큰 영향을 미칩니다.
Chi et al. 2022는 위치 인코딩에서 편향 항(예: ALiBi와 같은)이 장벽된 주목 영역의 토큰 상호 의존성을 감소시키는 효과를 재현한다고 관찰했습니다. 이를 활용하여 Sandwich를 만들어 이 효과를 완화시킵니다.
Tao et al. 2023은 Anil et al.과 유사한 접근 방식을 따르면서도 긴 시퀀스에서 후방 위치 임베딩이 앞쪽 위치 임베딩보다 훨씬 적게 업데이트된다는 관찰을 했습니다. 그러나 그들은 시퀀스의 앞쪽 패치에 무작위 패딩을 추가하는 다른 방식을 취합니다. BERT 변형에 대해 F1에 대한 약간의 ~+0.2%에서 ~+0.8% 정확도 향상을 관찰했습니다. Anil et al.에서도 이에 대해 다루고 있습니다.
LaMDA 모델은 위치 정보를 처리하기 위해 T5 위치 편향을 사용합니다. 네트워크가 짧은 인스턴스로만 훈련된 경우, 긴 위치 거리를 처리하는 위치 편향이 훈련되지 않을 수 있어서 길이 일반화가 나쁘게 나오는 것을 설명합니다.
[...] 이러한 영향을 설명할 수 있는 정도를 테스트했습니다.
이 개입이 도움이 되지만, 훈련된 모델은 여전히 심각한 길이 일반화 문제를 나타냅니다.
Liu et al. 2023은 Transformer의 플립플롭 작업에서 긴 시퀀스에서 정확성이 떨어지는 것을 관찰했습니다. 특히, 부록 B.5에서 다음을 언급합니다.
실패는 여러 요인에 기인할 수 있습니다. 여기서는 선형 위치 인코딩을 사용하는 1층 1헤드 Transformer를 사용하여 길이 834의 시퀀스에서 2회 쓰기 작업을 수행하는 동안의 어텐션 패턴에 관련된 한 가지 측면을 탐구합니다. 그림 12에 나와 있듯이, 시퀀스의 초기 위치에 대한 어텐션이 가장 최근 쓰기 작업에 올바르게 주목합니다. 그러나 나중 위치로 이동할수록 어텐션이 "드리프트"하기 시작하고, 시퀀스 끝의 위치는 최근 읽기 토큰에만 주목하며 이 작업을 해결하는 데 필요한 정보가 없습니다. 이는 위치 인코딩에 의해 어텐션 가중치가 너무 많이 영향을 받기 때문일 수 있습니다.# 웹 페이지: 제안 4. 선형 위치 인코딩을 고려하십시오. 즉, 일부 (큰) 상수 C에 대해 pi = i/C입니다. 그런 다음 임의의 길이에 대한 완벽한 길이 일반화는 다음을 필요로합니다:
W_Qp^T * W_Kp = 0.
Silver Linings
지금 우리는 문제에 대해 더 나은 인식을 가지고 있으며, 이 문제는 긴 시퀀스의 경우 관찰된 토큰의 불균형 (앞으로 또는 뒤로 치우침)으로 인해 어텐션 메커니즘이 불안정해지는 것으로 보입니다. 이제 이러한 영향을 해결하기 위해 제안된 방법에 대해 알아보겠습니다.
Bueno et al. 2022는 몇 개의 샷의 연쇄 사고 과정 및 마커 토큰을 사용하여 프롬프트를 제공할 때 사전 훈련된 모델이 잘 길이를 추정한다는 것을 입증합니다. 구체적으로, 작업을 완료하는 데 필요한 단계를 요약하면서 완료된 작업을 순차적으로 표시함으로써 모델에게 문맥 속에서 길이를 추정하는 방법을 "가르치는" 것입니다.
또한 입력 및 출력 시퀀스에서 토큰을 정확하게 식별하는 데 도움이되는 마크업 토큰과 함께 토큰 ic와 oc를 교대로 배치합니다 (예: Figure 1-(b) 참조). 이러한 토큰은 세 가지 방식으로 모델을 지원합니다: 1) 진행 중인 작업을 나타내는 작업 메모리 역할을 합니다. 2) 알려진 패턴의 시작을 알리는 하위 프롬프트 앵커로 작용합니다. 3) 특정 진행 상황에 도달했을 때 중지 조건을 암묵적으로 모델링합니다.
Anil et al. 2022는 길이 일반화 / 추정이 모델 아키텍처에 완전히 종속되는 것이 아니라 학습된 능력임을 나타냅니다:
우리는 인문학적 학습 방식에서 스크래치패드의 사용이 일반적인 감소를 심각하게 완화시킴을 보여줍니다. 이 능력은 LLMs에 대해 매우 중요한데, 이는 무한한 데이터가 존재하는 상황에서도 길이 일반화와 같은 특정 기술이 유한 조건부 학습보다는 인문학적 학습을 통해 학습 될 수 있다는 것을 의미합니다. 이는 기계 학습의 통상적인 규범과는 대조적입니다 (5절 참조).
그러나 다음과 같은 내용으로 주의해야합니다 (부록 E):
5.1절에서는 몇 가지 샷의 유한 조정이 동일한 작업에 대한 유한 조정되지 않은 성능이 이미 중요한 수준에 도달한 경우에만 길이 일반화 성능에 중요한 개선을 가져온다고 가설을 세웠습니다. 이를 위해 유한 조정을 사용하여 동전 던지기 작업에 대해 유한 조정되지 않은 성능이 나쁜 대체 프롬프트 스타일을 사용하여 몇 가지 샷의 유한 조정을 실행했습니다. Figure 14에서 확인할 수 있듯이, 유한 조정된 성능은 유의한 길이 일반화 병리를 보여줍니다.
다시 말해서, 성능은 향상되지만, 특히 미세 조정 없이 이미 성능이 좋지 않은 작업의 경우에는 추정을 가능하게 하는 마법의 해결책은 아닙니다. 성능을 일관되게 향상시키는 유일한 방법은 방해되는 토큰을 제거하는 것입니다:
Mohtashami et al. 2023은 랜드마크 토큰과 창 단위 어텐션 (블록 별 계산 형태)을 도입하여 LLaMa 7B를 완벽한 검색을 달성하기 위해 세부 조정할 수 있다고 보여줍니다. LLaMa는 로터리 위치 인코딩을 사용하여 사전 훈련된 컨텍스트 길이 2048을 가지고 있습니다.
어텐션 점수를 계산한 후 소프트맥스 함수를 Grouped Softmax로 대체합니다. 각 블록에 대해, 일반 토큰은 별도의 그룹에 배치되어 동일한 블록 내의 모든 일반 토큰이 동일한 그룹을 공유하도록 보장하고, 블록 외부의 토큰은 다른 그룹에 할당됩니다. i번째 토큰의 어텐션 가중치를 계산할 때, 다른 블록의 랜드마크 토큰은 i번째 토큰과 동일한 그룹에 배치됩니다. i번째 토큰에 대한 어텐션 가중치를 계산할 때, i번째 토큰의 블록에 대한 랜드마크 토큰은 무시됩니다. 즉, 각 블록의 랜드마크 토큰은 다른 블록의 토큰에만 사용됩니다. 이는 랜드마크 토큰이 다른 블록의 토큰에서 정보를 검색해야 할 때에만 액세스되어야 함을 직관적으로 나타냅니다.
중요한 점은 이들의 창 배치 방식이 표준적인 블록 제한 방식과 다르다는 것입니다. landmark gates의 도입으로 각 landmark는 다른 모든 landmark에 접근할 수 있으며, 이들은 다시 자신의 블록의 모든 토큰에 접근할 수 있습니다. 이는 전역 + 블록 대각선 어텐션의 혼합과 비슷합니다. 또한, 저자들은 위치 인코딩에 수정을 도입하여 각 블록의 토큰들의 위치에 대해 랜덤 점프를 추가합니다.
데이터 증강은 모델이 이미지의 반사와 같은 추가적인 설정에 일반화될 수 있도록 하는 데 사용되었습니다 [20]. 우리는 Transformer의 위치 정보에 증강을 적용하여 더 긴 문맥에 대해 외삽할 수 있도록 제안합니다. 표준적인 위치 인코딩에서는 토큰마다 위치가 1씩 증가하여 입력의 길이인 T를 기준으로 토큰에 1부터 ℓseq까지의 위치가 할당됩니다. 특히, 입력의 길이인 T를 기준으로 1부터 T까지 위치를 할당하는 대신, 우리는 landmark 토큰마다 1부터 pjump 사이의 랜덤 정수로 모든 후속 토큰들의 위치를 증가시킵니다. 이러한 증가를 위치 점프라고 합니다. pjump = 1인 경우에는 증강이 적용되지 않고 표준 위치가 복구됩니다.
증강을 사용하면 모델이 더 긴 문맥을 활용할 수 있게 됩니다. 이는 문맥의 길이를 증가시키면 perplexity가 감소하는 것으로 나타납니다. 이는 모델의 외삽 능력의 이론적 추정치에 가까운 1400개의 토큰에 도달하기 전까지 감소하는 경향을 보입니다. 반면에 표준 모델은 1024개의 토큰에 도달하기 전에 감소하는 경향을 보입니다.
어떤 면에서는 이는 Tao et al.의 무작위 패딩과 다소 유사합니다.
Intermission
계속하기 전에, 우리는 눈에 띄는 질문에 대해 다루어야 합니다. 왜 우리는 fine-tuning 동안 문맥 길이를 확장하는 문맥에서 길이 추정에 대해 이야기하고 있는 걸까요? 이 질문에 답하기 위해서는 먼저 다음 질문에 대답해야 합니다. 왜 시퀀스 길이 L로 사전 훈련하는 것은 쉽지만, 시퀀스 길이 2L로 순진하게 fine-tuning하는 것은 어려울까요? 사실, fine-tuning에서 확장된 문맥 길이에 대한 길이 추정 문제로 볼 수 있습니다.
Anil et al.은 EOS 토큰의 편향된 어텐션 분포에 대한 효과를 제어하기 위해 fine-tuned LaMDA 모델에 의존했습니다.
입력 비트 문자열과 스크래치패드 내용을 더미 패딩 토큰으로 채워서 토큰 수를 동일하게 만들었습니다. 또한, 입력과 스크래치패드 타겟을 왼쪽과 오른쪽에 동일한 수의 패딩 토큰으로 보강하여 순차적인 스크래치패드 전략을 실행할 때 관련 비트가 동일한 T5 위치 편향 bin에 대응하도록 했습니다.
사전 훈련된 모델에서 EOS 토큰의 효과를 제어하는 데 이것이 충분한 것인지 정말 그런지요?
Potential Solutions
어텐션 계산 변경하기
Chiang & Cholak 2022은 개선된 길이 일반화를 위한 간단한 기여를 제안합니다 - 입력 시퀀스의 길이인 n에 대해 어텐션을 log(n)으로 스케일링합니다. (사전 훈련 길이가 기준이 되어야 한다고 믿습니다?)
Hahn의 보조정리에 따라, 우리가 구성한 transformer는 입력 길이가 증가함에 따라 교차 엔트로피가 1비트(즉, 무작위 추측보다 조금 더 나은)에 근접하도록 합니다. 하지만 우리는 레이어 정규화를 추가함으로써, 교차 엔트로피를 문자열 길이와 독립적으로 0에 아주 가깝게 만들 수 있다는 것을 보여줍니다 (§4). 실제로, Bhattamishra et al. (2020a)와 마찬가지로 transformers는 PARITY를 학습할 수 없습니다. 더 놀랍게도, FIRST를 학습할 때, transformers는 더 짧은 문자열에서 더 긴 문자열로 일반화하는 데 어려움을 겪을 수 있습니다. 이것은 Hahn의 보조정리의 논리적 결과는 아니지만, Hahn의 보조정리가 예측하는 행동의 결과입니다. 다행히도, 이 문제는 어텐션 로짓을 log 𝑛으로 곱하는 간단한 수정을 통해 해결될 수 있습니다. 이 수정은 기계 번역에서도 길이 일반화를 개선시킵니다 (§5).
Shen et al. 2023은 어텐션 방정식에서 표준 softmax를 ReLU로 대체하는 것을 제안합니다. 이렇게 하면 긴 시퀀스 길이에 대한 출력 안정화가 개선될 것입니다.
그들은 softmax가 충분히 큰 행렬에서 발생하는 점수의 불안정화로 인해 ReLU보다 긴 시퀀스에서 성능이 떨어진다는 것을 발견했습니다.
충분히 큰 행렬에서 발생하는 점수의 불안정화로 인해, softmax는 긴 시퀀스에서 ReLU보다 성능이 떨어짐을 발견했습니다.
키-값 슬롯의 총 수를 변경함으로써, 슬롯의 수가 더 많을 때 ReLU가 Softmax보다 더 나은 성능을 발휘함을 발견했습니다. 우리는 모든 활성화 중 상위 점수의 비율을 계산하여 이유를 탐구하고, 활성화 가중치가 소수의 슬롯에 고도로 집중되어 다른 슬롯의 문맥 정보를 활용하기에 부족하다는 사실을 발견했습니다. 반면 ReLU는 이 문제를 완화할 수 있습니다. 값 슬롯의 수가 많은 경우 ReLU의 우수한 성능을 고려하여 Softmax가 긴 시퀀스를 모델링하는 데 어려움을 겪을 수 있는 SAN에서 ReLU의 성능을 탐색합니다 (Sun et al., 2022). 불행히도, Softmax를 직접 ReLU로 교체하면 수렴하지 않습니다. 이 문제를 해결하기 위해 이론적 및 실험적 분석을 통해 입력 시퀀스의 길이에 따라 ReLU 활성화의 분산이 증가하고, 동적 분산이 불안정한 학습 과정을 야기한다는 사실을 발견했습니다. 따라서 분산 감소 요소와 정규화 손실 함수를 도입하여 이 문제를 해결합니다. 결과적으로, 긴 입력 시퀀스를 처리할 때 Softmax보다 더 나은 성능을 발휘하는 self-attention에서 ReLU를 활용할 수 있게 되었습니다.
임의 위치 인코딩
나는 Ruoss et al. 2023의 이 논문을 우연히 발견했는데, 이들은 새로운 인코딩 체계를 사용하여, 외삽 능력을 +10%에서 +50%까지 향상시킬 수 있다고 주장합니다. 재미있게도, 나는 이 논문을 이전에 본 적이 있었는데, 적어도 익명화된 버전을 봤고, "임의 위치 인코딩 체계"라는 단어를 보고 "RoPE와 호환되는 것이 필요하다!"고 생각하며 무시했던 것 같습니다.
트랜스포머는 고정된 문맥 길이의 작업에서 인상적인 일반화 능력을 갖고 있습니다. 그러나 문자열 복제와 같은 보다 간단한 작업에서도 임의 길이의 시퀀스에 대해 일반화할 수 없습니다. 또한, 더 긴 시퀀스에서 전역 어텐션 메커니즘의 이차 계산 복잡성으로 인해 단순히 더 긴 시퀀스에서 훈련하는 것은 비효율적입니다. 이 논문에서는 이 실패 모드가 긴 시퀀스에 대해 위치 인코딩이 분포 범위를 벗어나기 때문임을 보여주며, 이 문제를 극복할 수 있는 새로운 종류의 위치 인코딩을 소개합니다. 구체적으로, 우리의 임의 위치 인코딩 체계는 더 긴 시퀀스의 위치를 모사하고, 순서대로 선택된 부분 집합을 시퀀스의 길이에 맞추기 위해 임의로 선택합니다. 15개의 알고리즘적 추론 작업을 통한 대규모 경험적 평가 결과, 우리의 방법을 사용하면 트랜스포머가 보지 못한 길이의 시퀀스에 일반화할 수 있게 되며 (평균 테스트 정확도가 12.0% 증가함), 이를 보여줍니다.
작성 시점에는 논문에서 언급한 코드가 제공된 링크인 https://github.com/deepmind/randomized_positional_encodings 에서 사용할 수 없습니다. (2023년 6월 23일 현재 코드가 있습니다.) 이는 완전히 새로운 체계인 것 같습니다. 그러나 더 자세히 살펴보면, 이 기술은 사소하므로 몇 줄의 코드로 구현할 수 있습니다:
[...]
우리의 임의 위치 인코딩 체계를 적용할 때, 우리는 각 시퀀스마다 개별적으로가 아닌 일괄 처리당 확장된 위치만 일괄적으로 서브샘플링합니다. sin/cos(Vaswani et al., 2017), 학습된(Gehring et al., 2017) 및 RoPE 인코딩(Su et al., 2021)의 경우, 위에서 설명한대로 우리의 방법을 적용하고, 즉 원래 토큰 위치를 샘플링된 대응 위치로 직접 대체합니다.
참고로, 여기에는 RoPE의 내가 만든 단순한 구현이 있습니다. 손실은 수렴했지만 동작에 개선 사항을 눈치채지 못했는데, 아마 잘못된 것일 수도 있습니다:
말했듯이: 몇 줄의 코드입니다.
BERT 기반 모델에 대해 미약한 이득을 가져온 Tao et al.의 제안된 솔루션을 기억하십니까?
우리의 예비 연구에서 보여주었듯이, 우리는 짧은 문맥의 인스턴스로 모델을 훈련할 때, 앞쪽 위치의 임베딩이 뒷쪽 위치보다 훨씬 많은 횟수로 업데이트될 수 있다는 것을 알 수 있습니다. 따라서 전체 위치 범위에 대해 업데이트 횟수를 균형있게 조정하는 것이 직관적입니다. 즉, 앞쪽 위치 임베딩의 업데이트 횟수를 줄이고, 뒷쪽 위치에 대해 더 많은 업데이트를 재할당하는 것입니다.
PLM(Pre-trained Language Model)을 추출 기계독해(QA; Question Answering)를 위해 미세 조정하는 경우, 패딩 토큰의 위치 임베딩만 업데이트합니다. 패딩 토큰은 항상 전체 입력 시퀀스의 뒷부분에 위치하므로, 절대 위치 임베딩 방식에서는 이러한 뒷부분 위치 임베딩이 종종 무시됩니다. 미세 조정 중 패딩 토큰을 전체 시퀀스에 무작위로 배치할 수 있다면, 거의 모든 위치 임베딩이 업데이트되거나 무시될 가능성이 거의 동일하다고 기대할 수 있습니다. 그러나 질문이나 맥락에 패딩 토큰을 삽입하면 패딩 토큰을 제외한 토큰의 위치 관계가 변경되어 모델 성능에 악영향을 줄 수 있습니다. 따라서, 질문 토큰과 맥락 토큰은 연속된 시퀀스로 유지해야 합니다. 특히, 미세 조정 중에는 패딩 토큰의 일부를 입력 시퀀스의 앞쪽으로 무작위로 이동시키는 것을 제안합니다. 이는 그림 2에서 보여지는 대로 이루어집니다. 그러면 패딩이 아닌 토큰은 입력 시퀀스의 끝쪽으로 밀려나게 되고, 이로써 뒷부분의 위치 임베딩이 업데이트될 수 있습니다.
또한, Mohtashami et al.에서는 점프하는 위치 인코딩이 큰 개선을 가져온다는 참조를 보았습니다. 또한, Liu et al.도 동일한 효과를 관찰하였으며, 유사한 해결책이 제안되었습니다.
이 섹션에서는 Transformer FFLM에서 나타나는 추론 오류의 긴 꼬리를 제거하기 위한 다양한 접근 방식을 조사합니다. 우리는 섹션 4에서 19M 파라미터 모델(L = 6 레이어, d = 512 임베딩 차원, H = 8 헤드)을 대표적인 기준으로 선택하고, 다양한 직접적 및 간접적 개입의 정밀한 평가를 수행합니다.
[...]
이상적인 해결책: 데이터 커버리지 개선. 이전 연구에서 데이터가 성능에 큰 영향을 미친다는 것이 명확해졌습니다(Schuhmann et al., 2022; Eldan and Li, 2023). 따라서, 우리는 가장 당연한 해결책인 다양한 예제에 직접적으로 훈련하여 범용성이 없는 외삽을 제거하는 방법을 검토하기 시작합니다. 실제로, 이 방법이 거의 완벽하게 작동한다는 것을 확인합니다:
희귀 시퀀스에 대한 훈련이 가장 잘 작동합니다. pi = {0.9, 0.98, 0.1}인 FFL 분포의 균일한 혼합으로 훈련하면, 기준 아키텍처는 이러한 3개의 분포 각각에서 오류가 크게 줄어드는 솔루션으로 안정적으로 수렴합니다(Figure 4의 teal violin). 25번 중 6번에서는 오류를 하나도 감지하지 못했습니다.
이는 자기 어텐션을 통해 플립-플롭을 실현할 수 있음(및 보다 일반적으로 RNN과 기능적으로 동일한 바이패스의 존재(Liu et al., 2023))에 대한 이전 연구와 일치하며, (Zhang et al., 2021)에서 유사한 결론을 얻을 수 있습니다.
효과적으로, Ruoss et al.의 접근 방식은 일종의 일반화된 무작위 패딩과 비슷한 개념입니다 - 원하는 문맥 길이 크기로 시퀀스를 확장하여 입력 시퀀스에 패딩을 적용하지만, 위치 인코딩 단계에서만 이루어집니다. BERT 모델의 절대 인코딩 체계에 제약을 받기 때문에 Tao et al.의 구현은 어느 정도 우회되었지만, 아마도 위의 구현에 대한 더 나은 이름은 "확장된 위치 인코딩"이었을 것입니다. 하지만 이것은 제 개인적인 의견일 뿐입니다.
Shifted Positional Encodings
위의 내용을 영감을 받아 "이렇게 잘 작동하는데, 인코딩 단계에서 토큰을 원하는 길이만큼 점진적으로 이동시킬 수는 없을까?"라고 궁금해졌습니다.
다음과 같이,
결과적으로, 이것도 수렴은 하지만 전체적으로 외삽이 실패했습니다. 다시 말하면, 훈련 코드를 어떻게 잘못 작성한 것 같아서 잘 작동할 것 같은데 실패한 것 같습니다.
편집 (2023년 6월 25일): Kiyono et al. 2021은 절대 위치 임베딩에 대한 유사한 방법을 제안하고, 긴 시퀀스에서 APE보다 우수한 성능을 보인다고 보여줍니다.
Log-n Scaling
로그-n 스케일링으로 시도해보았습니다. log(n) 스케일링을 구현한 후, 길이의 일반화가 현저히 개선되었지만 완벽하지는 않았습니다. 적어도 이는 점수 불안정화가 크게 기여한다는 것을 시사하는 것 같습니다. 다음은 LLaMa 13B LoRA (랭크 16)에서
1000개의 샘플 (
500개의 3072 토큰 샘플)로 훈련된 2800개의 컨텍스트 토큰을 가진 시나리오의 연속을 시도한 것입니다. 모델은 약 +320개의 토큰을 생성했습니다:
우리는 여기서 적절한 외삽의 시작을 볼 수 있습니다. 변경 사항 없이는, 모델은 2200개의 토큰 이후에 빠르게 오작동하며, 2600개의 토큰 이후에는 완전한 문장을 이어붙이는 것이 일반적으로 불가능합니다. 확장된 길이에서 충분한 데이터가 없어서 모델이 이러한 위치를 올바르게 처리하는 방법을 가르치지 못하는 것일 수 있습니다. 또는 LoRA를 사용하는 것이 원래 모델 가중치가 아직 동결되어 충돌할 수도 있습니다. 동시에, 우리는 모델이 훈련 데이터 위치를 초과하여 외삽하는 법을 배우기를 원하기 때문에 3072 토큰보다 작은 데이터로 훈련할 수 있기를 원합니다. 하지만 이것은 적어도 모델이 처음부터 다시 훈련하지 않고도 2048을 초과할 수 있다는 것을 절대적으로 확인합니다.
그런 다음, 윈도우 크기가 8192이고 토큰 오프셋이 2048로 설정된 상태에서 시프트된 위치 인코딩을 추가하여 다시 시도합니다. 배치마다 2048씩 오프셋을 증가시킨 후 0으로 돌아갑니다. 처음에는 모델이 제대로 수렴하며, 위치 6143까지 손실이 2.378로 감소합니다 (시작 시 오프셋 0에서 4.36). 그러나 마지막 위치 버킷(6144 ~ 8191)에서 손실이 폭발적으로 증가하기 시작합니다 (49155까지 증가). 8192까지의 종속성을 LoRA 학습을 통해 단독으로 캡처하지 못하는 것 같습니다. 아마도 AdamW와 관련된 문제일 수 있거나 다른 학습률 스케줄을 사용해야 할 수도 있습니다. 그러나 시간이 지나면서 손실이 다시 19232로 감소하기 시작했습니다. 체크포인트에서 훈련을 계속하되 마지막 버킷의 위치를 고정하여 수렴할 수 있는지 확인해 보았지만 실패했습니다.
스케일링 없이 훈련을 반복해보았지만 (단순히 위치를 시프트하는 것이 충분한지 확인하기 위해), 동일한 문제가 발생했습니다 - 수렴하지 않았습니다.
Remember the Basics
이 모든 내용을 읽고 실험한 후에 생각할 수 있는 것은 세상이 뒤집어져 있을 것이라는 것입니다. 사전 훈련된 모델이 외삽(extrapolation)을 할 수 없는 이유는 없어 보이지만, 그렇게 할 수 없습니다. 사전 훈련된 모델은 완벽한 외삽이 가능해야 할 것이라고 생각했지만, 그렇게 할 수 있는 능력이 제한되거나 억제되고 있습니다 - 위치 인코딩 외부의 어떤 요소, 어텐션 자체 외부의 어떤 요소, 아마도 모델 아키텍처 외부의 어떤 요소일 것입니다. 눈에 띄지 않은 어떤 부동 소수점 오류가 있는 걸까요? 아니면 변신자(transformer) 자체의 디자인을 변경하고 모든 것을 다시 RNN으로 전환해야 할까요?
이 모든 것 중에서도 저는 난관을 테스트해보지 않았다는 것을 깨달았습니다: 어텐션 값 자체를 제거해 보는 것; 어텐션 맵을 없애는 것?
Clamping and Masking
먼저, 슬라이딩 윈도우 어텐션 마스크를 구성했습니다. 슬라이딩 윈도우 어텐션은 Longformer에서 소개되었으며 다음과 같은 형태를 가집니다:
다시 말해, 각 토큰은 이전 w개의 토큰만 볼 수 있으며, 여기서 w는 윈도우 크기이며, 이 경우 w = 2입니다. 이제 윈도우 어텐션은 작동해야 합니다. 왜냐하면 Longformer, Landmark Attention, BigBird에서 작동하며, XPos에 대해서도 작동했기 때문입니다 (블록별 인과적 어텐션 형태로 작동하지만, 효과는 대략적으로 관련되어 있습니다. 모두 로컬 어텐션 체계입니다. 그저 윈도우가 더 특이한 것뿐입니다).
그런데, 완성된 모델을 사용하면 사전 훈련된 컨텍스트 한계까지 잘 작동한 다음, 일관성이 급격히 떨어집니다. 이것은 전혀 이치에 맞지 않습니다. 모델이 이전 3개 또는 30개의 토큰만 볼 수 있고, 30개의 토큰을 주면 일관된 텍스트를 생성할 수 있는데, 동일한 효과를 가져올 수 있어야 하는 마스크를 사용했을 때 왜 실패하는 걸까요?
또한, 어텐션 로짓을 클램핑하여 특정 임계값 이하의 값은 사라지도록 했습니다. 하지만 아무런 효과가 없었습니다.
하루 정도 고민하고 더 깊게 파고들면서 Ofir Press의 ALiBi의 구두 발표를 우연히 발견했습니다. 갑자기 뇌가 번쩍하며 모든 것이 이해되기 시작했습니다.
A Bigger Problem
간단히 말해서, Press의 직감은 사전 훈련된 모델이 상대적인 거리나 회전 요소에 따라 위치를 측정하는 방법을 학습하지 않았다는 것입니다. 우리가 희망했던 것과는 달리, 변신자가 가장 잘하는 대로, 토큰과 그 위치의 스케일링 요소를 기억함으로써 바로가기를 배웠습니다.
간단한 예를 들어보겠습니다 - 추가적인 세부 조정 없이 LLaMa 13B. apply_rotary_pos_emb를 변경하여 2048을 넘어가면 위치를 루프하여 사용합니다:
이 한 줄의 코드 변경으로 모델은 3000개의 토큰을 넘어선 상태에서도 일관성을 유지하고 있습니다! 사실, 입력 시퀀스가 2048에 가까울수록 출력이 더 일관성 있어짐을 알 수 있었습니다 - 모듈로가 0일 때는 완전한 헛소리이지만, 2048 토큰마다 완벽한 외삽이 이루어집니다.
그런 다음 블록 반복 위치를 시도해 보았습니다 - 선택한 주파수를 일정한 블록의 위치에 반복하는 것입니다. 예를 들어, L이 사전 훈련된 시퀀스 길이인 경우 [1, 2, 3, 4, 5, 6, 7, 8, 9 ... L] 대신 [1, 1, 1, 1, 2, 2, 2, 2, ... L, L, L, L]를 사용합니다. 이 방법은 모듈로보다 더 잘 작동했습니다. 직관적으로 매우 간단합니다: 모델은 [0, L] 사이의 모든 위치를 알고 있으므로, 그 범위에 맞춰 학습하는 것이 더 좋을 것입니다. 이를 토대로 빈도 단계에 영향을 주는 한 줄의 코드로 변경했습니다:
4로 선택한 이유는 OpenAI가 컨텍스트 크기를 4배씩 증가시키고 있다는 것을 알아챘기 때문입니다. 이것이 그들이 컨텍스트를 증가시키는 방법인지는 말하지 않습니다만, 숫자를 얻은 곳입니다. 이러한 조정된 빈도 척도에서 모델을 세밀하게 튜닝하면 임의의 길이의 외삽이 가능해집니다: 시퀀스가 [0, L] 범위 내에 맞으면 시퀀스 길이에 제한이 없어 보입니다.
Other Takeaways
EOS Token
EOS 토큰은 크게 기여하지 않는 것으로 보입니다. 아니면 그 영향력이 다른 길이 단서에 가려져 있는 것 같습니다 (이는 이미 지시 미세 조정 모델에서 일반적입니다).
Newman 등 (2020)
우리는 -EOS+Oracle 모델이 [SCAN에서] 모든 길이 분할에서 +EOS+Oracle 모델보다 일관되게 우수한 성능을 보여준다는 것을 발견했습니다. 또한 우리는 길이 26까지의 시퀀스를 포함한 후에는 모델이 새로운 템플릿의 충분한 양을 보았기 때문에 나머지 긴 시퀀스에서 정확도 ≥ 80%로 수행한다는 것을 관찰했습니다. 그러나, -EOS 모델이 성공하는 이유는 여전히 의문입니다. +EOS 모델은 비-oracle 설정에서 시퀀스가 실제로 끝나기 전에 끝나야 한다고 예측하여 실패하고, +EOS+Oracle 모델은 최대 훈련 시퀀스 길이를 디코딩한 후에는 마지막 토큰을 반복하거나 관련 없는 토큰을 생성하는 경향이 있어 실패합니다. 그러나 -EOS+Oracle 모델은 필요한 경우에 마지막 몇 개의 토큰을 반복하여 예를 들어 thrice 명령의 마지막 부분을 완료하는 방식으로 성공합니다.
그러나 나중에,
[WMT2009 독일어에서 영어 번역]의 +EOS와 -EOS 모델의 성능은 SCAN과 비교했을 때 거의 차이가 없다는 것을 발견했으며, -EOS 모델이 +EOS 모델보다 더 자주 도메인 밖 설정에서 성능이 우수하다고 할지라도, EOS 토큰을 제거하는 것은 외삽에 도움이 되지 않는다는 결론을 내릴 수 없습니다. [...] EOS 토큰의 존재가 덜 관련이 있는 이유는 양쪽 조건의 모델이 모두 길이에 대한 미묘한 지표를 더 잘 인식하는 것일 가능성이 큽니다.
또한, Chowdhury & Caragea (2023)에서는 다음과 같이 기술합니다.
EOS 문제에 대해: EOS 토큰은 시퀀스의 끝을 나타내기 위해 모델이 생성해야 하는 특수한 마커입니다. 비슷한 맥락에서 일부 이전 작업에서는 오라클 EOS 위치를 기반으로 모델 생성을 종료하거나 예측된 EOS 위치를 기반으로 오라클 시퀀스를 자르는 방식으로 평가를 덜 엄격하게 만들려고 시도해 왔습니다. 우리는 이러한 비표준적인 방법으로 평가를 수정하지 않습니다. 일반적으로 우리는 EOS 예측이 문제가 되지 않는 것으로 보입니다. 인도적 편향이 작업에 적합하다면, 모델은 별도의 EOS 예측 메커니즘을 사용하지 않고 거의 완벽하게 일반화하는 방법을 학습합니다.
Random Padding in other NNs
Yang 등 (2023)은 CNN에서 무작위 패딩이 일관되게 기능 학습을 향상시키는 것을 보여줍니다.
No Positional Encoding
그러나 Lasri 등 (2022)는 마스크된 언어 모델링의 경우 이 방법이 동작하지 않는다는 것을 보여줍니다.
Model Context Overcapacity?
나는 (아마도) @lucidrains가 댓글로 남긴 이 Reddit 글을 찾을 수 있었습니다.
지식의 컨텍스트 길이에는 용량 제한이 있을 수 있다는 사실은 모든 사람들이 알아야 할 중요한 사실입니다. 이 논문에서 탐색한 대로 gpt4는 이러한 제한이 없을 수 있지만, llama와 같은 더 작은 변형은 그렇지 않을 수 있습니다. 또한 해결하려는 작업에 따라 달라집니다. 일부 사람들이 '무한한 컨텍스트'를 제공할 수 있다고 판매하려고 할지라도, 더 많은 연구가 필요합니다... 희망적으로 pytorch 2.0이 그에 이끌게 될 것입니다.
그 논문에 대해 고맙습니다. 언젠가 전에 그 논문을 접했지만 아직 읽지는 않았습니다. 제한은 모델 매개변수의 수인가요, 아니면 임베딩의 크기인가요. 나는 임베딩의 크기가 컨텍스트의 크기에 가장 큰 영향을 미칠 것으로 의심합니다.
네, 효율적인 어텐션 분야에서 문헌은 부족하며 매우 혼재되어 있습니다. 이 논문에서는 질의-키 차원 (d_dot)이라고 주장하지만, 헤드 수에도 의존해야 한다고 생각합니다. 이 주제를 탐구한 다른 논문은 알지 못합니다. 그는 gpt4만큼 잘 작동하지 않을 수도 있다고 하여도, 사람들이 컨텍스트 길이를 늘리고 결과가 그렇게 잘 되지 않을 경우 놀라지 않기를 바랍니다.
하지만, 나는 그 논문을 읽을 때 그렇게 느끼지 않았습니다. 즉, 현재의 아키텍처가 사용자를 2048 시퀀스 길이에만 국한시켜야 한다고 느끼지 않았습니다. 그의 답변에 해당하는 부분이라고 생각합니다.
무한한 연관성을 한정된 크기의 메모리에 계속 추가하는 것은 결국 한계에 도달할 것입니다. 선형 어텐션에서는 정보가 행렬에 저장되고 행렬 곱셈을 사용하여 검색됩니다 (방정식 19 참조). 따라서 각 키가 서로 간섭하지 않도록 하려면 키는 서로 직교해야 합니다. 그렇지 않으면 내적이 하나 이상의 키에 주목하고 값의 선형 조합을 반환할 것입니다. ddot 공간에 키가 포함된 경우, ddot 직교 벡터보다 많은 수의 연관성을 저장할 수 없습니다. 즉, ddot보다 많은 연관성을 저장하면 검색 오류가 발생합니다. 선형 트랜스포머에서 시퀀스의 길이가 ddot보다 길면 모델은 이러한 과잉 용량 영역에 있을 수 있습니다.
4.1 섹션은 선형 트랜스포머가 시퀀스 길이 L이 키의 차원 ddot을 초과할 경우 과도한 용량 상태에 빠질 수 있다는 것을 주장합니다. 과도한 용량 상태에 있을 때 이상적인 메모리 모델은 메모리 내용과 동적으로 상호작용하고 기억하거나 잊을 연관을 선택적으로 결정해야 합니다. 이는 표준 트랜스포머가 연결(concatenation)을 통해 키와 값 벡터의 불변한 쌍을 저장하는 것과는 대조적입니다. 이러한 모델은 실제로 잘 작동하지만, 이전에 습득한 지식을 업데이트할 수 있는 모델의 능력은 많은 문제에 있어 중요하다고 여겨집니다. 따라서 메모리와의 동적 상호작용 관점에서 Eqs. 17의 단순 가산 업데이트 규칙은 최적이 아닐 수 있습니다.
이를 통해 저는 저자들이 위 논문들과 동의할 것이라는 인상을 받았습니다. 게다가, 이 논문은 성능 향상을 위해 모델에 특정 토큰을 무시하도록 가르치는 Anil에서 제안된 핵심 아이디어를 따른다고 인정합니다.
검색에서는 여전히 Softmax가 가장 우수한 성능을 발휘합니다.
Iterative vs. 1-shot feedback
Bueno 등의 연구에서 길이 일반화에 대한 결과를 상기해 보십시오. 더 흥미로운 점은 OpenAI의 GSM8K 논문에서 이 접근 방식의 일부 흔적을 볼 수 있다는 것입니다. 이 논문에서는 토큰 수준의 검증기를 추가함으로써 GSM8K 작업의 성능을 크게 향상시켰습니다. 어떤 의미에서는 마크업 토큰의 사용이 토큰 수준의 검증기와 다소 유사하며, 이는 생성자에게 각 추론 단계 이후에 유용한 신호를 제공하여 후속 단계에 대한 확률을 변경시킵니다. 논문에서 사용된 검증기는 생성자와 별개로 사용되지만, 저자들은 이를 결합할 수 있다고 언급합니다. 아마도 우리는 완전히 별개의 모델이나 심지어 점수가 아니라 단계 완료에서의 명백한 피드백만 필요할지도 모릅니다?
우리는 생성된 솔루션 전체에 대해 단일 스칼라 예측을 조건으로 하는 검증기를 훈련시킬 수도 있고, 솔루션의 각 토큰 이후에 스칼라 예측을 수행하도록 훈련시킬 수도 있습니다. 기본적으로, 우리는 후자를 선택하고, 토큰 이후에 예측을 수행하는 검증기를 훈련시킵니다. 이는 토큰 수준의 가치 함수로 볼 수 있습니다. 우리는 Figure 6a에서 이 두 가지 방법을 비교하였으며, 각각 "solutionlevel"과 "token-level"이라고 라벨을 붙였습니다. 토큰마다 가치 함수를 예측하는 것은 최종 완료만 판단하는 것보다 더 어려우며 노이지한 작업입니다. 그러나 초기에 훈련 속도가 느리더라도, 토큰 수준의 검증기가 결국 솔루션 수준의 검증기보다 뛰어난 성능을 발휘합니다. 게다가, 토큰 수준의 검증기는 훈련 후반에도 계속해서 성능이 향상되는 반면, 솔루션 수준의 검증기는 과적합의 징후를 빨리 보입니다. 우리는 전체 가치 함수가 모델이 최종 정답을 기억하는 것이 아니라 솔루션 내에서 추론을 판단하는 데 유용한 보조 신호를 제공하므로 유용하다고 추측합니다.
아이러니하게도, OpenAI 자체가 Lightman et al. 2023에서 이를 확인하는 것 같습니다.
더 신뢰할 수 있는 모델을 훈련하기 위해 우리는 최종 결과에 대한 피드백을 제공하는 결과 지도 학습(outcome supervision)이나 각 중간 추론 단계에 대한 피드백을 제공하는 과정 지도 학습(process supervision) 중 하나로 전환할 수 있습니다. 신뢰할 수 있는 모델을 훈련하는 것의 중요성과 인간의 피드백 비용의 높음을 고려할 때, 두 가지 방법을 신중하게 비교하는 것이 중요합니다. 최근 연구에서는 이미 이러한 비교를 시작했지만, 아직 많은 질문이 남아 있습니다. 우리는 자체적인 조사를 진행하여, 과제가 어려운 MATH 데이터셋의 문제를 해결하기 위해 과정 지도 학습이 결과 지도 학습보다 우수한 성능을 발휘한다는 것을 발견했습니다. 우리의 과정 지도 모델은 MATH 테스트 세트의 대표적인 하위 집합에서 78%의 문제를 해결합니다. 게다가, 우리는 능동 학습이 과정 지도 학습의 효과를 크게 향상시킨다는 것을 보여줍니다.
Jianlin Su’s Blog
저는 Jianlin Su가 rotary position embedding (RoPE)를 소개한 논문의 주 저자인 Su의 블로그인 kexue.fm을 읽는 것을 강력히 추천합니다. 저는 소개 섹션 때문에 이 블로그 포스트가 조금 재미있다고 생각했습니다.
后者通过随机位置扰动增强对位置信号的鲁棒性,理论上有可能保留全局依赖,但该方法只适用于Encoder模型,不适合于GPT之类的自回归生成模型.
기계 번역: 후자는 위치 신호에 대한 랜덤 위치 섭동을 통해 위치 신호의 견고성을 향상시키며, 이론적으로 전역 의존성을 보존할 수 있지만, 이 방법은 인코더 모델에만 적용 가능하며 GPT와 같은 자기 회귀 생성 모델에는 적합하지 않습니다.
1개월도 채 되지 않은 시간에 Ruoss 등이 무작위 위치 인코딩을 제안했습니다(RoPE에 적용 가능). 나중에 Su가 이에 대해 블로그 포스트를 작성하고 그들의 생각을 제시하기를 바랍니다. (2023년 6월 23일 현재, 그가 실제로 그에 대한 응답을 작성했음을 보았습니다: https://kexue.fm/archives/9603)
Su 2023은 windowed-attention + RoPE를 사용하는 방법을 제안하지만, 이는 첫 번째 L-1 레이어에만 적용됩니다. L번째 레이어는 표준 "full" attention과 RoPE를 사용하지 않습니다(모델이 외삽된 길이에서 훈련되지 않았기 때문에) softmax 가중치에 log(n) 스케일링 요소가 있습니다. 결과는 Hua et al. 2022의 Gated Attention Unit을 사용하여 시연되었지만, 어떤 어텐션 변형이든 사용할 수 있습니다. 추가로, 창 크기는 16이고, 다음과 같은 주의점이 있습니다:
만약 Window Attention이 RoPE를 추가하지 않으면, 보간 및 외삽 효과가 감소합니다.
Full Attention에 RoPE를 추가하면, 외삽 효과가 감소합니다.
Full Attention이 log(n) 요소를 사용하지 않으면, 외삽 효과가 감소합니다.
Window Attention을 완전히 사용하면, 보간 및 외삽 효과가 감소합니다.
Layer Window Attention을 L-2 레이어에서 중지하고 2개의 Full Attention 레이어로 변경하면, 외삽 효과가 감소합니다.
w=32 (현재 (w−1)(L−1)>N), 외삽 효과가 감소합니다.
또한, Su는 Hybrid Window Full Attention이 GAU에서만 테스트되었음을 언급했지만, 저는 기록을 위해 어떤 경우에도 언급하려고 합니다. 추가적인 테스트가 여전히 필요합니다.**
Davis Blalock’s Newsletter
매주 Davis Blalock은 그 주의 arXiv 논문들을 검토하며, 그의 요약은 흥미로운 논문들을 강조하는 데 매우 도움이 되었습니다. 무작위 위치 인코딩에 대해 더 탐구하기 위해 더 많은 정보를 찾아보고 있는 도중에 이 존재를 알게 되었지만, 한 번 알게 되면 더 많은 미리보기를 기대할 수 있습니다.
ReLU over softmax
ReLU 변환에 대해서는 동일한 문제가 있음을 관찰했습니다. 즉, 모델이 수렴하지 않습니다. 직관을 키우기 위해 논문을 더 읽어보는 것을 권장합니다.
그러나 여기에는 여전히 활성화 함수 선택에 차이가 있습니다. FFN은 일반적으로 ReLU를 채택하고 키-값 메모리는 Softmax를 사용하는데, 이는 다른 모델 성능을 가져올 수 있습니다. 본 논문에서는 FFN과 키-값 메모리 간의 연결을 연구함으로써 ReLU와 Softmax의 관계를 탐구합니다.
[...]
우리는 Softmax에서의 지수 정규화가 이러한 이유일 것이라 추측합니다. 구체적으로, Softmax는 요소들에 지수 정규화를 제공하며 ReLU는 그렇지 않기 때문에, Softmax는 요소들에 대해 과도한 집중된 분포를 제공하게 되는데, 이는 몇 개의 요소만 강조되고 대부분의 가중치를 차지합니다. 그런 다음 메모리 크기가 큰 경우, Softmax는 대부분의 값을 무시하고 일부 값만 사용하게 되는데, 이는 메모리의 크기가 크게 이점을 살리지 못합니다. 반면, ReLU에서는 요소들 간의 경쟁이 없기 때문에 더 많은 지식을 통합할 수 있습니다. 이 문제를 완화하기 위한 직관적인 방법은 Softmax의 출력 분포를 평평하게 만들기 위해 온도를 높이는 것입니다. 하지만 우리는 실험에서 그것이 거의 효과가 없음을 경험적으로 발견했습니다.
XPos와 같은 날에 발표된 Sandwich!
† 나는 내 문맥을 의미했고, 그 부분은 실제로는 비교적 쉬웠습니다.
*나를 Su의 팬이라고 부르세요, 신경 안 써요 :)
Citations
업데이트: 2023년 6월 25일
명시적인 인용 섹션은 추가하지 않았지만, 내가 우연히 발견한 영향력 있는 논문들과 관련성을 제공하기 위해 여기에 인용문을 제공합니다. 모든 뛰어난 연구자들에게 감사드립니다. 다양한 통찰력이 없었다면 이것은 가능하지 않았을 것입니다 :)
여기에 언급하지 않은 관련 작업이 있다면, 논문의 링크와 그의 관련성을 kaiokendev1@gmail.com으로 보내주시면 기쁘게 추가할 것입니다. 모든 주제의 논문을 읽은 것은 불가능했고, 이 해결책은 작은 선택에 영향을 받았기 때문에 양해해 주세요.
The Problem of Length Generalization
이 섹션은 Transformer 모델이 길이 외삽을 잘 수행하지 못하는 문제와 관련된 논문들을 인용합니다.
Anil et al. 2022는 일반적인 길이 일반화 병행증상을 해결하지 못하는 몇 가지 세부 조정 접근법을 보여줍니다. 그들은 포함된 문제의 여러 방식을 연구하고 결정합니다.
Chi et al. 2022는 ALiBi를 분석하고, 모델의 수용 영역을 제한함으로써 얻은 이점을 강조하는 윈도우 어텐션과의 관련성을 찾았습니다. 그들은 이러한 학습을 활용하여 SANDWICH를 만들었습니다.
Tao et al. 2023은 뒷부분 위치 임베딩이 앞부분 위치 임베딩보다 덜 자주 업데이트된다는 것을 발견했습니다. 그들은 BERT 모델의 길이 일반화를 향상시키기 위해 시퀀스의 여러 패치에 무작위 패딩을 추가하는 것을 제안합니다.
Press et al. 2021은 Transformer 모델이 RoPE와 함께 훈련 중에 본 위치 임베딩에 과적합될 수 있다고 제안합니다. 그들은 ALiBi를 제안하여 QK 점곱에 감쇠 토큰 편향을 추가하여 장거리 시퀀스와 외삽에 도움이 되는 고정된 기울기를 추가합니다.
Liu et al. 2023은 대형 언어 모델이 장거리 언어 모델링 작업에서 치명적인 결함을 보인다는 것을 관찰했습니다. 그들은 수천 개의 모델 아키텍처를 실험했습니다. 그들이 언급한 잠재적인 원인 중 하나는 저수준 어텐션 헤드 로짓의 소량한 변동입니다.
Length Generalization Solutions
다음 섹션은 길이 일반화에 대한 해결책을 제안하는 논문을 인용합니다.
Chi et al. 2022는 위의 섹션에서 인용되었습니다.
Tao et al. 2023은 위의 섹션에서 인용되었습니다.
Press et al. 2021은 위의 섹션에서 인용되었습니다.
Bueno et al. 2022는 마크업 토큰을 추가함으로써 모델이 긴 시퀀스에서 자신의 사고 과정을 추적할 수 있도록 도와주는 것을 보여줍니다.
Mohtashami et al. 2023은 랜드마크 토큰, 수정된 그루핑된 소프트맥스 어텐션 및 위치 점프를 사용하여 LLaMa 모델을 32,000개의 토큰으로 세밀하게 조정합니다.
Permutated Positional Embeddings
이 섹션은 위치 임베딩을 이동하거나 전치하는 기술을 활용하여 길이 추론을 달성하는 논문을 인용합니다.
Ruoss et al. 2023은 임의의 순차적인 시퀀스(필수적으로 연속되지 않음)에 위치 ID를 재할당하여 실제 시퀀스 길이보다 긴 훈련 시퀀스를 모방하는 랜덤 위치 인코딩을 제안합니다.
Likhomanenko et al. 2021은 CAPE(연속 증가된 위치 임베딩)을 제안하여 절대 위치 임베딩에 임의의 전역 오프셋과 스케일 및 지역 오프셋을 적용하여 상대적인 정보를 모델에 가르치는 것을 제안합니다.
Kiyono et al. 2021은 SHAPE(이동된 절대 위치 임베딩)을 제안하여 훈련 중에 위치를 임의로 이동하여 위치에 대한 과적합을 방지하고 상대적인 정보의 학습을 촉진합니다.
Attention Calculations
다음 논문들은 어텐션 계산을 변경함으로써 길이 추론에 미치는 영향에 대해 다룹니다.
Chiang and Cholak 2022는 소프트맥스 어텐션 로짓을 log(n)으로 스케일링함으로써 FIRST 작업에서 더 나은 추론을 달성한다고 언급합니다.
Shen et al. 2023은 소프트맥스 대신 ReLU를 사용하여 포화 문제를 해결하고 키-값이 많은 경우 더 나은 분산을 제공하는 것을 제안합니다.
'Natural Language Processing' 카테고리의 다른 글
The Path to Achieve Ultra-Low Inference Latency With LLaMA 65B on PyTorch/XLA (0) | 2023.07.06 |
---|---|
Textbooks Are All You Need (0) | 2023.07.02 |
Text Embedding + t-SNE Visualization (0) | 2023.06.22 |
[Langchain] paper-translator (0) | 2023.06.16 |
LIMA : Less is More for Alignment (0) | 2023.06.13 |