본문 바로가기
TIL/Boostcamp AI tech

[Boostcamp]Week4-Day17. Model :: seoftware

by seowit 2021. 8. 25.
목차
1. 강의정리
    1-1. P stage - chap5. Model 1
    1-2. P stage - chap6. Model 2
2. 피어세션 정리
3. 데일리 회고 

📜 강의 정리 


[P stage] Chapter5. Model1 : Model with PyTorch

 

🌈 Pytorch라는 프레임워크가 가지는 특성과 Pytorch를 사용하여 모델을 구성하는 방법을 알아보자

 

모델 : In general, a model is an informative representation of an object, person or system.

1. pytorch

  • Open Source Machine Learning Framework
  • 런타임으로 정의되는 다이나믹한 그래프를 볼 수 있음. 유연함. 
  • Low-level, Pythonic, Flexibility : 조작이 쉽지 않지만, 커스텀할 수 있다.

keras vs pytorch

 

2. 모델 구성 요소

  • nn.Module : Pytorch의 모든 레이어(Conv, Linear 등)는 nn.Module을 상속받고 따른다.
  • modules : __init__에서 정의한 또 다른 nn.Modules
    • super(MyModel, self).__init__()
    • self.conv1 = nn.Conv2d(1, 20, 5)
    • self.conv2 = nn.Conv2d(20, 20, 5)
    • model = MyModel() 후, list(model.modules())로 init에서 생성한 모듈 접근 가능
  • forward : 이 모델이 호출되었을 때 실행되는 함수
    • y = model(x) or y = model.forward(x) 
  • nn.Module family : nn.Module을 상속받은 모든 클래스의 공통된 특징
    • 모든 nn.Module은 forward() 함수를 가진다
    • 모든 nn.Module은 child modules를 가질 수 있다
  • Parameters : 모델에 정의되어 있는 modules가 가지고 있는 계산에 쓰일 Parameter
    • 각 모델 파라미터 들은 data, grad, requires_grad 변수 등을 가지고 있다
    • sd = model.state_dict() # pythonic!
    • Pytorch의 Pythonic
    • params = list(model.parameters())

 

[P stage] Chapter6. Model 2 - Pretrained Model

 

🌈 이미 나와있는 성능 좋은 모델을 활용할 수 있다.

 

1. Pretrained Model

  • 등장 배경 : 모델 일반화를 위해 매번 수 많은 이미지를 학습시키는 것은 까다롭고 비효율적.
  • 목적 : 좋은 품질, 대용량의 데이터로 미리 학습시킨 모델을 바탕으로 내 목적에 맞게 다음어서 사용하자
  • 이미 공개되어 있는 pretrained model들 → torchvision.models  timm
  • import torchvision.models as models
    model = models.resnet18(pretrained=True)

2. Transfer Learning

  • CNN base 모델 구조(SIMPLE)
    • Input(Imagenet 등의 데이터셋) → CNN Backbone(Resnet, Alexnet 등) → Classifier(1000개의 클래스 분류) → Output
    • ❓ 그럼 어떤 것들이 backbone이고 어떤 것들이 classifier 일까?
    • ✅ fc == fully connected layer == classifier
  • Pretrainied model을 사용할 때는 내 데이터, 내 모델과의 유사성을 고려해야 한다.

 

3. Transfer leaning Case

  • Case1. 문제를 해결하기 위한 학습데이터가 충분
    • feature extraction : use parameters with parameters in pretrained model by freezing backbone 
    • fine tuning : initialize parameters with parameters in pretrained model
    •  
  • Case2. 학습 데이터가 충분하지 않음

 

🙋‍♀️피어세션+멘토링

이번주에는 p stage 관련해서 멘토님에게 특히 궁금했던 것들이 많았다. 

데이터 불균형 문제와 잘못 라벨링된 데이터에 대해 물어봤다. 불균형 문제는 (1)undersampling과 oversampling의 앙상블 방법과 (2)적절하게 Data augmentation 하는 방법이 있었다. 잘못 라벨링된 데이터에 대한 해결책도 가장 좋은 것은 (1)직접 데이터를 확인하는 것이고, 다른 방법으로는 (2)이상탐지를 활용하는 방법이 있다.  

모델 학습을 하게 되면 하이퍼파라미터 튜닝으로 모델 성능을 올려야 하는데, 팀원들이 어떻게 결과를 쉽게 공유할 수 있을까 고민하다가 wandb를 같이 사용하기로 했다. 처음 시작을 어떻게 해야하는지 몰라서 멘토님께 여쭤봤는데, 직접 보여주셔서 쉽게 이해할 수 있었다. tensorboard 시작법과 터미널 꺼도 tensorboard 유지되는 방법도 알려주셨다(tmux).


💌 데일리 회고

 

오늘따라 집중하는 시간이 짧은 것 같아서 '열품타'라는 열공타이머를 사용했다. "오,, 너무 하기 싫은데? 그만 쉴까?"라는 생각이 들 때마다 폰을 보면 겨우 연속 시간으로 15분 공부가 끝이다 ㄱ-

객관적으로 얼마나 공부한지 확인하니까 의지가 생기는 것 같다. 적어도 50분은 공부하고 쉬어야겠다

 

댓글