주니어 개발자들이 읽으면 좋은 테크 아티클 모음
F-Lab : 상위 1% 개발자들의 멘토링
1. 이번 주 목표
회사, 개인 일정이 너무 빡빡해 성실하게 임하지 못했던 2주차까지 학습의 진도를 따라잡는 것이 최우선 목표였다.
2. 학습 내용
1. Transfer Learning
data가 부족하거나 충분한 상황에서도 훨씬 빠르게 generalization이 잘되는 모델을 학습하는 방법
💡 자연어 처리 문제들은 어차피 입력이 다 같은 자연어인데, 다른 자연어 처리 문제를 푸는 모델(Pre-trained Model)을 잘 활용하면 data가 적은 자연어 처리 문제도 풀 수 있지 않을까?
구성요소
Pre-trained Model: 충분한 data로 학습하여 자연어 이해 능력 자체가 좋은 모델.
Fine-tuning: pre-trained model을 우리가 목표로 하는 자연어 처리 문제에 맞게 학습시키는 방법. 이 때 목표로 하는 자연어 처리 문제를 일반적으로 downstream task라고 부른다.
1.1 Pre-training
Supervised pre-training: 입력과 출력 pair가 충분한 자연어 처리 문제에 대해서 모델을 학습하는 방식.
학습에 사용되는 데이터가 “정답”을 가지고 있음
감정 분석 (긍정/부정), 스팸 메일 분류(스팸/일반)
Unsupervised pre-training: 주어진 text로부터 가상의 label을 생성하여 가상 label을 맞추는 방향으로 모델을 학습하는 방식.
데이터에 정답이 없음
모델이 스스로 데이터 내의 패턴, 구조, 관계를 스스로 찾아감
단어 임베딩, 텍스트 카테고리 분석 (비슷한 문서끼리 정렬하는)
2. BERT(Bidirectional Encoder Representations from Transformers)
2018년 구글에서 발표한 Transformer Encoder Block
을 사용한 NLU 모델
💡 BERT는 un-supervised 방식으로 pre-trained 모델을 학습하는 방식으로, 입력은 자연어이기만 하면 된다. 특별한 label이 필요가 없기 때문에 위키피디아 등의 text를 그대로 긁어와서 사용할 수 있다.
다음 2가지 loss에 대해 pre-training을 진행한다.
2.1 MLM(Masked Language Model)
💡 문장의 일부분을 지웠을(Masking) 때, 나머지를 보고 맞추는 식으로 모델을 학습하면 자연어 처리율이 올라갈 것 같은데?
특정 token mask: 학습 단계에서 랜덤하게 token들을 [MASK]
라는 special token으로 변경(Masking)
Masking한 token 예측: 1에서 masking한 token들을 예측하는 방향으로 모델을 학습.
2.2 NSP(Next Sentence Prediction)
Text가 두 문장으로 이루어져 있을 때, 두 문장이 실제로 이어진 문장인지 아니면 별개의 문장인지 맞추는 식으로 학습.
DistillBERT
knowledge distillation이라는 방식을 활용하여 BERT와 비슷한 성능을 내지만 더 빠르고 가볍게 만든 pre-trained Transformer 모델
Teacher, student 모델 선정: teacher와 student 모델을 선정함. 일반적으로 teacher 모델은 성능이 좋은 pre-trained 모델, student 모델은 적당히 작게 학습된 모델.
Soft label 생성: teacher 모델을 가지고 soft label을 생성함. 예를 들어, MLM에서 label을 mask하기 전 token의 값이 아니라 해당 mask token에 대한 teacher 모델의 예측 값으로 설정한다(teacher 모델의 예측 값은 argmax를 하기 전의 값을 의미).
Student 모델 학습: 생성한 soft label을 가지고 student 모델을 학습하면 됨.
💡 DistillBERT는 위와 같은 knowledge distillation을 활용하여 학습하며 더 적은 parameter 수와 inference time으로 BERT와 비슷한 성능을 낸다.
3. GPT(Generative Pre-trained Transformer)
생성하는 사전학습 트랜스포머(?)
BERT와 비슷한 방식으로 pre-training을 했으나, 약간 다른 next token prediction loss를 사용한다.
3.1 GPT의 next token prediction
기존 MLM loss: 문장 중간의 token을 masking.
GPT의 next token prediction: 마지막 token을 masking.
앞의 문장만 보고 예측을 하기 때문에 문장 전체를 가지고 학습할 수 있음.
따라서 fine-tunning의 난이도와 효율이 굉장히 좋다.
3.2 Token Generative Model
GPT의 text 생성은 다음과 같이 이루어진다.
주어진 문장을 보고 token 생성
GPT에 어떤 문장을 입력으로 넣음.
next word prediction과 똑같은 과정으로 주어진 문장의 다음 token을 생성할 수 있음.
생성한 token을 주어진 문장에 concat
위의 과정에서 생성된 token을 주어진 문장에 concat함.
그리고 다시 GPT에 입력으로 넣어 token을 생성함.
Special token이 나올 때 까지 생성
생성하는 방식은 sequence-to-sequence model의 decoder가 text를 생성하는 방식과 동일함.
3.3 Large Language Model
parameter의 수를 폭발적으로 늘려 더 이상 fine-tuning에 의존하지 않을 수 있어졌다.
대신 파라미터의 수 만큼 많은 컴퓨팅 자원을 필요로 한다.
3.4 Few-shot learning
어떤 자연어 처리 문제를 풀 때 그 문제의 예시들을 먼저 보여주고, 주어진 문제를 풀리게 하는 것.
train data로 존재하는 입력, 출력의 pair를 그대로 text로 변환하여 넣어주면 마지막에 주어지는 문제를 잘 풀 수 있음.
이렇게 few-shot learning을 활용하면 train data를 이용한 성능 올리기가 가능하다. 또한 여전히 fine-tuning과 같은 별개의 학습 과정도 필요 없다.
3. 느낀점
이번 주차, 재미있었다.
설명의 개연성이 충분하다고 느껴졌고 실제로 들으면서 음… 이런 느낌인가? 라는 연상도 좀 들었다.
few-shot learning에서는 아 프롬프팅의 원리가 이건가? 싶은 생각이 들었다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 4월 13일 오후 2:29
OpenAI가 발표한 Codex의 핵심은 AI와 함께 진짜 팀으로 일하는 것 같은 경험을 준다는거네요.
기존의 코딩 어시스턴트는 Agent라는 이름을 붙였어도 결국은 자동완성의 확장에 그치는 것이라, 즉, 나의 뇌를 확장하는 것이라 한계가 좀 명확했는데요.
이번에 우아한형제들 기술 블로그에 "타입 안전한 API 모킹으로 프론트엔드 생산성 높이기"라는 새 글을 발행하게 되었습니다.
... 더 보기AI 기술이 우리 일상과 산업 전반에 스며들면서 소프트웨어 개발 환경 역시 큰 변화의 물결을 맞이하고 있다. 특히 코딩을 돕는 AI 에이전트의 등장은 개발 생산성에 대한 큰 변화를 만들고 있다. 나 역시 이러한 변화를 체감하며, 나에게 익숙한 소프트웨어 개발의 대표적인 두 축인 프론트엔드와 백엔드 영역에서 AI 기술이 미치는 영향과 그로 인해 변화하는 소프트웨어 엔지니어의 역할에 대해 개인적인 생각을 정리해 본다.
... 더 보기