[BoostCamp AI] Generalization & Data Generation 정리

Generalization


  • Bias & Variance

    • 학습 진행이 얼마 안한경우 : High Bias → Underfitting
      • 데이터를 너무 고려하지 않은 경우(데이터가 적은 경우에 생긴다)
    • 학습 진행이 너무 된 경우 : High Variance → Overfitting
      • 노이즈까지 학습이 된 경우
  • Train/Validation

    • 훈련 셋 중 일정 부분을 따로 분리, 검증 셋으로 활용
    • 학습은 train set에 fitting되는 과정인데 validation set을 사용하여 학습되지 데이터를 가지고 편향되었는지 확인하는 과정이 필요하다.
  • Data Augmentation

    • 주어진 데이터가 가질 수 있는 경우(case), 상태(state)의 다양성
    • 데이터에 있을 수 있는 다양한 노이즈를 넣어서 학습시켜 나중에 노이즈가 들어온 데이터를 제대로 판단하는데 도움을 줄 수 있다.
  • torchvision.transforms

    • Image에 적용할 수 있는 다양한 함수들이 있다.
  • Albumentations

    • transforms 보다 빠르고 다양한 것들을 제공해주는 라이브러리이다.

Data Generation

  • Data Feeding

    • Feed = 대상의 상태를 고려해서 적정한 양을 준다.

    • 모델에 먹이(Data)를 주다?
      - 모델의 계산이 20 batch/s인데 Data Generator가 10 batch/s라면 성능은 10 batch/s이다.
      - Data Generator가 30 batch/s인데 모델이 20 batch/s라면 성능은 20 batch/s이다.
      - 즉, 성능은 min(model(batch/s), Data Generator(batch/s))을 따라간다.

      transform = transforms.Compose([
      	transforms.ToTensor(),
      	transforms.RandomRotation([-8,8]),
      	transforms.Resize([1024,1024])
      ])
      
      transform = transforms.Compose([
      	transforms.ToTensor(),
      	transforms.Resize([1024,1024]),
      	transforms.RandomRotation([-8,8])	
      ])
    • 위와 아래의 경우 시간차이가 많이 난다.

  • torch.utils.data

    • Datasets
      • Vanilla Data를 Dataset으로 변환
      • Dataset 구조
    from torch.utils.data import Dataset # Dataset 라이브러리 상속

    class MyDataset(Dataset):
        def __init__(self): # MyDataset이 처음 선언되었을 때 호출
            pass

        def __getitem__(self, index): # 데이터 중 index 위치의 아이템을 리턴
            return None

        def __len__(self): # MyDataset의 전체 길이 리턴
            return None
  • DataLoader
    • 내가 만든 Dataset을 효율적으로 사용할 수 있도록 관련기능 추가
train_loader = torch.utils.data.DataLoader(
                    train_set,
                    batch_size=batch_size,
                    num_workers=num_workers,
                    drop_last=True)
  • Dataset과 DataLoader는 분리되는 것이 좋다
    • 둘의 하는 일이 엄연히 다르다.

좋은 웹페이지 즐겨찾기