AI 호출 없이 작동한다. 작은 신경망은 이 브라우저에서 직접 학습하며, 합성 데이터와 고정 시드를 쓴다.
붙여 넣은 JSONL은 이 페이지가 저장하지 않는다. 글씨 크기와 테마만 기기에 저장한다. 입력을 포함한 상태 링크는 수신자가 읽을 수 있으며 브라우저 기록·접속 로그에 남을 수 있다.
Overview
LLM을 일에 맞추는 방법은 크게 세 가지다. Prompt(지시문)만 바꾸기, RAG(Retrieval-Augmented Generation, 검색 증강 생성)로 자료를 찾아 함께 건네기, Fine-tuning(미세 조정)으로 모델 가중치를 다시 학습시키기. 이 탭은 상황 질문 5개와 공개한 점수 규칙으로 세 방법을 비교한다.
기호: θ는 모델 가중치, P는 지시문, x는 입력, 𝒟는 문서 모음, D_train은 학습 데이터다.
Concept
Prompt는 θ를 그대로 두고 입력만 바꾼다. 바로 시도할 수 있고 되돌리기 쉽다. RAG는 질문 x로 문서 모음 𝒟에서 관련 조각 R(x;𝒟)를 찾아 지시문에 넣는다. 자료를 바꾸면 다음 답부터 반영되고, 답에 근거 위치를 붙일 수 있다. Fine-tuning은 예시 데이터 D_train으로 θ 자체를 바꾼다. 말투·형식·분류 기준처럼 매번 설명하기 긴 행동을 모델에 담을 수 있지만, 데이터 준비와 학습이 필요하고 자주 바뀌는 사실을 넣기에는 느리다.
세 방법은 서로 배타적이지 않다. 형식은 Fine-tuning으로 맞추고 최신 자료는 RAG로 건네는 조합도 쓴다. RAG는 문서 모음을 바꿔 지식을 갱신하고 근거를 보일 수 있다는 점이 원 논문에서 강조됐다(Lewis et al. 2020). 사전 학습 모델을 적은 데이터로 새 분류 작업에 맞출 수 있다는 점은 Howard & Ruder(2018)가 보였다.
a_q는 질문 q의 답, w는 그 답이 방법 m에 주는 점수다. 아래 체험의 점수는 이 페이지가 정한 값이다. 논문에서 추정한 값이 아니며, 결과는 검토를 시작할 출발점이지 권고가 아니다. 점수가 같으면 준비 비용이 작은 순서(Prompt → RAG → Fine-tune)로 고른다. 1위와 1점 이내인 방법은 함께 검토할 후보로 표시한다.
Hands-on
상황 질문에 답하면 규칙표가 점수를 더한다.
규칙표 · 고른 답은 ▶ 표시
점수는 정한 값이다. 한 방법의 점수가 높다는 것은 이 규칙표에서 조건이 더 많이 맞았다는 뜻일 뿐이다.
두 조건을 바꾸며 추천이 바뀌는 경계를 본다.
가로는 지식이 바뀌는 빈도, 세로는 예시 수다. 나머지 세 답은 위 규칙표의 값으로 고정한다. 칸을 누르면 그 조건이 위 질문에도 반영된다.
Summary
- Prompt는 입력을, RAG는 입력에 붙는 자료를, Fine-tuning은 가중치를 바꾼다.
- 자주 바뀌는 지식과 출처 표시는 RAG 쪽 조건이다.
- 일정한 말투·형식과 충분한 예시는 Fine-tuning 쪽 조건이다.
- 예시가 적으면 먼저 Prompt로 시작하고, 방법은 함께 쓸 수 있다.
Notation
| 기호 | 뜻 | 단위 |
|---|---|---|
| θ | 모델 가중치 | — |
| P | 지시문 | — |
| x, y | 입력과 답 | — |
| 𝒟 | 검색 대상 문서 모음 | — |
| R(x;𝒟) | x로 찾은 문서 조각 | — |
| η | 학습률 | — |
| wq,a,m | 질문 q의 답 a가 방법 m에 주는 점수 | 점 |
| Sm | 방법 m의 합계 점수 | 점 |
References
Overview
Fine-tuning 데이터는 입력과 원하는 답을 짝지은 예시의 모음이다. 대화형 모델에서는 한 줄에 대화 하나를 JSON으로 적는 JSONL(JSON Lines) 형식을 흔히 쓴다. 이 탭은 붙여 넣은 JSONL을 형식·중복·길이·라벨 분포·개인정보처럼 보이는 문자열 기준으로 검사한다.
앞 탭의 D_train은 학습 데이터다. 여기서 N은 유효한 줄 수, n_k는 라벨 k의 개수, ℓᵢ는 i번째 예시의 글자 수다.
Concept
{"messages":[
{"role":"system","content":"…"},
{"role":"user","content":"…"},
{"role":"assistant","content":"FALL"}]}
한 줄은 하나의 JSON 객체이고 줄바꿈으로 구분한다(JSON Lines). messages 배열은 선택적인 system 하나로 시작한 뒤 user와 assistant가 번갈아 나오고 assistant로 끝난다. 위 예시는 보기 좋게 줄을 나눴지만 실제 파일에서는 한 줄에 쓴다. 학습 손실은 보통 assistant 차례의 토큰에만 건다.
A_i는 i번째 대화에서 assistant 차례에 속한 토큰 위치다. 같은 예시가 여러 번 들어가면 그 예시의 비중이 커지고, 학습·검증으로 나눌 때 양쪽에 같은 입력이 들어가 검증 점수가 부풀려진다(Lee et al. 2022). 같은 입력에 다른 답이 붙은 예시는 기준이 엇갈렸다는 신호다.
모든 답이 24자 이하인 라벨형 데이터에서만 라벨 분포를 계산한다. 한 라벨이 50%를 넘으면 경고한다(정한 값). 적은 수의 예시로도 답의 형식을 맞출 수 있다는 보고가 있지만(Zhou et al. 2023), 예시가 다양하고 정확하다는 전제에서다.
개인정보처럼 보이는 문자열은 정규식으로 찾는다: 휴대전화·지역번호 전화 형태, 이메일 형태, 주민등록번호 형태(생년월일 6자리 + 7자리). 패턴이 맞는다고 실제 개인정보라는 뜻은 아니며, 패턴이 없는 개인정보(이름·주소)는 찾지 못한다. 화면에는 영문·숫자의 앞 세 글자만 남기고 가린다.
| 검사 | 조건 |
|---|---|
| json-syntax | 줄이 JSON으로 읽히지 않는다. |
| not-object · no-messages · empty-messages | 객체가 아니거나 messages 배열이 없거나 비어 있다. |
| bad-role · content-type · empty-content | role이 system·user·assistant가 아니거나 content가 문자열이 아니거나 비어 있다. |
| first-user · order · last-assistant · system-position | system 뒤 첫 차례가 user가 아니거나, 같은 role이 연달아 나오거나, assistant로 끝나지 않거나, system이 맨 앞이 아니다. |
| duplicate · conflict | 공백을 정리한 뒤 대화 전체가 같거나, 입력은 같은데 마지막 답이 다르다. |
Hands-on
JSONL을 붙여 넣으면 줄마다 검사한다.
예시 데이터는 손으로 작성한 가상 사고 보고서다. 길이 수치가 언어와 무관하게 같도록 영어판에서도 한국어 원문을 그대로 쓴다. 전화번호·이메일·주민등록번호 형태의 문자열은 검사용 가짜 값이다.
길이 상한과 검증 분할을 정한다.
위에서 검사를 통과한 줄만 쓴다. 그래프를 누르면 그 위치가 길이 상한 L이 된다.
Summary
- JSONL은 한 줄에 대화 하나다. 한 줄의 오류는 그 줄만 버리게 하지만, 원인은 대개 생성 과정 전체에 있다.
- 중복은 학습 비중을 바꾸고, 학습·검증 사이 중복은 검증 점수를 부풀린다.
- 같은 입력에 다른 답이 있으면 라벨 기준부터 맞춘다.
- 라벨 치우침과 길이 분포는 학습 전에 숫자로 확인한다.
- 패턴 검사는 개인정보 검토의 시작일 뿐 대신하지 않는다.
Notation
| 기호 | 뜻 | 단위 |
|---|---|---|
| N | 검사를 통과한 예시 수 | 개 |
| nk | 라벨 k의 예시 수 | 개 |
| Ai | i번째 대화의 assistant 토큰 위치 | — |
| ℓi | i번째 예시의 content 글자 수 합 | 자 |
| L | 길이 상한 | 자 |
| v | 검증 비율 | — |
References
Overview
Transfer Learning(전이 학습)은 큰 데이터로 미리 배운 모델을 출발점으로 삼아 적은 데이터로 새 작업에 맞추는 방법이다. LLM을 브라우저에서 학습시킬 수는 없으므로, 이 탭은 작은 신경망을 브라우저에서 직접 학습시켜 같은 원리를 확인한다.
앞 탭의 θ는 모델 가중치다. 여기서 Task A는 미리 배우는 작업, Task B는 새로 맞출 작업, n_B는 Task B 학습 예시 수, σ는 두 작업이 공유하는 특징 비율이다.
Concept
합성 데이터다. T와 T_B의 원소는 N(0, 0.5²), R_A와 R_B의 원소는 N(0, 1)에서 시드로 뽑는다. T_B는 T의 앞 round(8σ)개 행을 그대로 쓰고 나머지 행은 새로 뽑는다. 상수 c는 라벨이 고르게 나오도록 따로 뽑은 4,000개 표본에서 맞춘다. Task A는 학습 4,000개, Task B는 최대 512개를 쓰고, 평가는 각각 따로 뽑은 600개로 한다.
W_1은 64×16, W_2는 64×64 행렬이다. 작업마다 출력층(head) W_h를 따로 둔다(Task A 8개, Task B 4개 라벨). 손실은 교차 엔트로피, 최적화는 Adam(학습률 0.003, 미니배치 32)이고(Kingma & Ba 2015), 초깃값은 He 초기화다(He et al. 2015).
두 방법 모두 Task B로 300 step을 학습한다. continued는 Task A로 3,000 step 학습한 몸통(W_1, W_2)에서 출발하고, Task B 출력층만 새로 초기화한다. 앞층 특징이 다른 작업으로 옮겨 가는 정도는 두 작업이 얼마나 비슷한지에 달려 있다(Yosinski et al. 2014). σ=0이면 공유 특징이 없어 미리 배운 가중치가 오히려 방해가 될 수 있다.
Hands-on
처음부터 학습과 이어서 학습을 데이터 수별로 비교한다.
합성 데이터. 그래프 위를 누르면 가장 가까운 n_B를 고른다. 우연 수준은 4개 라벨 중 하나를 고르는 25%다.
고른 n_B에서 step마다 평가 정확도를 본다.
25 step마다 Task B 평가 600개로 잰다. 그래프를 누르면 그 step의 값을 읽는다.
Summary
- 미리 배운 가중치에서 시작하면 적은 데이터에서 정확도가 더 높아질 수 있다.
- 데이터가 많아지면 처음부터 학습한 모델과의 차이가 줄어든다.
- 공유 특징이 없으면(σ=0) 이어서 학습이 오히려 불리할 수 있다.
- LLM Fine-tuning도 같은 원리다: 사전 학습이 새 작업에 쓸 특징을 이미 담고 있을 때 효과가 크다.
Notation
| 기호 | 뜻 | 단위 |
|---|---|---|
| x | 16차원 입력 | — |
| T, TB | 정답을 만드는 특징 행렬 (8×16) | — |
| RA, RB, c | 정답을 만드는 출력 행렬과 상수 | — |
| σ | Task A와 B가 공유하는 특징 비율 | — |
| W1, W2, Wh | 신경망 가중치(몸통 두 층, 출력층) | — |
| θA | Task A로 학습한 가중치 | — |
| nB | Task B 학습 예시 수 | 개 |
| Acc | 평가 세트 정확도 | % |
References
Overview
LoRA(Low-Rank Adaptation)는 원래 가중치 W를 고정하고, 변화량을 작은 행렬 두 개의 곱 BA로만 학습한다(Hu et al. 2022). 이 탭은 앞 탭 신경망에서 실제로 생긴 가중치 변화 ΔW를 SVD(Singular Value Decomposition, 특잇값 분해)로 낮은 rank로 근사하고, LoRA로 직접 학습한 결과와 비교한다.
앞 탭의 W_2는 64×64 몸통 가중치, θ_A는 Task A로 학습한 가중치다. 여기서 r은 rank, σᵢ는 i번째 특잇값이다.
Concept
A는 가우시안으로, B는 0으로 초기화하므로 학습 시작 시점의 W′은 W와 같다. 64×64 행렬이면 전체는 4,096개, rank r 어댑터는 128r개다. r=32에서 두 수가 같아진다. 이 페이지는 α=r로 둔다(정한 값).
Eckart–Young 정리에 따라 ΔW_r은 Frobenius 노름에서 가장 가까운 rank r 행렬이다. ΔW는 Task A 학습 뒤의 W_2와, 거기서 Task B(n_B=256, σ=0.5)로 전체 미세 조정한 뒤의 W_2의 차이다. SVD는 one-sided Jacobi 방법으로 계산한다(Demmel & Veselić 1992). 비교 기준으로 같은 크기·같은 Frobenius 노름의 무작위 가우시안 행렬도 근사한다.
미세 조정의 가중치 변화가 낮은 차원에 몰려 있다는 관찰은 LLM에서 보고됐다(Aghajanyan et al. 2021; Hu et al. 2022). 이 작은 신경망에서 얼마나 그런지는 아래 체험에서 직접 확인한다. 근사 오차가 크더라도 정확도는 거의 유지될 수 있다는 점도 함께 본다.
Hands-on
rank를 바꾸며 근사 오차와 파라미터 수를 본다.
그래프를 누르면 그 rank를 고른다. 색 칸은 64×64 행렬의 원소다. 주황은 양수, 파랑은 음수이고 같은 눈금을 쓴다.
LoRA로 직접 학습했을 때 정확도와 학습 파라미터 수.
Task A로 학습한 몸통을 고정하고 W_1·W_2에 rank r 어댑터를 붙여 Task B(n_B=256, σ=0.5)로 300 step 학습한다. 학습 파라미터 = 208r + 출력층 260개. 비교: 출력층만 학습, 전체 미세 조정.
합성 데이터. 점을 누르면 그 설정을 고른다. 가로축은 로그 눈금이다.
Summary
- LoRA는 W를 고정하고 ΔW = BA만 학습한다. rank r 어댑터의 파라미터는 r(d+k)개다.
- SVD 절단은 주어진 rank에서 Frobenius 오차가 가장 작은 근사다.
- 실제 ΔW는 같은 노름의 무작위 행렬보다 앞쪽 특잇값에 에너지가 더 몰려 있는지 비교해 본다.
- 근사 오차가 남아도 작업 정확도는 작은 rank에서 거의 회복될 수 있다.
- rank가 크면 어댑터가 원래 행렬보다 커질 수 있다.
Notation
| 기호 | 뜻 | 단위 |
|---|---|---|
| W, W′ | 원래 가중치와 고친 가중치 | — |
| A, B | LoRA 어댑터 행렬 (r×k, d×r) | — |
| r | rank | — |
| α | 어댑터 크기 조절 상수 | — |
| ΔW, ΔWr | 가중치 변화와 그 rank r 근사 | — |
| σi, ui, vi | i번째 특잇값과 특이 벡터 | — |
| ‖·‖F | Frobenius 노름 | — |
References
- Hu et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR.
- Aghajanyan, Zettlemoyer & Gupta (2021). Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. ACL.
- Eckart & Young (1936). The approximation of one matrix by another of lower rank. Psychometrika.
- Demmel & Veselić (1992). Jacobi's Method is More Accurate than QR. SIAM J. Matrix Anal. Appl.
Overview
Catastrophic Forgetting(파국적 망각)은 새 작업을 배우는 동안 이전 작업 성능이 크게 떨어지는 현상이다(McCloskey & Cohen 1989). 이 탭은 Task A로 학습한 신경망을 Task B로 계속 학습시키며 Task A 정확도를 추적하고, Task A 예시를 일부 섞는 replay(재연습)의 효과를 본다.
앞 탭의 θ_A는 Task A로 학습한 가중치, h_2는 몸통의 마지막 출력이다. 여기서 ρ는 미니배치 중 Task A 예시 비율, Acc_A(t)는 step t의 Task A 정확도다.
Concept
Task B만 학습하면(ρ=0) 몸통 가중치는 Task B 손실을 줄이는 방향으로만 움직인다. Task A 출력층은 그대로여도 그 입력인 h_2가 바뀌므로 Task A 정확도가 떨어진다. replay는 Task A 학습 데이터 중 256개를 보관해 두고 매 미니배치에 섞는다(Robins 1995; Rolnick et al. 2019).
𝓕는 학습 동안 잃은 Task A 정확도(%p)다. 설정: Task B 512개(σ=0.5), 600 step, 학습률 0.003, ρ ∈ {0, 0.1, 0.2, 0.3, 0.5}, 25 step마다 Task A·B 평가 600개씩. 가중치 변화에 벌점을 주는 EWC 같은 방법도 있다(Kirkpatrick et al. 2017). LoRA처럼 원래 가중치를 고정하고 어댑터만 바꾸면, 어댑터를 뗀 모델의 Task A 성능은 그대로다.
Hands-on
Task B를 오래 배울수록 Task A 정확도가 어떻게 되는지 본다.
합성 데이터. 흐린 선은 ρ=0 기준이다. 그래프를 누르면 그 step의 값을 읽는다. 우연 수준은 Task A 12.5%, Task B 25%다.
replay 비율별 마지막 정확도를 한 그림에 놓는다.
점 하나가 ρ 하나다. 점을 누르면 위 그래프의 ρ도 바뀐다.
Summary
- 새 작업만 학습하면 공유하는 몸통이 바뀌어 이전 작업 정확도가 떨어진다.
- 이전 작업 예시를 조금 섞는 replay로 떨어지는 폭을 줄일 수 있다.
- 섞는 비율이 커지면 새 작업에 쓰는 몫이 줄어든다.
- Fine-tuning 뒤에는 새 작업 점수와 함께 원래 하던 일의 점수도 다시 잰다.
Notation
| 기호 | 뜻 | 단위 |
|---|---|---|
| ρ | 미니배치 중 Task A 예시 비율 | — |
| 𝓑A, 𝓑B | 미니배치 안의 Task A·B 예시 | — |
| ℓA, ℓB | 각 출력층의 교차 엔트로피 | — |
| AccA(t) | step t의 Task A 평가 정확도 | % |
| 𝓕 | 잃은 Task A 정확도 | %p |
| T | Task B 학습 step 수 | step |
References
- McCloskey & Cohen (1989). Catastrophic Interference in Connectionist Networks: The Sequential Learning Problem. Psychology of Learning and Motivation.
- Robins (1995). Catastrophic Forgetting, Rehearsal and Pseudorehearsal. Connection Science.
- Rolnick et al. (2019). Experience Replay for Continual Learning. NeurIPS.
- Kirkpatrick et al. (2017). Overcoming catastrophic forgetting in neural networks. PNAS.