BoostCamp

2021.08.24 - [Week 4] Day 2. 대회 진행 중

배기니어 2021. 8. 25. 01:55

벌써 많은 캠퍼분들이 리더보드에 제출하고 계신다.

우리 팀 분들도 다 잘하고 계신 것 같다.

나는 아직 프로그래밍 스킬이나 사용법에 익숙하지 않아 더 연습이 필요하다.

그래서 수업 진도에 맞춰 따라가고 있다.

조급해하지 않는게 집중에도 좋고 정신적으로 안정이 될 것 같다.

 


공부한 내용

1. Dataset

 1.1. Dataset

  1.1.1 Dataset

   • 데이터를 하나씩 내보낼 수 있도록 기능 구현

   • Vanilla data는 문제 해결에 바로 사용 불가

   • Overview에서 정의한 문제를 바탕으로 데이터를 일반화하는 작업 필요

   • 모델은 Dataset을 바탕으로 학습

   • EDA를 통해 데이터를 이해하는 것이 먼저

   • Data Analysis를 바탕으로 Data Pocessing에서 적용할 수 있는 방법 모색

   • ML pipeline에서 Data Processing 과정에 해당

   • Data의 type, 형태, domain 등에 따라 Dataset 만드는 방식이 다름

 

  1.1.2. Pre-processing

   • Dataset 처리 과정

   • Model 만들기 전 전처리 과정

   • Data science의 많은 비중 차지

   • 많은 시간 소요

   • 어떤 domain에서는 특정 전처리 방법이 중요한 경우가 있음

   • 반드시 전처리를 해야 성능이 좋아지는 것은 아님

   • 전처리 진행 후 실험을 통해 성능 테스트

 

  1.1.3. Data Science

   • 어떤 data라도 문제를 잘 정의하고 해결하는 것이 목표

   • 현실은 data에 많은 문제가 있는 경우가 대부분

   • Pre-processing에 사용할 함수 이해 필요

   • 좋은 data가 좋은 성능을 낼 확률 높음

 

  1.1.4. Bounding Box

   • 사진은 특정 대상만 명확하게 찍을 수 없는 경우가 대부분

   • 원하는 object를 명확하게 표시하기 위한 metadata

   • object를 제외한 나머지 픽셀은 noise

   • bounding box를 이용해서 data를 처리하면 score 향상에 도움

 

  1.1.5. Resize

   • 이미지의 해상도가 높으면 계산량이 증가하므로 학습 어려움

   • resizing은 작업의 효율화

   • 학습에 최적인 size를 찾는 것이 효율적

 

 1.2. Generalization

  1.2.1. Bias & Variance

   • Bias

    - High Bias = Underfitting

    - model이 data를 fitting하지 못해서 일부 data에 편향된 결과 발생

    - data를 너무 고려하지 않은 경우

    - data를 적게 사용한 경우

   • Variance

    - High Variance = Overfitting

    - 학습이 너무 많이 진행되어 model의 복잡도 증가

    - noise, 이상값 등 너무 많은 data를 fitting하는 경향

 

  1.2.2. Train & Validation

   • Validation

    - 학습이 제대로 되었는지 검증하기 위한 dataset

    - 학습에 이미 사용된 train set을 이용하여 검증하면 제대로 된 검증 불가능

    - 학습에 이용되지 않은 분포인 validation set을 이용해 모델의 일반화 검증

 

  1.2.3. Data Augmentation

   • data를 일반화하는 과정

   • data 적용 대상을 통해 data에 발생할 수 있는 noise 추측 가능

   • domain에서 발생할 수 있는 모든 경우를 다 담은 dataset을 사용한다면 test set에 noise가 있더라도 좋은 결과를 산출할 수 있다는 아이디어

   • 다양한 이미지 학습 효과

   • torchvision.transforms

   • Albumentations

 

2. Data Generation

 2.1. Data Generation

  • model이 학습을 효율적으로 할 수 있도록 dataset에서 data를 generation하는 방법

  • 빠른 training과 inference가 목표

 

 2.2. Data Feeding

  • Feed : model의 성능을 알고 data를 넘기는 것

  • 효율을 높이기 위해 model의 처리량만큼 data를 generation하는 것이 중요

  • Generator의 성능, model 성능 benchmarking 후 확인

  • Dataset의 전처리 과정에 따른 생성 능력 차이

 

 2.3. torch.utils.data

  • Datasets

   - 기본 구조 : __init__, __getitem__, __len__

  • DataLoader

   - batch와 연관된 option : shuffle, sampler, collate_fn

   - num_workers : 테스트하며 적정 값 찾아야 함

  • Dataset과 DataLoader는 분리

   - 코드 재사용성 측면에서 분리하는 것이 좋음

   - Dataset과 DataLoader는 하는 일이 다름

   - DataLoader에 Dataset만 변경하여 재사용 가능

 

3. Special Mission

 3.1. EDA

  • 성별 비교

   - 여성 1658, 남성 1042

   - 여성이 남성의 약 1.6배

 

 

  • 나이 비교

   - 30대 이하와 30대 이상 60대 미만의 수가 많다.

   - 60대 이상의 수가 매우 적다.

 

 

  • 나이 & 성별 비교

   - 60대 이상의 데이터가 적은 것을 위에서 본 것보다 더 확실하게 알 수 있다.

 

 

  • 마스크를 제외하면 눈과 목 정도가 노출되는데 나이를 어떻게 학습할 것인가?

  • validation set에서 어떤 데이터를 틀리게 예측했는지 분석하면 성능 향상을 위한 아이디어가 떠오르지 않을까?

 

 3.2. Labeling

  • train data의 label을 만들기 위한 class 생성

  • input : train.csv

  • output : 18900개의 데이터 생성

 

4. 피어세션

 • Filezila와 Xshell 사용 방법 공유

 • 모델 학습 속도 개선 방안

  - validation 분리 시 dataframe 상태에서 분리하는 것보다 tensor 상태에서 분리하는 것이 빠름

  - batch size 늘려 epoch 당 학습 속도 단축

 • 60대 이상 데이터가 부족

 • miss labeling 문제

 • accuracy vs. f1 score

  - accuracy 높아도 f1이 낮은 경우 있다.

  - f1을 loss로 사용하는 방법 고민

 • Data Aumentation

  - 마스크 쓴 데이터 많아 데이터 불균형 문제 발생 가능

  - normal, incorrect 이미지를 늘리는 방법 고민

  - SMOTE 적용 방법 고민

https://john-analyst.medium.com/smote%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%88%EA%B7%A0%ED%98%95-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-5ab674ef0b32

 • 일반화 중요성

  - validation set으로만 측정하는 것에 한계가 있어 보인다.

  - to(device) 사용 : model, image_batch, label_batch

 • loss 계산 방법

  - label을 one-hot encoding 적용하여 loss 계산

 • Pytorch image augmentation 기법

http://incredible.ai/pytorch/2020/04/25/Pytorch-Image-Augmentation/

 • 도메인 선택 결과 공유

 


Dataset의 어떤 정보까지 게시가 가능하고 불가능한지 잘 모르겠어서 자세한 내용 적기가 고민된다.

시각화 강의를 빨리 마저 들어서 분석 결과를 더 잘 표현할 수 있도록 해야겠다.