2023. 8. 26. 15:44ㆍ인공지능
안녕하세요. 쿠루가이입니다. 오늘은 학습을 할 때 자주 나오는 용어인 Epoch, Loss, Accuracy에 대해서 간단히 정리해보겠습니다.
Epoch
에폭이라고 읽고, 전체 데이터가 모두 학습한 단위를 말합니다. 즉, 1에폭은 dataset의 전체 레코드를 한번씩 학습했다는 의미입니다. 아래와 같이 `num_train_epochs = 5`와 같은 경우, 전체 dataset의 전체 레코드를 5번씩 학습했다는 의미입니다.
# import transformers
# # needed for gpt-neo-x tokenizer
tokenizer.pad_token = tokenizer.eos_token
trainer = maskTrainer(
model=model,
train_dataset=data["train"],
args=transformers.TrainingArguments(
per_device_train_batch_size=1,
gradient_accumulation_steps=1,
# warmup_steps=200,
#max_steps=3000, ## 초소형만 학습: 10 step = 20개 샘플만 학습.
fp16=True,
output_dir="outputs",
save_total_limit=2,
logging_steps=50,
report_to=["tensorboard"],
num_train_epochs = 5, # 기본값 : 5
learning_rate=3e-4,
# resume_from_checkpoint="./outputs/checkpoint-9500",
# resume_from_checkpoint=True,
lr_scheduler_type= "cosine",
#optim="paged_adamw_8bit"
),
data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False),
)
model.config.use_cache = False # silence the warnings. Please re-enable for inference!
trainer.train()

Loss
로스라고 읽고, 정답 값과의 오차를 말합니다. 로스 값은 낮으면 낮을 수록 좋습니다. 위의 소스에서 50step마다 아래와 같이 표시되도록 설정을 했는데 로스값을 보면 처음 2.2에서 400스텝 정도 지나니까 1.61 정도로 내려간것을 확인할 수 있습니다. 보통 스텝이 진행 될수록(에폭이 진행 될 수록) 로스값은 내려가게 되어 있습니다. 만약에 스텝이 진행할수록 로스값이 올라간다라고 하면 뭔가 잘못 학습이 되고 있다라고 생각할 수 있습니다.

Accuracy(acc)
어큐라시라고 읽고, 정확도를 의미합니다. acc는 모델의 성능을 평가하는 데 사용되는 지표 중 하나입니다. 주어진 데이터셋에서 모델이 올바르게 예측한 샘플의 비율을 나타내는 값입니다. 보통 훈련 데이터와 샘플데이터를 8:2로 나눠서 진행합니다. 만약에 100개의 테스트를 했는데 90개가 정답이라면 정확도가 90%라고 할 수 있습니다. acc가 높으면 높을수록 좋습니다.
'인공지능' 카테고리의 다른 글
F1 Score 측정하는 프로그램 (0) | 2023.10.30 |
---|---|
Deepl API를 이용하여 영어를 한국어로 변환하기 (1) | 2023.09.20 |
github의 llama_cpp.server에 lora 기능을 추가해달라고 요청했다! (0) | 2023.09.19 |
WSL에 우바부가 설치하기 (1) | 2023.08.27 |
[LLM] 인공지능 챗으로 동맥경화에 대해서 상담을 받아보았습니다. (0) | 2023.08.21 |
[LLM] 우바부가 API로 gradio 연동하기 (0) | 2023.08.17 |
임베딩 개념 이해 (0) | 2023.08.02 |
파인튜닝 시, step 수는 몇으로 해야하는지 알아보자. (0) | 2023.07.13 |