[부스트캠프 AI Tech 5기] WEEK 04

jeongjeong2·2023년 4월 1일
0

NAVER Boost camp

목록 보기
4/5

💡부캠 살롱

  • 세션 1 : model의 경량화 (12조)
    참고

    1. 모델의 크기 줄이기 - pruning - [참고 문헌], Quantization(양자화)(https://arxiv.org/abs/1506.02626)
    2. 네트워크 구조 자체 변경 - Light weight architecture
      ex) SqueezeNet, MobileNet, ShuffleNet, NAS(Neural Architecture Search), MNasNet
  • 세션 2 : 외부 경진대회 (10조)

  • 세션 3 : lv.3 랜덤 프로젝트 구상 (4조)

📚과제

기본1 : ResNet architecture(어려워..😥)

  • residual block은 기존의 딥러닝 네트워크에서 층이 깊어질 수록 loss값이 증가하는 현상을 방지하기 위해 만들어졌다. input값을 output값에 더한 값을 다시 대입하면서 forward path 관점에서는 이전 layer의 값을 함께 학습하는 효과를 냈고(LSTM과 비슷), backward path 관점에선 기울기가 소실되는 gradient vanishing을 방지할 수 있게 되었다. (각 layer간의 차이만 학습하면 되기 때문에 기울기의 grad값이 지수적으로 작아지지 않기 때문에)
  • nn.Identity(): 입력값을 그대로 출력하는 모듈, 아무런 연산도 수행하지 않는다. 모델의 특정 부분에서 입력값을 변경하지 않고 그대로 전달하는 경우에 사용

기본2 : Data Aumentation

  • transforms를 이용한 augmentation을 진행

    transforms.Resize: 이미지의 크기를 조정
    transforms.CenterCrop: 이미지의 중앙 부분을 잘라낸다
    transforms.RandomCrop: 이미지의 임의 부분을 잘라낸다
    transforms.RandomHorizontalFlip: 이미지를 무작위로 좌우 반전
    transforms.ColorJitter: 이미지의 채도, 명도, 대조 등을 무작위로 변경
    transforms.RandomRotation: 이미지를 임의의 각도로 회전
    transforms.RandomErasing: 이미지에서 무작위로 일부 영역을 삭제

  • dataset을 정의하고 dataloader 적용 시 dataset의 개수가 batch_size로 정확히 떨어지지 않으면 shuffle이나 drop_last의 옵션이 필요하다.
    마지막에 batchsize보다 작은 batch에서 index error가 발생할 수 있다.
qd_train_dataset = QuickDrawDataset(train_data, train_label, transform)
qd_val_dataset = QuickDrawDataset(val_data, val_label, transform_val)

qd_train_dataloader = DataLoader(qd_train_dataset, batch_size=64, shuffle=True, drop_last = True)
qd_val_dataloader = DataLoader(qd_val_dataset, batch_size=64, shuffle=True, drop_last = True)

추가로 생각해보기

  1. Quickdraw dataset은 상당히 얇은 선의 이미지들로 이루어졌습니다. 이런 경우, blur augmentation을 적용해 이미지를 넓게 만들어주는 것이 성능 향상에 도움이 될 수 있습니다. 왜 blur augmentation이 모델 성능 향상에 도움이 되는지 생각해보세요.
    : blur로 인해 tensor값이 변해서(정확히는 선이 차지하는 영역이 넓어지면서 tensor의 값이 변해) 구조적인 특징을 더 명확하게 할 수 있을 것 같다.

  2. Augmentation의 순서 역시 중요한 요소가 될 수 있습니다. Blur를 먼저 적용하고 크게 resize하는 경우와 resize를 먼저 하고 blur를 적용하는 경우, 이미지가 어떻게 달라질지 예상해보시고, 실제 augmentation package에 따라 결과가 어떻게 나타나는지도 확인해보세요. 그리고 Geometric augmentation의 경우에 대해서도 순서가 어떻게 영향을 미칠지 생각해보세요.

    • resize 후에 blur를 적용했을 때 :
    • blur 후에 resize를 적용했을 때 :
  1. Augmentation을 적용했음에도, convolution layers를 고정하고 linear classifier만 새로 학습하는 fine-tuning을 수행하면 augmentation의 효과가 떨어질 수 있습니다. 그 이유에 대해 생각해보세요.
    :??

기본3 : Segmentation

  • x.weight : x에서의 wegith을 추출
  • cloned_x = x.clone() : x를 clone하여 cloned_x에 할당. 이 때 cloned_x와 x는 서로 다른 객체로 cloned_x를 수정해도 x는 변하지 않는다.(그 반대도 마찬가지)
  • x.requiresgrad(True) : 텐서 x를 학습 가능한 파라미터로 설정한다.
import torch.nn as nn
import torch.optim as optim
# 예시 모델 정의
model = nn.Sequential(
          nn.Linear(10, 20),
          nn.ReLU(),
          nn.Linear(20, 2)
        )
# 모든 가중치를 학습 가능한 파라미터로 설정
for param in model.parameters():
    param.requires_grad_(True)
# optimizer 정의
optimizer = optim.Adam(model.parameters(), lr=0.001)
  • detached_x = x.detach() : x라는 텐서가 있을 때 다른 텐서 y와의 계산 그래프를 구성하여 연산. 이 때 계산을 중지하고 분리된 텐서로 그 값을 사용하고 싶을 때 detach()를 사용한다.
    PyTorch에서 계산식에서 텐서를 분리하고 새로운 텐서를 생성하는 함수라고 알고 있으면 된다.

👨‍🎓마스터 클래스

  • Data Literacy
  • 데이터 시각화 : 데이터 + 시각화
    데이터를 필요에 맞게 시각적 요소로 변환하여 이해하기 쉽게 시각적으로 전달
    Encoding, Goal&Target Audience, Prevent Misleading, Aesthetic
  • 시각화의 이유
  1. 그 과정에서 데이터 insight얻기(EDA)
  2. 결과를 효과적으로 보여주기(Presentation)
  • AI Production에서 Data Visualization이 중요한 이유
  1. 데이터를 사용한 설득
  2. 기본적인 Product의 중요성
  • 시각화는 train 전, 진행 중, 후 모두 진행할 수 있음

  • 시각화를 잘 할 수 있는 방법
    다양한 시각화 방법을 알기
    인지적 관점에 대한 공부를 추천

  • 본인의 결과를 공유하는 것 + 관심 풀을 넓히기 + 영어 공부가 중요

  • 코딩테스트 정답 코드보고 공부를 하고 안 보고 다시 짜보기...
    나는 구현문제를 봐야할 것 같다..ㅎ

🎵멘토링

나를 찾아가는 과정

  • 구체적인 목표 설정 ex)기업, 산업, 분야
    여기에 해당하는 실제 사례를 만들기(in 부캠)
  • 과제 화요일까지 제출하기

🎸기타

  • 이코테 강의 듣기 이번 주 1강 마무리
  • 코테스터디 문제 풀이 진행하기
  • todolist 꼬박꼬박 작성하기
  • 운동은 그래도 열심히 하기 ㅎㅎ

주간 회고

  • 벌써 5개월 교육 중 한 달이 지났다는 것이 믿기지가 않는 것 같다. 한 달 동안 많은 것이 늘었는가 라고 자문했을 때 그렇다 라고 자신있게 대답하기 어려운 것 같다. 강의 소화력도 부족하고, 강의에서 들은 내용을 추가적으로 학습하는 부분이 많이 부족했던 것 같다. 주말이나 저녁 시간을 잘 이용해서 모든 것을 내 것으로 흡수할 수 있었으면 하는 바람이 크다. 이번 주는 과제1 구현에 있어서 많은 어려움을 겪었는데 오피스아워 때 조교님들의 캠퍼에 대한 기대치가 생각보다 크다는 것을 알아서 더 막막함을 느꼈다. 물론 조급해하지 않고, 돌아가는 것이 가장 빠른 길임은 알고 있으나 의구심은 계속 드는 것 같다. 잠을 줄이고, 집중력을 기르는 것이 중요한 것 같다.

0개의 댓글