본문 바로가기

분류 전체보기

(22)
4-3. Reject Sampling, DPO, (f. 강화학습 없이 코드 가독성 높이기) 4.3 강화 학습이 꼭 필요할까?  강화 학습은 강력한 학습 방법이지만, 모든 경우에 꼭 필요한 것은 아니에요. 모델의 성능을 개선하기 위한 다양한 접근 방법이 있으며, 때로는 강화 학습 없이도 효율적인 해결책이 있을 수 있죠. 이번 글에서는 강화 학습 없이도 성능을 향상시킬 수 있는 몇 가지 대안을 살펴볼 거예요. 4.3.1 기각 샘플링: 단순히 가장 점수가 높은 데이터를 사용한다면?  기각 샘플링(Reject Sampling)은 높은 점수를 가진 데이터만을 사용하는 방식이에요. 강화 학습처럼 복잡한 학습 과정을 거치지 않고, 단순히 점수가 높은 데이터를 선택해 모델을 학습시키는 것이죠. 이 방법은 계산적으로 간단하고, 모델이 명확한 기준에 따라 학습할 수 있게 도와줘요. 요약:기각 샘플링은 점수가 높..
4-2. 선호 데이터셋, 강화학습, PPO, RLHF 4.2 채점 모델로 코드 가독성 높이기  코드의 가독성은 개발자 간의 협업과 코드 유지 보수에 중요한 요소예요. 모델을 사용해 코드 가독성을 높이는 방법을 배우는 것은 코딩 테스트에서도 큰 장점이 될 수 있죠.4.2.1 선호 데이터셋을 사용한 채점 모델 만들기  선호 데이터셋(Preference Dataset)은 두 개의 코드 버전 중 하나를 선호하는 상황을 포함하는 데이터셋이에요. 예를 들어, 가독성 면에서 더 나은 코드를 선택하는 작업을 모델이 학습할 수 있는 데이터셋이죠. 선호 데이터셋은 두 가지 코드를 비교하고, 어떤 코드가 더 나은지 학습하게 함으로써 코드 가독성을 높이는 작업을 수행할 수 있어요. 요약:선호 데이터셋은 두 가지 코드 중 더 나은 가독성을 가진 코드를 선택하도록 학습시키는 데이터..
4-1. 사전학습(Pretraining), 지도 미세 조정(Fine-tuning) 4.1 코딩 테스트 통과하기: 사전 학습과 지도 미세 조정  코딩 테스트에서 성공하기 위해서는 모델의 사전 학습과 지도 미세 조정 과정에 대한 이해가 중요해요. 이 두 가지 과정은 모델 성능을 높이는 핵심적인 역할을 해요.4.1.1 코딩 개념 익히기: LLM의 사전 학습  사전 학습(Pretraining)은 대규모 데이터에서 기본적인 언어 패턴을 학습하는 단계예요. 이 과정을 통해 모델은 텍스트 데이터를 이해하는 능력을 기르게 돼요. 사전 학습된 모델은 이후에 특정 작업에 맞게 미세 조정할 수 있는 기초를 쌓게 되죠.요약:사전 학습은 모델이 대규모 데이터에서 언어 패턴을 학습하는 단계로, 이후 미세 조정을 위한 기초를 쌓아요.용어설명:사전 학습(Pretraining): 대규모 데이터를 통해 모델이 기본적..
3-4. 허깅페이스 파이프라인 vs. 직접 모델 사용 3.5 모델 추론하기  모델을 학습한 후에는 추론을 통해 실제 작업에 활용할 수 있어요. Hugging Face에서는 파이프라인 기능을 통해 다양한 작업을 쉽게 설정하고 사용할 수 있죠. 뿐만 아니라, 직접 모델을 불러와 세부적으로 제어하는 방식으로도 추론할 수 있어요. 3.5.1 파이프라인을 활용한 추론  Hugging Face는 pipeline이라는 기능을 통해, 학습된 모델로 다양한 작업을 쉽게 수행할 수 있도록 도와줘요. 예를 들어, 감정 분석, 번역, 텍스트 생성 등의 작업을 파이프라인으로 설정해 바로 사용할 수 있어요.from transformers import pipeline# 감정 분석 파이프라인 생성classifier = pipeline('sentiment-analysis')# 텍스트 입..
3-3. 허깅페이스를 이용한 모델 학습 3.4 모델 학습시키기  모델을 학습시키기 위해서는 데이터 준비와 모델 설정이 중요한 단계예요. Hugging Face는 Trainer API를 제공해서 학습 과정을 더 쉽게 진행할 수 있도록 도와줘요.3.4.1 데이터 준비모델을 학습시키기 위해 데이터를 먼저 준비해야 해요. Hugging Face의 datasets 라이브러리를 사용하면 다양한 데이터셋을 간단하게 불러와 사용할 수 있어요. from datasets import load_dataset# IMDB 감정 분석 데이터셋 불러오기dataset = load_dataset("imdb")# 훈련 및 평가 데이터셋으로 분리train_dataset = dataset['train']test_dataset = dataset['test']print(train_..
3-2. 허깅페이스 라이브러리 쉽게 사용해보기 3.3 허깅페이스 라이브러리 사용법 익히기  Hugging Face 라이브러리는 사전 학습된 트랜스포머 모델을 쉽게 사용할 수 있도록 돕는 도구예요. 이번에는 모델을 더 세부적으로 다루는 방법과 토크나이저 및 데이터셋 활용법을 배워볼게요.3.3.1 모델 활용하기   허깅페이스에서는 사전 학습된 모델을 불러와 바로 사용할 수 있어요. 앞서 우리는 파이프라인을 사용해 감정 분석을 수행했지만, 이번에는 좀 더 세부적인 방식으로 모델을 다루는 방법을 알아볼게요.from transformers import BertTokenizer, BertModel# BERT 토크나이저 및 모델 불러오기tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')model = B..
3-1. 허깅페이스(Hugging Face) 3.1 허깅페이스  Hugging Face는 다양한 사전 학습된 트랜스포머 모델을 쉽게 사용할 수 있도록 지원하는 라이브러리예요. 이 라이브러리를 통해 텍스트 분류, 번역, 요약, 텍스트 생성 등 다양한 자연어 처리 작업을 간단하게 수행할 수 있어요. 복잡한 설정 없이 사전 학습된 모델을 바로 활용할 수 있기 때문에 효율적이죠.    참고로, 허깅 페이스(Hugging Face)의 어원을 알면 기능을 이해하기 더 수월해요. Hugging은 '포옹'을 의미하죠. FACE는 '얼굴' 즉 인간을 의미합니다. 그대로 해석하자면, 인간에게 포옹을 하는 것이죠. 즉, 인간에게 도움이되는 목적으로 만들어졌다는 뜻이에요. 그래서, 허깅페이스는 다양한 트랜스포머 모델들을 제공하는 라이브러리 역할을 하는 것이죠.  요약:..
2-6. 인과적 언어 모델링, 마스크 언어 모델링에 대한 이해 2.8 주요 사전 학습 메커니즘  트랜스포머 모델들은 사전 학습(pretraining) 단계에서 대량의 데이터를 통해 기본적인 언어 패턴을 학습해요. 이 과정을 통해 다양한 자연어 처리 작업에 쉽게 적용할 수 있는 모델이 만들어지죠.    2.8.1 인과적 언어 모델링 (Causal Language Modeling)   인과적 언어 모델링(Causal Language Modeling)은 주어진 문장의 앞부분을 보고 그 뒤에 나올 단어를 예측하는 방식이에요. GPT 시리즈에서 사용되는 학습 방식이기도 해요. 이 방식에서는 이전 토큰만을 사용해 다음 토큰을 예측하기 때문에, 순차적으로 데이터를 처리하며 문맥을 학습하게 돼요. 요약:인과적 언어 모델링은 주어진 문장의 앞부분을 바탕으로 다음에 나올 단어를 예측..
2-5. BERT, GPT, BART, T5에 대한 이해 2.7 트랜스포머를 활용한 대표적인 아키텍처 2.7.1 인코더를 활용한 BERT   BERT (Bidirectional Encoder Representations from Transformers)는 트랜스포머의 인코더 구조만을 사용하는 모델이에요. BERT는 문맥을 양방향으로 이해할 수 있는 특징이 있어요. 즉, 문장 내에서 단어가 앞뒤로 어떻게 연관되는지 학습할 수 있죠. BERT를 영어 그대로 해석하면, 양방향(B) 인코더(E) 표현(R) 트랜스포머(T)라는 뜻이죠. 이름만 봐도 직관적으로 양방향으로 인코더만을 사용하여 문장을 이해한다는 것을 알 수 있어요. BERT는 주로 문장 분류, 감정 분석, 질문 응답 같은 작업에 많이 활용돼요. 요약:BERT는 트랜스포머의 인코더 구조를 사용하여 양방향으로 ..
2-4. 인코더와 디코더의 이해 2.5 인코더 (Encoder) 인코더의 역할   인코더(Encoder)는 입력 데이터를 처리하고 그 정보를 디코더로 전달하는 역할을 해요. 입력된 텍스트는 여러 층의 어텐션과 피드 포워드 네트워크를 거쳐 잠재적 표현(latent representation)으로 변환된 후, 디코더로 넘겨져요.   트랜스포머에서 인코더는 병렬 처리를 통해 입력 데이터의 모든 부분을 동시에 처리할 수 있어요. 이는 RNN 같은 순차적 처리 방식과는 달리, 문장의 모든 단어를 한꺼번에 처리하는 장점을 제공하죠.  인코더의 구조   인코더는 여러 개의 셀프 어텐션(Self-Attention) 층과 피드 포워드 층으로 구성되어 있어요. 이 구조를 통해 각 단어 간의 관계를 학습하고, 그 관계를 바탕으로 중요도를 계산해요.  요약..