본문 바로가기

728x90
반응형

전체 글

[pytorch] 전이 학습, Transfer Learning Transfer learning 다른 데이터셋으로 학습시킨 모델(pre-training learning)을 현재 데이터에 적용하는 것 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 좋기 때문에 활용하는 것 현재 딥러닝에서 가장 일반적으로 사용하는 학습 기법 backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행함 이미지 : Torchvision에서 다양한 기본 모델을 제공하고 있음 자연어 : HuggingFace가 사실상 표준으로 사용되고 있음 Freezing pre-trained model 활용 시 모델 일부분을 학습하지 않도록 frozen 시킴 최근에는 stepping frozen 기법이 사용되기도 함 (중간중간 frozen 시켜 그 부분을 학습시키지 않고 .. 더보기
[pytorch] 학습 결과 및 모델 저장하기 model.save() 학습 결과 저장 함수 모델 형태(architecture)와 파라미터를 저장할 수 있음 모델 학습 중간 과정을 저장함으로써 최선의 결과를 가지는 모델을 선택할 수 있음 만들어진 모델을 외부 연구자와 공유해 학습 재연성을 향상할 수 있음 state_dict : 모델의 파라미터를 의미 # 모델의 파라미터를 저장 torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt")) # 동일한 형태의 모델을 만들어 파라미터만 로드하여 사용 new_model = TheModelClass() new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt"))) # 모델 arc.. 더보기
[pytorch] Dataset & Dataloader Dataset 클래스 하나의 데이터를 어떻게 가져올 것인가? 데이터 입력 형태를 정의하는 클래스 데이터를 입력하는 방식을 표준화 이미지, 텍스트, 오디오 등 데이터 포맷에 따라 다른 입력을 정의해야 한다. import torch from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, text, labels): # 초기 데이터 생성 방법 지정 self.labels = labels self.data = text def __len__(self): # 데이터의 전체 길이 return len(self.labels) def __getitem__(self, idx): # index값을 주었을 때 반.. 더보기
[DL개념]Bootstrapping & Bagging & Boosting Bootstrapping이란 간단히 어떤 테스트나 평가 메트릭에서 랜덤 하게 샘플링하여 사용하는 것을 의미한다. Bagging 이란 Bootstrapping Aggregating의 축약어이다. bootstrapping 기법으로 학습한 여러 개의 모델을 의미한다. 예를들어, 100개 데이터가 있을 경우, 100개를 한 번에 다 사용하는 것이 아니라 80개의 데이터를 랜덤 하게 추출하여 학습한 모델을 여러 개 만든다. 이 모델의 결괏값의 consensus, 얼마나 일치하는지 확인하여 그 활용 여부를 판단하는 것이다. 모델의 결과 값들은 평균이나 투표 등을 통해 최종 값을 결정하는데 일반적으로 많은 데이터를 한 번에 사용한 단일 모델보다 일부 데이터를 사용한 여러 개의 모델의 결괏값을 활용하는 것이 더 좋은 .. 더보기
Bias(편향) & Variance(분산) Variance 추정값 분산 : 모델의 예측값 & 예측 평균의 차이 variance(분산)란 입력값이 들어갔을 때 출력 값이 얼마나 일관적으로 나오는가에 대한 개념으로 볼 수 있다. 즉, 분산이 낮을 경우(low variacne) 비슷한 입력값에 대해 비슷한 출력을 뱉는다. 선형 회귀식과 같은 간단한 모델을 생각할 수 있다. 반면 분산이 높을 경우(high variance), 비슷한 입력값을 받음에도 불구하고 출력 값의 차이가 큰 경우이다. 이는 개개의 데이터에 과하게 적합된 overfitting 문제와도 연관이 있다. $Var [h(x)] = E[(h(x) - E[h(x)])^2]$ Bias 추정값 편향 : 모델의 예측값 & 이상적인 모델의 예측값의 차이 bias(편향)란 모델의 예측값과 실제값의 차이.. 더보기
Generalization, 일반화 '과적합'이라는 개념을 설명할 때 함께 많이 사용되는 그림이다. Underfitting은 모델이 너무 간단하거나 학습 데이터가 충분하지 않아 학습 데이터에서도 성능이 좋지 않게 나오는 경우이다. 모델이나 데이터에서 부족한 부분을 찾아 보완해야 한다. Overfitting은 과적합이라고도 하고 기계학습에서 이슈가 많이 되는 부분이다. 모델이 학습 데이터에 너무 맞춰진 나머지 새로 들어오는 테스트 데이터로는 학습 데이터만큼의 성능을 보장할 수 없는 경우다. 이를 해결하기 위해 generalization, 즉 일반화 성능을 높이는 기법이 다양하게 연구되고 적용되고 있다. 일반화 성능을 높인다는 것은 무슨 뜻일까? 단순히 모델의 성능이 좋아진다는 뜻은 아니다. 일반화 성능이라는 것은 학습 데이터의 에러와 테스트.. 더보기
로지스틱 회귀 편미분 정리 및 구현 편미분 계산 과정 기본 구현 모델 import torch import torchvision import torch.nn as nn from torchvision import datasets, models, transforms import os import numpy as np class LR(nn.Module): def __init__(self, dim, lr=torch.scalar_tensor(0.01)): super(LR, self).__init__() self.w = torch.zeros(dim, 1, dtype=torch.float).to(device) self.b = torch.scalar_tensor(0).to(device) self.grads = {'dw': torch.zeros(dim, 1.. 더보기
[Ray] 3-2 Ray Libraries: Ray Train (Key Concept) Ray Train의 주요 콘셉트는 다음과 같음 1. Trainers는 분산 학습을 수행 2. Configuration 객체는 configure 학습에 사용됨 3. Checkpoints는 학습 결과를 반환함 4. Predictors는 추론, 배치 예측등에 사용됨 Trainers trainers는 분산된 학습 수행에 대해 응답함 output : Result (학습 결과로 나온 metric과 마지막에 저장된 Checkpoint 포함) 또한 확장된 데이터 수집과 전처리를 위해 데이터셋과 전처리기로 구성할 수도 있음 아래 표는 내장 trainers Deep Learning Trainers Tree-Based Trainers Other Trainers TorchTrainer TensorflowTrainer Horo.. 더보기

728x90
반응형