English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

유클리드 거리로 표현된 의미적 거리

고차원 벡터 공간

ANDREA-120M의 8449-토큰 어휘에 속하는 모든 토큰은 R^768의 한 점으로 매핑됩니다. 토큰 임베딩 행렬의 형태는 8449 x 768입니다: 8449개의 행은 각 어휘 토큰에 해당하고, 768개의 열은 각 임베딩 차원에 해당합니다.


Geometry of ANDREA Panels


이 세 가지 성질이 벡터 공간을 만든다

1. 덧셈. v_a + v_b는 R^768에 속한다. 두 임베딩의 합은 유효한 벡터이다.

2. 스칼라 곱. 임의의 실수 alpha에 대해 alpha * v는 R^768에 속한다. 같은 방향으로 늘리거나 줄일 수 있다.

3. 선형성. alpha v_a + beta v_b는 R^768에 속한다. 선형 결합은 항상 공간 안에 머무른다.


이 성질들은 거리, 각도, 투영, 기저, 직교성과 같은 기하학적 도구를 제공한다.


의미적 유사도로서의 거리

두 임베딩의 코사인 유사도는 두 벡터 사이의 각도를 측정합니다: cos(theta) = (v_a . v_b) / (||v_a|| * ||v_b||). 범위: -1 (반대 방향) ~ +1 (평행).


훈련 후 관찰되는 경험적 패턴: 유사한 문맥을 가진 토큰들은 높은 코사인 유사도를 가진 임베딩을 생성합니다. ANDREA-120M은 parakeetmonkey를 가까운 위치에 배치합니다 (둘 다 생물학적이며, 종이며, 현존 또는 멸종 범주). Fouriertransform도 가까이 배치합니다 (신호 처리 문맥). 반면 parakeetFourier는 멀리 배치합니다 (도메인 간 직교성).


왜 R^768이 아닌 R^384인가

ANDREA-12M은 d_model = 384를 사용했습니다. ANDREA-120M은 이를 768로 두 배로 늘렸습니다. 이 두 배 증가는 중요합니다: 384차원 공간은 사용할 수 있는 '각도'가 적어 도메인 간 모호성 해소가 어려워집니다. 용량을 두 배로 늘리면 모델이 bank (강)와 bank (금융)를 임베딩 공간의 서로 다른 영역으로 분리할 수 있는 여유를 확보할 수 있습니다.


임베딩 업데이트를 벡터 변환으로 보기

각 경사 하강 단계는 v_token에 delta_v를 더합니다. 기하학적으로: R^768 공간에서 작은 이동이 각 토큰의 위치를 손실을 줄이는 근방으로 밀어냅니다. 200K 스텝 동안 모든 토큰은 무작위 초기화 위치에서 학습된 위치로 이동합니다.

거리 계산하기

학습된 세 개의 임베딩 (산술을 위해 R^3로 단순화):


- v(parakeet) = (1.0, 0.5, 0.0)

- v(monkey) = (1.2, 0.3, 0.1)

- v(Fourier) = (0.0, 0.0, 1.5)

(a) ||v(parakeet) - v(monkey)||의 유클리드 거리를 계산하세요. (b) ||v(parakeet) - v(Fourier)||의 유클리드 거리를 계산하세요. (c) 어떤 두 토큰이 함께 클러스터링되는지 밝히고, 실제 숫자를 인용하여 기하학적 이유를 설명하세요.

Projection onto a Query Subspace

What Attention Computes

For a token at position t, attention computes:


softmax(Q K^T / sqrt(d_k)) V [BLOCK_TYPE SECTION/STEP]


여기서 Q는 쿼리(현재 토큰의 질문), K는 키(이전 모든 토큰의 식별자), V는 값(이전 모든 토큰의 내용)입니다. 출력은 쿼리가 각 키와 얼마나 관련 있는지에 따라 가중치를 부여한 V의 혼합입니다. [BLOCK_TYPE SECTION/STEP]


기하학적 해석
[BLOCK_TYPE SECTION/STEP]

Think of K as a list of vectors in R^d_k. Each row is one past token's key. Q is one vector in R^d_k: this token's question.

K를 R^d_k 공간의 벡터 목록으로 생각하세요. 각 행은 하나의 이전 토큰의 키입니다. Q는 R^d_k 공간의 하나의 벡터입니다: 현재 토큰의 질문입니다.

Q K^T는 모든 키를 Q에 투영합니다. 내적 q · k_i는 k_i가 q의 방향으로 얼마나 정렬되어 있는지를 측정합니다. 투영 길이가 길면 키가 쿼리와 강하게 관련되어 있음을 의미하고, 투영 길이가 짧으면 키가 쿼리와 거의 관련이 없음을 의미합니다.


softmax는 투영값들을 합이 1이 되도록 정규화하여 가중치로 변환합니다. V의 가중합은 단일 벡터로, 현재 쿼리와의 관련성에 따라 가중치가 부여된 과거 콘텐츠의 혼합입니다.


Multi-Head Attention as Multi-Subspace Projection

ANDREA-120M은 12개의 어텐션 헤드를 사용합니다. d_model = 768; d_k = 768 / 12 = 64. 각 헤드는 R^768의 서로 다른 64차원 부분공간으로 투영합니다. 12개의 헤드는 동일한 시퀀스에 대해 12개의 독립적인 관점을 제공합니다. 한 헤드는 문법적 역할을 추적하고, 다른 헤드는 의미적 유사성을, 또 다른 헤드는 장거리 참조를 추적할 수 있습니다.


기하학적으로: 각 헤드는 64차원 방향 부분공간(‘창’)을 정의하며, 이를 통해 과거를 관찰합니다.


인과 마스크

디코더 전용 모델은 인과 마스크를 추가합니다: 대각선 위의 모든 Q K^T 항목은 소프트맥스 전에 -무한대로 설정됩니다. 기하학적으로: 미래 토큰에 대한 투영은 가중치 0을 받습니다. 토큰 t는 토큰 0부터 t까지만 볼 수 있습니다.


이것이 중요한 이유: 학습과 추론이 대칭이 됩니다. 동일한 순전파, 동일한 마스크된 투영, 별도의 생성 로직이 필요 없습니다.


sqrt(d_k) 스케일링

스케일링이 없으면 내적 값이 d_k에 따라 커집니다. 큰 내적 값은 소프트맥스를 원-핫 영역으로 밀어냅니다(하나의 가중치가 1에 가깝고 나머지는 0에 가까움). sqrt(d_k)로 나누면 투영값을 단위 분산 규모로 유지하여, 다양한 d_k 범위에서 소프트맥스의 선명도를 보존합니다.


기하학적으로: sqrt(d_k)는 투영 벡터의 길이를 정규화하여 softmax가 부분공간 차원에 관계없이 비교 가능한 크기를 보게 합니다.

투영 읽기

R^4에서의 세 개의 키와 하나의 쿼리 (산술을 위해 단순화):


- q = (1, 0, 1, 0)

- k_1 = (1, 0, 0, 0) [과거 토큰 1]

- k_2 = (0, 0, 1, 0) [과거 토큰 2]

- k_3 = (0, 1, 0, 1) [past token 3]


d_k = 4, 따라서 sqrt(d_k) = 2.

(a) i = 1, 2, 3에 대해 q · k_i를 계산하세요 (내적). (b) 각 값을 sqrt(d_k) = 2로 나누어 스케일된 점수를 구하세요. (c) softmax를 명시적으로 계산하지 않고, 어느 키가 가장 큰 어텐션 가중치를 받을지 밝히고 기하학적 이유를 설명하세요.

Gradient Descent as Path on Terrain

1억 2천만 + 1차원의 표면

ANDREA-120M의 모든 가중치 구성은 R^120,000,000 공간의 한 점입니다. 손실 함수 L(w)는 각 점을 실수로 매핑합니다: 해당 구성에서의 학습 손실. 이 손실 값들이 모여 파라미터 공간 위에 (120M+1)차원의 표면을 형성합니다.


직접 시각화하는 것은 기하학적으로 불가능합니다. 개념적으로: 지형. 산(높은 손실), 계곡(낮은 손실), 안장점, 평원, 능선, 분지.


기울기로서의 국소 경사

grad L(w)는 R^120M 공간의 벡터로, L이 가장 가파르게 증가하는 방향을 가리킵니다. 이를 반전하면: -grad L(w)는 가장 가파르게 내려가는 방향을 가리킵니다.


AdamW 한 스텝은 m과 v에서 얻은 적응형 스케일링을 적용해 w를 음의 그래디언트 방향으로 살짝 이동시킵니다. 기하학적으로: 표면을 따라 내리막으로 가는 아주 작은 스텝이며, 스텝 크기는 lr로 제어됩니다.


v1의 나쁜 분지

v1은 무작위로 초기화된 가중치에서 LR = peak (0.0003)로 첫 스텝을 밟았습니다. 기하학적 그림: w_0는 곡률이 극심하게 변하는 영역(무작위 초기화는 많은 방향에서 높은 곡률을 가짐)에 위치하며, peak-LR 스텝은 잘못된 분지에 착륙합니다. 이후 스텝들은 그곳에서 벗어날 수 없습니다. 모델은 'region region region'을 생성하는 데 갇히게 되는데, 이는 모델이 착륙한 위치에서 찾을 수 있는 가장 낮은 손실을 가진 분지이기 때문입니다.


v2의 워밍업 경로

v2는 LR을 0에서 peak까지 점진적으로 올리며 2000번의 작은 스텝을 수행합니다. 기하학적 그림: w_0는 먼저 곡률이 낮은 부드러운 방향을 따라 천천히 이동합니다. 2000 스텝이 지나면 w는 더 탐색하기 쉬운 영역으로 이동해 있으며, peak LR이 과도하게 뛰어넘지 않고 더 나은 분지로 이끌 수 있게 됩니다.


Warmup은 기하학적으로 인식된 초기화 프로토콜입니다: 모델이 강하게 밀어붙이기 전에 안전한 로컬 이웃을 찾도록 합니다.


넓은 분지 vs 좁은 분지

스텝 112K에서 ANDREA-120M은 분지 안에 위치합니다. 질문: 이 분지의 너비는 얼마나 될까요?


넓은 분지 = 많은 인접 가중치 구성도 낮은 학습 손실을 달성합니다. 일반화 성능이 좋은 경향이 있습니다 (분지 너비는 테스트 성능을 예측합니다; PAC-Bayes 수업, 3장 참조).


좁은 분지 = 가중치의 얇은 집합만이 낮은 손실을 달성합니다. 일반화 성능이 저하되는 경향이 있습니다.


v3 polish at step 112,619는 모델을 표면을 따라 (재설정 없이) curriculum perturbation을 통해 더 넓은 분지로 이동시켰습니다: 손실 함수를 변경하고 (다른 bandit, 다른 학습 혼합), SGD가 새로운 정책 아래에서 인근의 평평한 영역을 찾도록 했습니다.


좀비 절벽

step 112,080에서의 비정상적인 손실 0.13은 절벽(CLIFF)이었습니다: 특정 입력 패턴(암기된 repo-docs 부분 문자열)이 거의 0에 가까운 손실을 내는 날카롭고 좁은 영역이었습니다. 모델은 더 넓은 분지에서 좁은 협곡으로 떨어졌습니다. Polish-pivot의 repo-docs hard-exclusion은 그 협곡을 메워 SGD가 더 이상 찾을 수 없게 만들었습니다.

지형 읽기

polish pivot 이후의 세 가지 가중치 구성. (a) 구성 A: 학습 손실 2.0, 거리 0.1 내의 작은 섭동 중 95%가 여전히 손실 < 2.2를 생성. (b) 구성 B: 학습 손실 2.0, 거리 0.1 내의 작은 섭동 중 5%만이 손실 < 2.2를 생성. (c) 구성 C: 특정 입력에 대한 학습 손실 0.13이지만 다른 입력 전체 평균 손실 8.0. 각 구성을 WIDE BASIN, NARROW BASIN, 또는 CLIFF로 분류하고, 한 문장으로 기하학적 이유를 설명하세요.

Curriculum Mix as a Walk on a Discrete Simplex

심플렉스란 무엇인가

n차원 심플렉스(특히 표준 (n-1)-심플렉스)는 각 w_i >= 0이고 sum(w_i) = 1인 n-튜플 (w_1, w_2, ..., w_n)의 집합입니다.


n = 2일 때: (1, 0)에서 (0, 1)까지의 선분. n = 3일 때: 꼭짓점 (1, 0, 0), (0, 1, 0), (0, 0, 1)을 가진 삼각형. n = 16일 때 (ANDREA의 전체 소스 목록): R^16 안에 놓인 15차원 심플렉스.


밴딧 가중치를 심플렉스 좌표로

ANDREA의 밴딧은 각 단계마다 데이터 소스에 대한 가중치 벡터 w를 생성합니다. 각 성분 w_i는 소스 i를 샘플링할 확률입니다. 확률은 음수가 아니며 합이 1이므로, 모든 가중치 벡터는 심플렉스 위에 존재합니다.


꼭짓점 = 순수 전략(단일 소스만 샘플링). 내부 = 혼합 전략(여러 소스를 각각 양의 확률로 샘플링). 모서리 = 두 소스의 혼합만.


제한 영역으로서의 소스 하한

ANDREA는 최소 가중치를 부과합니다: hermes3-general은 하한 0.7 (후처리 후)입니다. 이는 심플렉스 내의 하위 영역을 잘라냅니다: w_hermes3-general >= 0.7인 가중치 벡터만 도달 가능합니다.


기하학적으로: 하한은 심플렉스를 초평면으로 절단합니다. 도달 가능한 영역은 모든 하한 초평면의 올바른 쪽에 있는 심플렉스의 일부입니다.


상한(Caps) – 또 다른 제한

ANDREA는 최대 가중치도 부과합니다: dictionary는 상한 0.25 (후처리 후)입니다. 각 상한은 또 다른 초평면이며, 도달 가능한 영역은 모든 상한 초평면의 올바른 쪽에 있어야 합니다.


소스를 완전히 배제하는 것(상한 = 0.0)은 가장 강력한 상한입니다: 해당 좌표가 0으로 고정되어 유효 심플렉스의 차원이 1만큼 줄어듭니다.


위상 전이를 심플렉스 산책으로 보기

모든 위상 전이(7~42스텝마다)는 새로운 가중치 벡터를 생성합니다. 각 새로운 벡터는 심플렉스 위의 한 점이 됩니다. 200K 스텝 동안 밴딧은 심플렉스의 도달 가능 영역을 따라 긴 경로를 그립니다.


무작위 위상 = 도달 가능 영역 내에서 균등 무작위 점으로 순간 이동.

밴딧 제어 위상 = 바닥값과 상한값을 고려하여 UCB 최적 정점 쪽으로 한 걸음 이동.

Polish 피벗 = 도달 가능 영역을 다시 그린 뒤(새로운 바닥값, 새로운 상한값, 일부 소스 제외), 새로운 시작점에서 산책을 계속합니다.


왜 정점(Vertices)이 위험한가

순수 소스 단계(하나의 w_i = 1, 나머지 = 0)는 심플렉스 정점에 위치합니다. 다양성은 0입니다. 모델은 하나의 분포만으로 학습합니다. v1의 붕괴는 bandit이 repo-docs 정점 근처에 머무른 것과 부분적으로 관련이 있습니다. 샘플들은 해당 소스의 분포만을 재현했습니다.


플로어(floor)는 정점 캠핑을 방지합니다: 0.7의 플로어는 '어떤 소스의 가중치도 0.7 이하로 떨어지지 않게 하라'(또는 우선순위 소스에 대해 설정된 플로어 값)를 의미합니다.

도달 가능한 영역 걷기

세 가지 소스: hermes3-general (H), gutenberg (G), dictionary (D). 제약 조건: H 플로어 = 0.5, D 캡 = 0.25. (암묵적: 모든 가중치 ≥ 0, 합이 1, 기타 제약 없음.)

(a) bandit이 (H=1.0, G=0, D=0)을 선택할 수 있을까요? 그 이유는 무엇인가요? (b) (H=0.5, G=0.5, D=0)을 선택할 수 있을까요? (c) (H=0.5, G=0.25, D=0.25)을 선택할 수 있을까요? (d) 이 3-소스 심플렉스에서 도달 가능한 영역이 기하학적으로 어떻게 보이는지 설명하세요.

Restricting Dimensions for the First 20K Steps

What v2's Curriculum Warmup Did

v2는 curriculum_warmup_sources를 일곱 개의 소스로 설정했습니다: hermes3-general, hermes3-creative, hermes3-roleplay, chat, smoltalk, oasst, gutenberg. 처음 20K 스텝 동안은 이 일곱 소스만 기여했습니다. 20K 스텝 이후에는 전체 16-소스 파이어호스가 활성화되었습니다.


Geometric Reading

전체 16-소스 심플렉스는 R^16에 존재합니다. 7개의 소스로 제한하면 16개 좌표 중 9개가 0으로 축소됩니다. 밴딧의 보행은 6차원 하위 심플렉스(소스 수보다 1차원 낮음, 합이 1이라는 제약으로 인해)에서 이루어집니다.


기하학적으로: 전체 심플렉스의 하위다양체(SUBMANIFOLD). 차원이 낮고, 더 부드러우며, 탐색하기 쉽습니다.


왜 이것이 초기 학습에 도움이 되는가

학습 초기에 모델은 아직 일관된 언어를 전혀 학습하지 못한 상태입니다. 다양한 소스는 혼란을 줍니다: 각 소스는 고유한 스타일, 고유한 어휘 분포, 고유한 패턴을 가지고 있습니다. 무작위 초기화 상태에서 16개의 소스를 혼합하면 모델이 맞추기에는 너무 넓은 목표 분포가 생성됩니다.


7개의 대화/산문 소스로 제한하면 더 균일한 목표 분포가 만들어집니다. 모델은 먼저 안정적인 표현을 학습한 후, 이를 확장합니다.


훈련을 통한 기하학적 경로

1. 0~20K 스텝 (워밍업). 6차원 하위 심플렉스에서 워크가 진행됩니다. 모델 내에서 안정적인 언어 패턴이 형성됩니다.

2. 20K~112K 스텝 (전체 파이어호스). 워크가 15차원 전체 심플렉스로 확장됩니다. 도메인 폭이 확보됩니다.

3. 112K 스텝 이후 (폴리시). 다시 제한된 워크: repo-docs 및 repo-docstrings 제외, 대화형 하한선 상향. 전체 심플렉스 내 더 작은 다각형; 대화 품질이 강화됩니다.


폴리시가 curriculum_warmup_steps = 0으로 설정되는 이유

폴리시는 112K 스텝에서 시작됩니다. 모델은 이미 일관된 언어를 구사할 수 있습니다. 이제 하위 심플렉스로 제한하면 폭을 잃을 뿐 얻는 것이 없습니다(워밍업 이점은 fresh-init 모델에만 해당). warmup_steps = 0 설정은 “전체 심플렉스에 머무르되, 새로운 상한·하한을 적용한다”는 의미입니다.


세 가지 기하학, 하나의 학습 실행

v2 warmup: 저차원 부분-단체.

v2 firehose: 전체 15차원 단체.

v3 polish: 전체 단체에 더 작은 다각형 적용 (더 많은 제약).


동일한 200K-스텝 실행, 세 가지 다른 기하학적 체제. 각 체제는 모델 성숙도의 다른 단계에 맞춰 조정되었다.

부분다양체 읽기

(a) v2 warmup은 16개 소스 전체 세트 중 7개 소스를 사용합니다. warmup sub-simplex의 차원은 얼마입니까? 계산하고 명시하세요. (b) ANDREA-120M v3 polish는 repo-docs와 repo-docstrings를 hard-exclude합니다 (cap 0.0). 나머지 14개 소스는 허용합니다. polish sub-simplex의 차원은 얼마입니까? (c) curriculum_warmup_steps = 0으로 설정하는 것이 polish config에서 기하학적으로 무엇을 의미합니까?