Deep Learning/NLP

LLM 용어정리 - > tokenization, in - context learning, emergent abilities, temperature, BPE(Byte Pairing Encoding) 알고리즘

해파리냉채무침 2024. 5. 20. 18:28

Tokenizing

토큰은 텍스트를 구성하는 개별 단위

'나는 밥을 먹는다' -> '나는','밥을','먹는다'  토큰으로 나눔

huggingface tokenizer가 요즘 잘 되어 있음.

 

1)  단어 단위 토큰화

 I ate a hotdog -> 'I','ate','a','hotdog'

장점: 토큰 길이가 상대적으로 짧음

단점:  vocabulary 집합크기가 너무 커짐 (cat,cats는 같은 의미이지만 따로 한 칸 씩을 차지), Unknown(<unk>) 토큰 발생 가능성 높음 

 

2) 문자 단위 토큰화 

 I ate a hotdog -> 'I','a','t','e','a','h','o','t','d','o','g'

장점: vocabulary 집합 크기가 작음, unknown 토큰 (<unk>) 발생할 가능성이 적음 

단점: 토큰 시퀀스가 길어져서 학습이 어려울수도 있음

 

In- context learning

기존 fine -tuning 프로세스: 만약 영어를 불어로 번역하는 모델을 만든다고 할때 영어와 그에 맞는 불어의 쌍을 많이 모아서  fine-tuning 함

in-context learning: 파라미터 업데이트 과정 없이 대규모 llm 자체가 정보를 많이 가지고 있어서 정보를 끌어낼 수 있는 prompt를 잘 작성하면 됨. fine-tuning 과정도 필요 없음

 

Zero-shot : 프롬프트에 추가적인 설명 예제 없이 바로 문제를 해결, 사용자 입장에서는 가장 편리함

One -shot : 프롬프트에 추가적인 설명 예제 1개와 함께 문제를 해결

Few-shot: 프롬프트에 추가적인 설명 예제 n개와 함께 문제 해결

 

zero-shot의 성능이 제일 낮고 example을 늘려줄수록 성능이 좋아짐

추가적인 fine-tuning 없이도 in-context learning 만으로 결과를 얻는 것이 가능해짐 

 

Emergent Abilities

창발 능력이라고 하며, 큰 LLM 모델 학습 과정에서 특정 임계치를 넘으면 기존의 작은 LLM 모델에서 발생하지 않았던 새로운 능력이 발현됨

특정한 임계값이 도달될 때까지 성능은 거의 무작위에 가까움. 그 후에는 성능이 훨씬 높게 증가함.

높은 품질의 데이터로 훈련된 모델의 경우 더 적은 학습이나 더 적은 모델 파라미터로 발생할 수 있음.

 

Augment Prompting Strategies

Augmented Prompting 세팅에서의 창발능력은 다음과 같다.

중간에 설명과정을 넣어줘서 해결할 수 있도록 한다. 

 

Temperature

temperature은 softmax regression의 각 다음 토큰이 샘플링시에 뽑힐 확률을 뾰족하게 만들어주거나 평평하게 만들어줌

temperature 값이 작을 경우 -> 가장 확률값이 높은 토큰의 예측 확률이 증폭 , 가장 그럴듯한 토큰이 뽑힐 확률이 높아짐

temperature 값이 클 경우 -> 모든 토큰의 확률값이 평평해짐, 더욱 다양성 있는 텍스트가 생성될 확률이 높아짐 

llm = ChatOpenAI(temperature = 0, model_name = 'gpt-4-0314', )

 랭체인을 이용해 구현할 때 temperature 파라미터를 다음과 같이 코드로 나타낸다. 

 

BPE(Byte Pair Encoding)

GPT-1에서 사용됨. 텍스트 데이터를 가변 길이 바이트 쌍으로 표현되며, 빈도가 높은 문자열을 짧은 바이트 쌍으로 나타내는 방식으로 동작함. 

1)  초기 단계에서는 각 문자를 기본 단위로 취급하고, 빈도수를 계산함. 

2)  가장 빈도가 높은 연속 문자쌍(바이트쌍)을 찾아 새로운 단위로 합침.

3)  더 이상 합칠 수 있는 문자쌍이 없거나, 지정된 단어 집합 크기에 도달할 때 까지 과정 2를 반복

 

BPE를 사용하면 자주 등장하는 문자열이 짧은 코드로 표현되므로 데이터 저장과 전송이 효율적으로 이루어짐 . unk 토큰을 줄어드는 효과가 있음. 

가장 많이 나오는 단어인 aa를 Z로 묶고, 다음으로 ab 를 Y로 묶고, ZY를 X로 또한번 묶어 위와 같이 나타낸다.

 

출처: udemy LLM(Large Language Model) 기초 개념부터 고성능 LLM인 Llama 2를 나만의 데이터셋에 파인튜닝(Fine-Tuning)까지!