1. 이번 주 학습 내용 정리
이번 3주차는 LLM을 다루기 위한 사전 준비 과정으로, Transfer Learning(전이학습)과 Pre-trained Language Model에 대한 개념을 배우는 시간이었다. 그동안 머신러닝과 딥러닝 모델이 새로운 작업을 할 때, 왜 사전학습된 모델을 사용하는지에 대한 이유를 실습과 이론을 통해 직관적으로 이해할 수 있었다.
Transfer Learning은 방대한 데이터로 일반적인 언어 능력을 학습한 모델을 기반으로, 특정 과제에 맞게 추가 학습을 하는 방식이다. 이 원리는 단순하지만, 실제로는 성능 향상에 매우 중요한 역할을 한다는 것을 직접 실습을 통해 체감했다.
이번 주에 중점적으로 다룬 모델은 BERT와 GPT였다. 구조적으로 BERT는 양방향 문맥을 모두 반영해 문장을 이해하는 데 적합하고, GPT는 한 방향으로 단어를 예측해 나가며 문장을 생성하는 데 적합하다. 각각의 사전학습 방식에도 차이가 있었다. BERT는 문장 내 일부 단어를 무작위로 가리고([MASK] 처리) 이를 예측하는 방식(MLM, Masked Language Modeling)과, 두 문장이 실제로 이어지는 문장인지 예측하는 NSP(Next Sentence Prediction)라는 두 가지 pre-training objective를 함께 사용한다.
MLM을 통해 문맥 기반 단어 이해 능력을 학습하고, NSP를 통해 문장 간 의미 관계를 학습한다. 이러한 방식은 BERT가 문장 내부뿐 아니라 문장 간 관계까지 효과적으로 학습할 수 있도록 돕는다.
또한 이번 주에는 DistilBERT도 함께 다뤘다. DistilBERT는 BERT의 구조를 경량화한 모델로, Knowledge Distillation이라는 방식으로 학습된다. 큰 모델(BERT)의 예측 결과(soft label)를 작은 모델(Student)이 학습하도록 하여, 성능은 유지하면서도 속도와 효율을 크게 향상시킨다. 실제로 DistilBERT는 파라미터 수는 절반 수준이지만, 추론 속도는 더 빠르며, 성능도 대부분의 작업에서 유사한 수준을 보인다. 이런 특성 덕분에 리소스가 제한된 환경에서도 활용도가 높다.
이번 주는 개념을 이론으로만 배우는 것이 아니라, 실제 코드 구현까지 해보면서 모델 동작 원리를 체득하는 데 초점을 맞췄다. 단순히 구조를 외우는 것이 아니라, 어떤 방식으로 입력이 처리되고 결과가 나오는지를 한 줄 한 줄 따라가며 학습한 과정이 인상 깊었다.
또한, 사전학습 언어 모델이 NLP에서 얼마나 큰 전환점이 되었는지도 다시 생각해보게 됐다. 이전에는 각 작업마다 별도의 구조를 설계하고 데이터를 학습시켜야 했지만, 이제는 하나의 강력한 언어 모델을 기반으로 다양한 작업에 빠르게 적용할 수 있는 환경이 만들어졌다. 이는 개발자 입장에서도 생산성과 효율성을 크게 높여주는 흐름임을 실감했다.
2. 과제 진행 후기
기본 과제에서는 DistilBERT를 활용한 뉴스 기사 분류 모델을 구현했다. DistilBERT는 BERT를 경량화한 모델로, 학습 속도나 리소스 측면에서 더 효율적인 특징을 가지고 있다. 실습에서는 tokenizer 설정부터 시작해, 모델 로딩, fine-tuning까지 전체 파이프라인을 따라가며 흐름을 익혔다.
데이터 로딩 시에는 huggingface datasets 라이브러리를 활용했고, 토큰화 과정에서 padding이나 truncation 여부를 설정하며 input pipeline을 구성했다. Collate 함수나 dataloader 구성 방식도 학습 흐름을 이해하는 데 큰 도움이 되었다. 작은 옵션 하나의 차이가 학습에 어떻게 반영되는지도 직접 실험하며 익혔다.
심화 과제는 MNLI(MultiNLI) 데이터셋을 사용한 문장 관계 분류 작업이었다. 두 문장이 주어졌을 때, 그 관계가 “함의(Entailment)”, “중립(Neutral)”, “모순(Contradiction)”인지 분류하는 작업으로, 실제로 다양한 NLP 어플리케이션에서 사용될 수 있는 실용적인 과제였다.
심화 과제를 통해 Transfer Learning의 유의미함을 직접 확인할 수 있었다. 같은 구조의 모델이라도 pretrained 모델을 썼을 때와 처음부터 학습했을 때의 성능 차이가 확연했다. 랜덤 초기화로 학습했을 경우 정확도가 30~40% 수준에 머무는 반면, 사전학습된 DistilBERT를 사용하면 훨씬 빠르게 80% 이상으로 수렴했다.
물론 학습 환경에서 GPU 메모리 부족, 배치 사이즈 조정, tokenizer 적용 방식 등의 현실적인 문제도 마주쳤다. 그러나 이런 과정 하나하나가 모델 개발 흐름에 대한 실제 감각을 키워주는 과정이었다. 정확도 외에도 데이터셋 전처리나 실험 구성 방식, 파라미터 튜닝의 중요성 등 실무에 적용 가능한 학습 포인트가 많았다.
과제를 마치며 느낀 점은, '심화'라는 단어에 비해 부담이 덜했고, 오히려 구조가 단순하고 실험 결과가 눈에 보이는 과제이기에 더 큰 동기부여가 되었다는 것이다. 다른 사전학습 모델과의 비교 실험도 해보고 싶다는 생각이 들었다.
이번 경험을 통해 단순히 '모델을 불러와서 쓰는 것'을 넘어서, 모델의 구조를 이해하고 설정을 조절하면서 문제 해결 방식 자체를 설계할 수 있다는 자신감이 생겼다.
3. 개인적으로 느낀 점과 앞으로의 계획
이번 주는 단순히 하나의 기술을 배운 것이 아니라, 그 기술이 만들어지게 된 배경과 구조를 이해하면서 전반적인 LLM 학습 흐름을 이해하는 데 도움이 된 시기였다. '챗GPT가 똑똑하다'라는 막연한 감탄에서 벗어나, 그것이 왜 가능한지, 어떤 기반 기술이 있는지를 알게 된 주차였다.
LLM은 단순히 프롬프트를 잘 쓰는 것만으로는 충분하지 않다. 모델이 어떤 데이터를 학습했고, 어떤 구조를 가지고 있으며, 어느 부분을 fine-tune 할 수 있는지를 알고 써야 제대로 활용할 수 있다. 이번 주 학습을 통해 그러한 통찰의 시작점을 잡을 수 있었다고 생각한다.
심화 과제를 하면서 느낀 가장 큰 변화는, 퇴근 후 아무 생각 없이 쉬던 시간이 조금씩 의미 있는 학습 시간으로 바뀌고 있다는 점이다. 매주 과제를 하며 차곡차곡 쌓이는 학습이 결국 실력을 만든다는 확신이 생기고 있다. 과제를 단순히 '제출하는 것'이 아니라 '내 방식으로 다시 해석해보는 것'으로 삼아보려 한다.
다음 주차에는 분류 작업을 넘어 생성 기반 실습이 진행될 것으로 예상된다. 개인적으로는 RAG(Retrieval-Augmented Generation)처럼 외부 지식을 활용한 생성 구조나, 다양한 파인튜닝 기법도 다뤄보게 되길 기대하고 있다. 또한, 다양한 오픈소스 모델들과의 비교도 해보면서 ‘LLM 선택의 기준’을 나만의 방식으로 정리해 보고 싶다.
이번 주처럼 핵심 개념을 직접 실습과 함께 체화하는 방식이라면 앞으로도 매주 실력 향상을 체감할 수 있을 것 같다.
'AI > 교육' 카테고리의 다른 글
[항해 플러스 AI] 5주차 WIL: 프로젝트 발판 마련 한 주 (0) | 2025.04.28 |
---|---|
[항해 플러스 AI] 4주차 WIL: LLM을 활용하는 진짜 방법을 배운 한 주 (1) | 2025.04.20 |
[항해 플러스 AI] 2주차 WIL: 딥러닝 이론과 자연어 처리 (0) | 2025.04.08 |
[항해 플러스 AI] 1주차 WIL: 선형 회귀부터 MLP, 과적합 해결까지 (0) | 2025.03.30 |
[항해 플러스 AI] WIL - 시작하는 마음 (0) | 2025.03.23 |