LLM
- 텍스트 생성, 자연어 이해, 기계 번역 등 다양한 자연어 처리(Natural Language Processing, NLP) 작업을 수행
- 방대한 양의 텍스트 데이터를 기반으로 사전 훈련된 후, 특정 작업에 맞게 추가적인 훈련을 거침
- 인간의 언어를 기계가 이해하고 처리할 수 있도록 하는 분야
- 텍스트 데이터를 이해, 분석, 생성 및 해석하는 기술
- 인간과 기계 간의 언어 커뮤니케이션을 가능하게 함
- 주요 작업
- 텍스트 분류
- 주어진 텍스트를 사전 정의된 카테고리로 분류하는 작업
- 예. 스팸 메일 필터링, 감성 분석, 문서 분류 등
- 개체명 인식
- 텍스트에서 중요한 개체(인물, 장소, 날짜 등)를 인식하고 분류하는 작업
- 예. "Apple은 캘리포니아에 위치한 기업입니다"라는 문장에서 "Apple"을 조직명으로 인식
- 기계 번역
- 한 언어로 작성된 문장을 다른 언어로 자동으로 번역하는 작업
- 예. 구글 번역과 같은 온라인 번역 도구가 이 작업에 사용
- 자동 요약
- 중요한 내용이나 주제를 추출하여 요약을 생성
- 질의 응답
- 질문에 대한 정확한 답변을 생성하는 작업
- 텍스트 분류
- 대표 모델
- BERT
- 구글에서 개발한 사전 훈련된 언어 모델로, 양방향 Transformer 인코더를 기반
- 문맥을 이해하는 데 중점을 두고 있으며, 문장의 좌우 문맥을 함께 고려하여 단어의 의미를 파악
- 텍스트 분류, 개체명 인식, 질의 응답 등 다양한 NLP 작업에 사용
- GPT
- OpenAI에서 개발된 사전 훈련된 언어 모델로, 텍스트 생성에 특화
- 훈련 데이터에 기반하여 다음 단어를 예측하거나, 주어진 문장을 이어서 완성하는 등의 작업을 수행
- Transformer
- 인코더와 디코더라는 두 개의 주요 구성 요소로 구성
- self-attention(자기 어텐션) 메커니즘을 사용하여 문장의 단어 간 상호 작용을 모델링하며, 기계 번역과 같은 다양한 NLP 작업에 사용
- BERT와 GPT는 Transformer 아키텍처를 기반
- BERT
- 모델의 크기나 매개변수 수가 증가함에 따라 모델의 성능이 어떻게 변하는지를 설명하는 법칙
- LM의 성능은 아래에 의존함
- 모델 파라미터 수 (N)
- 데이터셋의 사이즈 (D)
- 컴퓨터링량 (C)
- 언어 모델링의 한 유형으로, 주어진 문장에서 일부 단어를 마스크하고, 마스크된 단어를 예측하는 모델
- 동작 방식
- 입력 문장에 마스크
- 양방향 학습 (문맥을 더 잘 이해하고 더 정확한 예측)
- Fine-tuning (특정한 자연어 처리 작업(예: 문장 분류, 질의응답, 기계 번역 등)을 위함)
- Next Sentence Prediction
- Shuffle Token Detection / Random Token Substitution
- Translation Language Model (다른 두 언어가 한쌍으로 토큰이 마스킹되어 사용)
- Span Boundary Objective (문장에서 연속된 토큰을 마스킹하여 토큰 예측)
- Sentence Order Prediction (연속된 두 문장을 추출하여 순서를 바꾸고, 이를 맞추는 지 확인)
- 텍스트를 작은 단위인 토큰(Token)으로 나누는 과정
- 텍스트를 처리하고 분석하는 과정이 훨씬 용이해지며, 모델이 텍스트를 이해하고 처리하는데에도 도움
- 텍스트 데이터를 숫자로 표현해야 하는 자연어 처리 모델에서 중요한 과정
- 단어 간의 상관관계를 파악하고 텍스트의 의미를 추론하는 작업을 수행
- 오타가 있을 때도 sub-word를 살릴 수 있음 (postfix, prefix도 검출 가능)
- 예시
- "Natural language processing is interesting!"
- Natural
- language
- processing
- is
- interesting
- !
- "Natural language processing is interesting!"
- 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 다양한 분야에서 사용되는 모델
- 예. 챗봇 (입력 시퀀스와 출력 시퀀스를 각각 질문과 대답으로 구성), 번역기
- 구조
- input(embedding) > Encoder > Context Vector > Decoder > output
- embedding: 단어를 벡터의 형태로 표시
- Context Vector: 인코더가 입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 이 모든 단어 정보들을 압축해서 만든 하나의 벡터 (고차원인 모델은 해당 요소의 차원이 큼)
- Decoder: Context Vector를 받아서 하나씩 단어를 뱉음
- 1번 단어: + Context Vector
- 2번 단어: 1번 단어 + 첫번째 은닉 상태
- 3번 단어: 2번 단어 + 두번째 은닉 상태
- 은닉상태: 입력 시퀀스의 각 위치에서 얻은 중간 결과. 현재까지의 입력정보를 요약하는 벡터
- input(embedding) > Encoder > Context Vector > Decoder > output
- 훈련
from tensorflow.keras.layers import Input, LSTM, Embedding, Dense
from tensorflow.keras.models import Model
import numpy as np
# Encoder
encoder_inputs = Input(shape=(None, src_vocab_size))
encoder_lstm = LSTM(units=256, return_state=True)
encoder_outputs, state_h, state_c = encoder_lstm(encoder_inputs)
# LSTM은 바닐라 RNN과는 달리 상태가 두 개. 은닉 상태와 셀 상태.
encoder_states = [state_h, state_c]
# Decoder
decoder_inputs = Input(shape=(None, tar_vocab_size))
decoder_lstm = LSTM(units=256, return_sequences=True, return_state=True)
# 디코더에게 인코더의 은닉 상태, 셀 상태를 전달.
decoder_outputs, _, _= decoder_lstm(decoder_inputs, initial_state=encoder_states)
decoder_softmax_layer = Dense(tar_vocab_size, activation='softmax')
decoder_outputs = decoder_softmax_layer(decoder_outputs)
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)
model.compile(optimizer="rmsprop", loss="categorical_crossentropy")
model.fit(x=[encoder_input, decoder_input], y=decoder_target, batch_size=64, epochs=40, validation_split=0.2)
- 신경망들의 성능을 높이기 위한 매커니즘. Transformer의 기반이 됨
- Decoder에서 출력 단어를 예측하는 매 시점마다 Encoder의 전체 입력 문장을 다시 한번 참고
- 동일한 비율 X. 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어에 더 집중
- 기존 seq2seq의 문제점
- 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니 정보 손실 발생
- RNN의 고질적 문제인 기울기 소실 문제가 존재 (GRU, LSTM에서도 같은 문제)
- Attention 함수
- Attention(Q, K, V) = Attention Value (dictionary 형태)
- Q(Query): t 시점의 디코더 셀에서의 은닉 상태
- K(Keys): 모든 시점의 인코더 셀의 은닉 상태들
- V(Values): 모든 시점의 인코더 셀의 은닉 상태들
- Query에 대해서 모든 Key와의 유사도를 각각 구함 > Value에 구한 유사도를 반영해서 리턴
- Attention Score를 어떻게 구하느냐에 따라서 Attention 종류가 달라짐
- Attention(Q, K, V) = Attention Value (dictionary 형태)
- Dot-Product Attention
- Decoder가 예측을 할 때, Encoder의 문장을 다시 참고
- 기존에는 t-1 은닉상태와 t-1의 출력 단어를 입력받음 + 여기에 t시점의 Attention Value 추가
- 과정
-
Attention Score를 구한다
- 인코더의 모든 은닉 상태 각각이 디코더의 현 시점 은닉 상태와 얼마나 유사한지 판단하는 스코어 값
- 인코더 은닉 상태와 디코더 현 시점 은닉 상태의 내적
-
소프트맥스 함수를 통해 어텐션 분포를 구한다
- Attention Score를 합이 1이되는 확률분포로 변환
- 예. 0.1, 0.4, 0.1, 0.4 가중치가 나타남
-
각 인코더의 어텐션 가중치와 은닉 상태를 가중합하여 Attention Value를 구한다
- 각 인코더의 은닉 상태와 가중치 값들을 곱하고 더함
- 인코더의 문맥을 포함하고 있다고 해서, Context Vector라고도 불림
-
-
주로 자연어 처리(Natural Language Processing, NLP) 작업에 사용되는 모델
- seq2seq 모델은 입력 시퀀스를 하나의 벡터 표현으로 압축 (정보 일부 손실)
- 이를 해결하기 위해서 Attention Mechanism 활용
- 만약 Attention만으로 Encoder와 Decoder를 만든다면?
-
Encoders와 Decoders로 구성
- Encoders: Input > Positional Encoding > Multi-head Self-Attention > Encoder Result
- Decoders: Input > Positional Encoding > Masked Multi-head Self-Attention > Multi-head Attention (+Encoder Result) > Dense > Softmax
-
핵심 요소
-
Query, Key & Value
- layer의 Input 값
- 예시
- Youtube에서 검색을 한다고 했을 때,
- Query: 검색어
- Key: 결과로 나타나는 비디오의 제목
- Value: Key 비디오 내에 있는 콘텐츠
- 따라서 Query 와 유사한 Key를 찾을 필요가 있음
- cos 함수를 통해서 Similarity를 계산
- Similarity(Q, K)
-
Positional Encoding
- Transformer에서는 모든 임베딩을 한번에 수행하기 때문에 빠름
- But, 정보 손실이 우려됨
- sin, cos 파동을 통해서 각 단어의 유니크한 포지션을 포함하여 임베딩
- 순서대로 임베딩하는 것보다 빠르면서 순서도 포함할 수 있는 형태로 임베딩하는 방법
- Transformer에서는 모든 임베딩을 한번에 수행하기 때문에 빠름
-
Query, Key & Value 활용
- 왜 똑같은 Key, Value 값이 중복되서 사용되는 것일까?
- 우선 Query와 Key의 유사성을 찾는다 (MatMul > Scale > Softmax : Attention Filter)
- 유사성에다가 원래 값인 Value를 곱함 > 불필요한 값들은 희미해짐
-
-
어텐션 메커니즘(Attention Mechanism)
- Encoder Self-Attention
- Masked Decoder Self-Attention
- Encoder-Decoder Attention
-
Encoder
- num_layers 개수의 인코더 층을 쌓음
- 한 개의 층은 Self_Attention의 병렬적 구조 (Multi-head Self-Attention) + Position-wise FFNN (완전 연결 FFNN) 으로 구성
- Self-Attention
- Attention을 스스로 실행 (Q, K, V가 모두 같음 / 입력 문장의 모든 단어 벡터들)
- The animal didn't cross the street because it was too tired. (animal, street, it이 it과 연관성이 크게 나타남)
- Q, K, V 벡터는 Model의 Dimension/num_heads
- 예. 512차원의 모델에서 num_heads가 8이면 > 벡터 크기는 64
- Multi-head Attention
- 여러 번의 Attention을 병렬로 사용하는 것이 효과적임
-
Decoder
- 첫번째 서브층: Query = Key = Value
- 두번째 서브층↑: Query: 디코더 행렬 / Key = Value: 인코더 행렬
- Transformer에서 Decorder만 사용
- Unlabeled Dataset으로 Pretrain
- Labeled Dataset으로 Finetuning
- Decoder = Masked Self-Attention + Feed Forward Neural Network
- GPT3
- 대부분 GPT2의 구조를 따르지만 attention이 변경 (sparse attention)
- filtering된 dataset을 사용
- 모델을 초기화하기 위해 대규모 텍스트 데이터로 모델을 훈련시키는 과정
- 많은 양의 텍스트 데이터(인터넷 문서, 책, 뉴스 등)를 사용하여 모델은 문장 구조, 어휘, 문맥 등과 같은 언어의 다양한 특징을 파악하고 내재된 표현을 학습
- 사전 훈련된 모델은 후속 작업을 위해 미세 조정(Fine-tuning) 단계로 이어질 수 있음
- 목적
- 언어 이해의 일반화
- 모델이 언어의 다양한 패턴, 구조, 문법, 단어 간 관계 등을 이해하는 일반화된 표현을 학습
- 모델은 다양한 언어 작업에 적용될 수 있는 범용적인 언어 이해 능력을 갖출 수 있음
- 데이터 희소성 극복
- 많은 문장과 단어 조합이 가능한데, 각각의 조합에 대한 레이블이 부족하거나 없을 수 있음
- 전이 학습
- 사전 훈련된 모델은 일반 언어 이해 능력을 보유하고 있기 때문에, 특정 작업에 대한 미세 조정을 통해 해당 작업에 특화된 표현과 패턴을 학습
- 데이터 양이 적은 작업이더라도 효과적인 학습
- 언어 이해의 일반화
- 한계
- knowledge cutoff
- 훈련된 내용만 알고있음
- 예. 2021년까지 정보로 훈련된 모델은 2023년에 일어난 일을 모름
- 같은 질문에 같은 대답을 함
- knowledge cutoff
- 사전 훈련된 모델을 특정 작업에 맞게 추가로 훈련시키는 과정
- 목적
- 작업에 맞는 특화된 표현 학습
- 특정 작업에 대한 레이블이 있는 작은 규모의 작업 관련 데이터를 사용하여 모델을 추가로 훈련
- 작은 데이터셋에서의 효과적인 학습
- 작은 데이터셋이나 특정 도메인에 특화된 작업에서도 효과적인 학습을 가능 일반적인 언어 이해 능력을 기반으로 작은 데이터셋에서도 성능을 높일 수 있음
- Overfitting 방지와 일반화 능력 향상
- 특정 작업에 초점을 맞추기 때문에, 모델이 작업 관련 데이터에 과적합되지 않도록 제어
- 작업에 맞는 특화된 표현 학습
BERT를 기반으로 한 감성 분석 작업
- 사전 훈련
- BERT 모델은 대규모 텍스트 데이터를 사용하여 사전 훈련됨
- BERT는 언어의 일반적인 특성을 학습하고 문장의 의미와 문맥을 이해하는 능력을 개발
- Fine-tuning 데이터 수집
- 감성 분석을 위한 작업 관련 데이터를 수집
- 문장 또는 문서와 그에 대응하는 감성(긍정 또는 부정) 레이블로 구성
- Fine-tuning
- BERT 모델의 일부 레이어 또는 분류기를 수정하여 작업에 특화된 표현을 학습
- 예를 들어, 출력 레이어를 감성 분류를 위한 이진 분류기로 교체하고, 해당 분류기를 훈련 데이터에 맞게 조정
- 성능 평가
- 테스트 데이터를 사용하여 모델의 성능을 평가하고 정확도, 정밀도, 재현율 등의 평가 지표를 계산
- 대부분의 파라미터를 프리징하고 일부의 파라미터만 파인튜닝
- 사전 학습된 LLM에 데이터셋을 활용해서 파인튜닝하는 것으로 성능향상을 할 수 있음
- 기존의 사전 학습된 언어 모델을 추가 학습 없이, 주어진 평가 데이터에 적용하여 평가 점수를 얻을 수 있도록 도움
- 허깅페이스의 transformers, accelerate 라이브러리와 연동해서 활용할 수 있음
- 단계
- 사전 학습된 언어 모델 선택
- 언어 모델에 대한 점수 기록
- 불공정한 비교 보정 (점수를 보다 정확하게 평가)
- 종류
- Prompt modifications ("Hard" prompt tuning, "Soft" prompt tuning, Prefix-tuning)
- Adapter methods (LLaMA-Adapter)
- Reparameterization (LoRA / Low rank adaption)
- Transformer의 개별 Layer에 Adapter를 적용
- 보통은 2개를 사용 (Upper, Low)
- 복잡한 구조가 아님 (급격하게 Parameter 수가 늘어나지는 않음)
- Adapter의 크기는 Bottleneck Layer의 크기에 의해서 결정
- 작은 크기의 Adapter만 삽입만 해도 GLU Benchmark를 대상으로 Full Finetuning에 근접한 성능을 획득
- 구조
- Feed Forward Sublayer / Linear Transformation (N > M)
- Activation
- Feed Forward Sublayer / Linear Transformation (M > N)
- Adpater Fusion
- Transformer Layer 내에서 Feed Forward Sublayer의 다음에 위치
- Two-Layered 구조를 기반으로 2단계 학습 수행
- 개별 Task마다의 Adapter를 학습
- 1단계에서 학습된 개별 Adapter들 통해 Attention 매커니즘을 이용하여 입력에 따라 1단계 Adapter 활용
- Bias Term들에 대해서만 Task별로 Finetunging 수행
- 결과를 보았을 때, Full Finetuning과 비슷한 결과가 나타남
- LLM의 일부 Weight Matrix들에 대해서만 추가적인 학습을 허용
- 과정
- 각각의 Layer 내에서 일부의 Weight Matrix에 대해 Finetuning 대상 결정
- Weight Matrix의 형태를 그대로 복제하여 새롭게 Finetuning 수행
- Low-Rank Matrix Decomposition을 수행하여 두 개의 Matrix로 구성
- h = Wx + W`x = Wx + BAx
- Train mode에서는 Weight Paramter 분리 / Evaluation mode에서는 Weight Parameter가 합쳐져서 동작
- Query matrix, value Matrix만 사용하는 것이 가장 효율적
- LoRA 기반으로 Weight Update에 대해 Sensitivity-based importance에 따라 최적의 Weight을 Pruning을 수행하면서 Finetuning 수행
- 사용자의 Query를 통해서 훈련을 진행
- 사실상 LLM의 마지막 훈련단계
- Simple binary cross-entropy loss를 활용해서 프로세스를 단순화할 것을 제안
- Direct Preference Optimization (DPO)
- Reward Modeling step을 우회하고, 핵심 통찰력을 통해 선호도 데이터에서 언어 모델을 최적화
- Direct likelihood objective가 reward model을 활용하지 않도록 개선
- Retrieval 기능을 LLM 텍스트 생성에 통합
- 대규모 자료에서 관련 문서를 가져오는 retrieval system과 답변을 생성하는 LLM을 결합
- 모델이 외부 정보를 조회하여 응답을 개선하도록 도움
- 보통 vector store를 이용 (관련 문서를 찾는 데에 도움)
- 보통 LLM을 당장 기업에서 도입하기 가장 손쉬운 방법
- 자연어 처리(NLP) 분야의 다양한 태스크들에 대한 표준화된 평가를 제공하기 위해 개발된 데이터셋과 벤치마크
- 대표적인 NLP 태스크들을 모아서 구성되어 있으며, 다양한 언어 이해 작업에 대한 성능을 비교하고 평가
- 총 9개의 Task로 되어 있음. train/val/test set이 주어짐
- NLP 태스크
- MNLI(MultiNLI): 문장 페어 분류 태스크로, 주어진 두 문장 간의 관계를 예측하는 작업
- QQP(Quora Question Pairs): 문장 페어 분류 태스크로, Quora의 질문 쌍에서 같은 의미의 질문 쌍을 예측하는 작업
- SST-2(Sentiment Analysis): 문장 분류 태스크로, 영화 리뷰에서 감정(긍정/부정)을 예측하는 작업
- CoLA(Corpus of Linguistic Acceptability): 문장 분류 태스크로, 주어진 문장이 문법적으로 올바른지를 예측하는 작업
- MRPC(Microsoft Research Paraphrase Corpus): 문장 페어 분류 태스크로, 주어진 두 문장 간의 유사성을 예측하는 작업
- RTE(Recognizing Textual Entailment): 문장 페어 분류 태스크로, 주어진 두 문장 간의 함의(Entailment) 여부를 예측하는 작업
- WNLI(WIkiText-103-NLI): 문장 페어 분류 태스크로, 주어진 두 문장 간의 관계를 예측하는 작업
https://velog.io/@nellcome/Instruction-Tuning%EC%9D%B4%EB%9E%80
- 주어진 작업을 인공지능 모델에게 지시하거나 원하는 결과를 얻기 위해 사용되는 문장 또는 텍스트 조각
- 모델이 원하는 방식으로 작업을 수행하도록 지시하고, 사용자와의 상호작용을 시작하는데에 중요한 역할
- 프롬프트의 선택과 설계는 모델의 동작과 결과에 큰 영향
- 구성
- 지시어(Instruction)
- 프롬프트는 작업을 수행하기 위한 지시어를 포함
- 예를 들어 "번역해주세요."나 "질문에 답해주세요."와 같이 모델에게 수행할 작업을 명시적으로 지시하는 내용이 포함
- 입력(Starting Input)
- 일부 경우, 프롬프트에는 시작 입력(Starting Input)이 포함
- 시작 입력은 모델의 답변을 시작하는데 사용되는 기본적인 문장 또는 텍스트 조각
- 문맥(Context)
- 대화 시스템에서는 이전 대화 내용을 포함하여 프롬프트를 구성하는 경우가 많음
- 이전 대화의 문맥이 현재 프롬프트에 포함
- 지시어(Instruction)
- Text Summarization
- Information Extraction
- Text Classification
- 대화식 AI 모델에서 사용되는 학습 방법 중 하나로, 모델이 대화의 문맥(context)을 고려하여 지속적으로 학습하고 개선하는 방식
- 사용자와의 상호작용을 통해 모델이 실시간으로 학습하도록 돕는 데에 중요한 역할
- 대규모 언어 모델에서 효과적
- 실제 사용자와의 상호작용을 통해 모델이 지속적으로 학습하고 개선하는 기술
- 기존의 기계 학습 모델은 미리 정해진 대용량의 정적인 데이터셋을 사용하여 학습하는 방식. 이러한 한계를 극복하기 위해 개발된 방법.
- 장점
- 실시간 학습: 모델이 실제 사용자와 대화하면서 학습하기 때문에, 최신 정보와 상황에 적절하게 대응
- 개인화: 사용자와의 상호작용을 통해 모델이 사용자에게 맞춤화된 답변을 생성하고 개선
- 데이터 편향 감소: In-Context Learning은 실제 사용자와의 상호작용을 통해 다양한 데이터를 수집하므로 데이터 편향을 감소
- 다중 작업(feintuning)을 포함하는 대화형 AI 모델을 개선하기 위해 사용되는 학습 방법
- user의 의도는 다른 답변을 주는 문제점을 해결
- 기존의 대화형 AI 모델은 다양한 작업에 대해 미리 학습된 모델을 사용하여 다양한 요청에 대응 > 사용자의 의도를 제대로 이해를 못 할 수도 있음 >
사용자의 지시사항을 포함한 추가적인 지시 사항을 모델에 전달하고, 모델이 이러한 지시를 따르도록 강조적으로 학습
- 과정
- 데이터셋 준비
- Instruction Tuning은 사용자의 요구사항에 대한 지시사항이 포함된 데이터셋을 사용하여 모델을 학습
- 이 데이터셋은 더 정확하고 명확한 지시를 제공하며, 모델이 원하는 대답을 생성하도록 도움
- Multi-task Finetuning
- Instruction Tuning은 다중 작업(fineturning)을 활용하여 모델을 학습
- 여러 작업에 대해 동시에 학습하면서, 특히 지시사항을 따르도록 강조하여 모델을 개선
- 지시 사항 강조
- 지시 사항이 포함된 대화 형식으로 모델을 학습시키면서, 지시 사항을 더 잘 이해하고 지켜지도록 학습하도록 유도
- 데이터셋 준비
- 자연어 쿼리에 해당하는 적절한 API 호출을 생성하는 LLM
- LLM이 API를 통해서 외부 도구를 호출할 수 있도록 플러그인 결합
- Instruction Generation: Self-Instruct
- synthetic instruction을 생성하기 위해 GPT-4 사용 ({instruction, API})
- 사람이 작성한 seed 세트를 프롬프트로 사용
- 품질이 낮거나 유사한 항목은 필터링하여 다시 Pool에 추가
- 예시: "I want to see some cats dancing in celebration" > 해당 사잔의 API 주소
- 모델의 크기를 줄이거나 계산량을 감소시켜, 모델을 더 작고 빠르게 만드는 기술
- 장치의 메모리나 연산능력에 맞게 최적화하여 배포, 실행 및 이식성을 향상
- 모바일 기기, 에지 컴퓨팅 환경, 임베디드 시스템 등에 적용할 때 특히 중요
- 과정
- Chain-of-Thought의 rationale과 label을 얻을 수 있도록 LLM을 학습
- Chain-of-Thought: 단순한 질문-결과로 이루어지는 것이 아니라, 중간과정에서의 Rationale과 label을 모두 포함함
- LLM에서 얻은 rationale과 label로 작은 모델을 학습함
- 답변을 하기 전에 생각하는 방법을 작은 모델이 학습할 수 있음
- Chain-of-Thought의 rationale과 label을 얻을 수 있도록 LLM을 학습
- 작은 모델은 기존의 학습 데이터뿐만 아니라, 큰 모델의 소프트 타겟(소프트맥스 출력)을 이용하여 훈련
- Softmax에 의한 label만 활용하는 것이 아니라, 확률 값도 활용함