본문 바로가기
카테고리 없음

Transformer 활용 가이드

by fisherman1 2025. 6. 1.

개요 : 이 강의에서는 BERT 모델을 로컬에 다운로드하여 Transformer 코드에 적용하는 방법과, Transformer의 다양한 활용 사례 10가지를 강의식으로 설명합니다. 코드와 설명을 구분해 작성하여 이해를 돕습니다.

1. BERT 모델 다운로드 및 코드 적용 방법

Transformer 모델은 Hugging Face Hub에서 다운로드 가능하며, 인터넷 연결이 어려운 경우 직접 다운로드한 모델 파일을 로컬에서 사용할 수 있습니다. 이를 위해 Hugging Face 페이지 (bert-base-uncased)에서 아래 파일들을 다운로드해 ./bert_model/에 저장합니다:

  • pytorch_model.bin (모델 가중치)
  • config.json (모델 구성)
  • vocab.txt (토크나이저 단어 집합)

로컬에 저장된 모델을 코드에 적용하는 방법은 다음과 같습니다:

코드
from transformers import BertTokenizer, BertModel

model_path = "./bert_model/"
tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertModel.from_pretrained(model_path)

2. Transformer 활용 예제 10가지

1️⃣ 감정 분석

문장에서 감정을 분류하는 작업 (예: 긍정/부정)

코드
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
print(classifier("I love Transformers!"))

2️⃣ 텍스트 생성

GPT 모델을 사용하여 주어진 문장 이후의 텍스트를 생성

코드
from transformers import pipeline
generator = pipeline("text-generation", model="gpt2")
print(generator("Once upon a time", max_length=50)[0]['generated_text'])

3️⃣ 번역 (영-불)

영어 문장을 프랑스어로 번역

코드
from transformers import pipeline
translator = pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr")
print(translator("Hello, how are you?")[0]['translation_text'])

4️⃣ 문서 요약

긴 문서를 짧게 요약

코드
from transformers import pipeline
summarizer = pipeline("summarization")
text = "Transformers have revolutionized NLP..."
print(summarizer(text, max_length=50)[0]['summary_text'])

5️⃣ 질문-응답

문서에서 질문에 대한 답변을 찾기

코드
from transformers import pipeline
qa = pipeline("question-answering")
context = "The Transformer model was introduced by Vaswani et al."
print(qa(question="Who introduced the Transformer?", context=context)['answer'])

6️⃣ NER (개체명 인식)

문장에서 사람, 장소, 조직명을 추출

코드
from transformers import pipeline
ner = pipeline("ner", grouped_entities=True)
print(ner("Hugging Face is based in New York."))

7️⃣ 문장 유사도

두 문장의 의미적 유사도 계산

코드
from transformers import AutoTokenizer, AutoModel
from sklearn.metrics.pairwise import cosine_similarity
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
def embed(text): return model(**tokenizer(text, return_tensors='pt')).last_hidden_state.mean(dim=1)
sim = cosine_similarity(embed("I like AI").detach().numpy(), embed("I love ML").detach().numpy())
print(sim)

8️⃣ 임베딩 시각화

문장 임베딩을 2D 차원으로 시각화

코드
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
sentences = ["I like AI.", "The sky is blue.", "It is raining."]
embeddings = [embed(s).detach().numpy()[0] for s in sentences]
tsne = TSNE(n_components=2, random_state=42).fit_transform(embeddings)
plt.scatter(tsne[:,0], tsne[:,1])
for i, s in enumerate(sentences): plt.text(tsne[i,0]+0.01, tsne[i,1]+0.01, s)
plt.show()

9️⃣ Attention Score 시각화

BERT Attention Score를 시각화하여 입력 간 관계 분석

코드
# BERT Attention Score 출력 코드는 앞서 작성한 코드와 동일

🔟 파인튜닝

BERT를 사용자 데이터셋(IMDB)으로 파인튜닝

코드
from transformers import BertForSequenceClassification, Trainer, TrainingArguments
from datasets import load_dataset
dataset = load_dataset("imdb")
def tokenize_fn(ex): return tokenizer(ex["text"], padding="max_length", truncation=True)
tokenized = dataset.map(tokenize_fn, batched=True)
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")
args = TrainingArguments(output_dir="./results", evaluation_strategy="epoch", num_train_epochs=1)
trainer = Trainer(model=model, args=args, train_dataset=tokenized["train"].select(range(1000)), eval_dataset=tokenized["test"].select(range(1000)))
trainer.train()

마무리

BERT 모델 수동 다운로드 및 Transformer 활용법을 상세히 학습하였습니다. 각 코드를 직접 실행해보며 이해도를 높여보세요!