본문 바로가기
TIL/Boostcamp AI tech

[Boostcamp] Week2-Day7. 최적화 Optimization :: seoftware

by seowit 2021. 8. 10.
목차
1. 강의정리
    1-1. DL Basic - chap3. 최적화
    1-2. (과제) Optimization 실습
2. 도메인 특강 - CV & NLP
3. 피어세션
4. 데일리 회고 

📜 강의 정리 

* 부스트캠프 DL_Basic 강의를 맡아주신 최성준 교수님의 강의를 정리한 것 입니다.


[DL Basic] Chapter3. 최적화

 

  • Gradient Descent
    • 미분 가능한 함수에서 local minimum을 찾는 반복적인 최적화 알고리즘
  • 최적화(Optimization) 관련 용어 정리
    • Generalization
      • 학습에 사용하지 않은 데이터(unseen data)와 학습 데이터 간의 에러의 차이를 의미
      • 만약, 학습 데이터 자체의 성능이 좋지 않으면 Generalization이 좋다고 성능이 좋다고 할 수 없다.
      •  
    • Under-fitting vs Over-fitting
      • overfitting : 학습 데이터에 대해 잘 동작하지만 테스트 데이터에 대해 잘 동작 하지 않는 경우
    • Cross validation = K-fold validation
      • 학습 데이터를 K개로 나누고, K-1개로 학습을 시키고 나머지 하나로 테스트 해보는 방법
      • 사용 방법 : cross validation으로 최적의 하이퍼파라미터를 찾고, 학습을 할 때는 K개의 셋을 모두 사용한다. 학습하는 데이터가 많을수록 성능이 좋아진다.
      • 주의해야 할 것은 test data는 어떠한 상황에서도 train 과정에서 사용하면 안된다. validation data와의 구분이 필요한데, validation data 는 하이퍼파라미터 튜닝을 위해 사용되는 data이고, test data는 성능을 측정하기 위한 data이다
    • Bias-variance tradeoff
    • Bootstrapping
      • Bootstrapping is any test or metric that uses random sampling with replacement 
      • 학습 데이터 내에서 subsample을 추출해서 여러 모델을 만드는 것
    • Bagging and boosting
      • Bagging(Bootstrapping aggregating)
        • 앙상블. 여러 모델들에서 나온 결과값의 평균이나 보팅으로 하나의 결과로 출력
      • Boosting
        • 잘 학습이 되지 않은 데이터에 대한 모델을 만들어서, sequential하게 연결해주는 것
      • Bagging, Boosting
  • Practical Gradient Descent Methods
    • Gradient Descent methods
      • Stochastic gradient descent : Update with the gradient computed from a single sample.
      • ✔ Mini-batch gradient descent : Update with the gradient computed from a subset of data
      • Batch gradient descent : Update with the gradient computed from the whole data
    • Batch-size Matters
      • large batch methods(ex.512, 1024, 10000) tend to converge to sharp minimizers
      • small batch methods consistently converge to flat minimizers
      • flat minimizer 가 generalization performance가 높다
        • test가 train에서 멀어져도 flat minimum은 비슷한 값이 나온다
          Paper "On Large-batch Training for Deep Learning: Generalization Gap and Sharp Minima, 2017"
    • Gradient Descent Methods  제안배경과 성질에 집중해서 각 방법 살펴보기
      • 1. (Stochastic) gradient descent
        • learning rate와 stepsize 잡는 것이 어려움
        • 수식

$$
W_{t+1} ← \quad W_{t}-\eta g_{t}
$$

 

      • 2. Momentum(관성)
        • 이전의 그래디언트 정보를 활용해서 그래디언트 계산.
        • saddle point나 local minimum 지점에서 현재 gradient가 0이어도 이전의 gradient 누적값에 의해 그 지점을 탈출할 수 있다.
        • 수식 $\left.a_{t+1}\right.$ = accumulation, $\beta$ = momentum

$$\left.a_{t+1}\right. \quad\leftarrow\quad \beta a_{t}+g_{t} $$

$$W_{t+1} \quad\leftarrow\quad W_{t}-\eta a_{t+1}$$

    •  
      • 3. Nesterov Accelerated Gradient
        • momentum은 현재 주어져 있는 지점에서의 gradient를 계산했지만, NAG는 가게될 지점의 gradient를 계산하여 accumulation
        • 수식

$$
\begin{aligned}
a_{t+1} \leftarrow \beta a_{t}+\nabla \mathcal{L}\left(W_{t}-\eta \beta a_{t}\right) \\ 
W_{t+1} \leftarrow W_{t}-\eta a_{t+1}
\end{aligned}
$$

      • 4. Adagrad
        • Adaptive. NN의 많이 변한 파라미터에 대해서는 적게 변화시키고, 적게 변한 파라미터에 대해서는 크게 변화시킨다. gradient가 얼마나 많이 변했는지 제곱하여 더한 값이 $G_{t}$이고, $\epsilon$은 분모가 0이 안되도록 하는 보조장치
        • $$
          W_{t+1}=W_{t}-\frac{\eta}{\sqrt{G_{t}}+\epsilon}g_{t}
          $$
        • 학습이 계속되면 $G_{t}$가 무한히 커져서 $W_{t+1}$ 값이 업데이트가 안되는 문제 발생
      • 5. Adadelta
        • Adagrad의 $G_{t}$가 무한히 커지는 것을 막기 위해 등장한 방법
        • 시간에 대한 제약을 준다. 
        • learning rate이 없다.
        • GPT3 같은 파라미터 큰 모델에는 적용 불가능
      • 6. RMSprop
        • $G_{t}$의 값을 구할 때 $\gamma$로 제약을 줌
        • $$
          \begin{aligned}
          \sqrt{G_{t}} &=\gamma G_{t-1}+(1-\gamma) g_{t}^{2} \\
          W_{t+1} &=W_{t}-\frac{\eta}{\sqrt{G_{t}+\epsilon}} g_{t}
          \end{aligned}
          $$
      • 7. Adam
        • momentum과 adaptive learning rate 두 방법을 모두 사용한다
        • $m_{t}$ = Momentum, $v_{t}$ = EMA of gradient squares
        • $$
          \begin{aligned}
          m_{t} &=\beta_{1} m_{t=1}+\left(1-\beta_{1}\right) g_{t} \\
          {v_{t}} &=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} \\
          W_{t+1} &=W_{t}-\frac{\eta}{\sqrt{v_{t}+\epsilon}} \frac{\sqrt{1-\beta_{2}^{t}}}{1-\beta_{1}^{t}} m_{t}
          \end{aligned}
          $$

 

  • Regularization
    • generalization이 잘 되게 하기 위해 학습에 규제를 건다
    • 1. Early stopping
      • validation data로 loss가 커지기 시작하면 학습을 중단시킨다
    • 2. Parameter Norm Penalty
      • 파라미터 값이 너무 커지지 않도록 한다. 부드러운 함수로 만든다.
      • $$
        \text { total } \operatorname{cost}=\operatorname{loss}(\mathcal{D} ; W)+\frac{\alpha}{2}\|W\|_{2}^{2}
        $$
    • 3. Data Augmentation
      • 데이터가 많으면 학습이 잘된다. 데이터를 많게 하는 방법
      • 한정적인 데이터를 flip, crop 등의 변화를 주어서 데이터를 확장한다
      • 데이터셋 별로 적절한 augmentation 방법이 있다.
    • 4. Noise Robustness
      • 입력 데이터와 웨이트에 노이즈를 넣는다
    • 5. Label Smoothing
      • 두 개의 라벨을 섞는 것
    • 6. Dropout
      • 랜덤으로 뉴런 몇 개를 0으로 설정
    • 7. Batch Normalization
      • 레이어마다 평균과 분산으로 정규화 과정을 거쳐서, 변형된 분포가 나오지 않도록 하는 것
      • 레이어가 쌓일수록 효과가 있지만, 이를 부정하는 논문이 많다.
      • $$
        \begin{aligned}
        \mu_{B} &=\frac{1}{m} \sum_{i=1}^{m} x_{i} \\
        \sigma_{B}^{2} &=\frac{1}{m} \sum_{i=1}^{m}\left(x_{i}-\mu_{B}\right)^{2} \\
        \hat{x}_{i} &=\frac{x_{i}-\mu_{B}}{\sqrt{\sigma_{B}^{2}+\epsilon}}
        \end{aligned}
        $$

 


🎁도메인특강

1. Level2 커리큘럼 및 경진대회 소개

  • NLP이론(2주) + KLUE 대회(2주) + MRC 대회(4주) + 모델 최적화 대회(2주) + Product Serving(3주)
    • 인공지능 챗봇(KLUE), 질의응답 시스템(MRC)
  • CV이론(2주) + Object Detection(3주) + Segmentation(3주) +모델 최적화 대회(2주) + Product Serving(3주)
    • 실무와 경진대회를 위한 object detection, segmentation 재활용 쓰레기 데이터셋

2. CV 도메인

  • Taskonomy(CVPR 2018 best paper) : CV의 subtask가 매우 다양
  • 자연의 현상 이해하기, CG, OCR
  • Convolution in CV models : 다른 분야에 적용
  • Vision Transformer(ViT) : 이미지를 단어처럼 사용해서 엄청나게 많은 파라미터를 학습
  • Alias-Free GAN : 원래의 generative 모델의 문제 극복
  •  
  • Concolusion? CV는 시각적인 데이터를 다루는 ML. 시각정보에 해당하는게 매우 다양하다. Convolution operation에 대해 많이 배울 것이고, 아직 많이 쓰일 것이다.

3. NLP 도메인

  •  NLP Applications are Everywhere : search, voice assistant, translation
  • NLP Trend 1: Transfer learning with Laaaaaaaarge models
  • NLP Trend 2: Retrieval-based Model
  • NLP Trend 3: Multimodality (DallE)
  • 한 도메인에서 시작은 하되 다른 도메인을 하게 되어서 시간이 지나면 할 수 있다는 마음가짐 필요
  • ML Enginners Implements ML Systems
    • 데이터 관리와 버저닝 능력 필요
    • NN에 관련된 아키텍쳐, transformer에 대한 이해. 이해를 바탕으로 논문 수치 재현
    • DevOps, MLOps 역량
    • 모델 서빙하기 위한 API를 만들거나 로그 관리 분석 능력
    • 주니어레벨에서 갖춰야할 것은 자료구조, 알고리즘에 대한 CS 지식와 ML에 대한 기본기

4. QnA

  • 기억에 남는 논문 : multimodality, "Attention is All You Need"
  • 분야 선택 이유 : 정보의 불평등을 해소하기 위해 NLP를 사용
  • 이미 경험해본 분야와 이제 막 관심이 생기는 분야 중 어떤 것을 택해야 취업에 유리할까? : (1) CV나 NLP나 모두 유망한 분야이고 job position도 많이 열려있다고 생각한다. 자기가 재미를 느끼는 분야와 최종적으로 자기가 만들고 싶은 애플리케이션의 기술을 담고 있는 분야를 선택. (2) 본인이 남보다 잘 할 수 있는 분야 선택. 한 분야를 깊게 파는 것이 유리할 수도 있고, 다양한 분야를 하는 게 유리할 수도 있다. 부캠에서 커리큘럼을 어떤 것을 고르든 이게 최종 결정은 아니다. 취업을 한 이후에 새로운 분야를 배우게 될 수 있다. 
  • AI 비전공자가 취업에 좀 더 쉽게 접근할 수 있는 분야는? : CV가 수학적인 부분 때문에 입문은 어렵게 느껴졌지만, 결국은 다 배워야 한다. AI engineer에서 AI 보다는 engineer에 먼저 집중해서 CS 지식에 대한 공부가 우선되어야 한다.
  • CV와 NLP에 대해서 수강을 하게 될 때 각 분야에서 가장 중요하게 봐야할 부분이 무엇일까요? : (NLP) KLUE 등의 테스트를 진행하면서 언어모델에 대한 이해와 어떤 어플리케이션에 적용시킬 수 있을지 생각하면서 공부를 하면 좋겠다. (CV) 다양한 task가 있는데, task마다 공통적인 부분을 공부하면 좋을 것 같다
  • NLP의 경우 각 언어마다 모델링을 하거나 할 때 많은 차이가 나는지? : 한국어와 영어의 모델링 방법이 달랐지만 트렌드는 언어 dependency가 없어지는 추세다.
  • 기존 인력 대비 차별점을 가지려면 어떠한 스킬들을 개발하면 좋을까? : 기본기가 잘 갖추어져 있는가. 한 가지 테스트를 바닥까지 파 본 경험. 다양한 기술을 사용해 봤다. 
  • CS 전공지식, 연구 트렌드 파악, 논문 구현 및 서빙 능력 개발을 위주로 학습
  • Researcher의 경우 데이터가 정해져있고, 정해진 데이터 안에서 성능을 올리는 역할. 

 

🙋‍♀️피어세션

  • 도메인 특강을 듣고 각자 선택 도메인에 대한 간단한 의견
    • 김ㅅㅇ님 : CV 선택 예정. CV 적용 분야가 다양한 것 같다.
    • 김ㅅㅎ님 : CV 선택 예정. CV를 선택할 것이지만 박선규 멘토님처럼 NLP도 찍먹 하고 싶다.
    • 김ㅅㄱ님 : NLP 선택 예정. CV 강의를 들으면서 잘 이해가 되지 않아서 NLP가 더 나을 것 같다.
    • 박ㅇㅁ님 : NLP로 마음이 기울었지만 조금 더 고민해 볼 예정. 서대원 멘토님이 비전공자인데 NLP를 하신 것에 영향을 받았다.
    • 심ㅎㄷ님 : NLP 선택 예정. 어려울까봐 걱정은 되지만 NLP를 해보고 싶다.
    • 이ㅅㅇ님 : CV 선택 예정. 처음부터 CV 쪽으로 마음 굳혔다.
  • 강의/과제 (chap3. 최적화) 질문 - 없음
    • pytorch를 배우기 전이라 과제 한 줄씩 주석 작성하며 pytorch 공부 중
  • 질문게시판 게시글 답변
    • 강의에서 batch 사이즈를 작게 해야 test 데이터에 대해서도 성능이 좋다고 하셨는데, batch 사이즈를 크게 해야 성능이 더 잘나온다는 논문이 있다. 왜 그런 것인지? - 답변 못함(멘토님에게 물어보기)
  • 코딩테스트 연습 - 프로그래머스의 다단계 칫솔판매
    • 각자 15분 동안 문제읽고 수도코드 작성
    • 김ㅅㅎ님 코드 설명 - 매칭되는 배열을 딕셔너리로 zip해서 접근
    • 이ㅅㅇ님 코드 설명 - 딕셔너리에 추천인과 수익금을 담는 구조로 while문을 통해 추천인과 수익금 업데이트
    • 박ㅇㅁ님 코드 설명 - 클래스를 이용해서 클래스 변수로 추천인, 수익금, 이름을 담고 메소드로 수익금을 계산 
    • 김ㅅㄱ님 코드 설명 - 코드가 중간에 날라가서 재작성하고, 중간에 문제가 발생했는데 박ㅇㅁ님 코드로 해결
    • 김ㅅㅇ님 코드 설명 - 이ㅅㅇ님과 비슷한 코드. 중간에 종료조건을 추가하고 위치를 조정하여 문제 해결

 


💌 데일리 회고

 

언어에 재능이 없는 사람이 NLP를 할 수 있을까? 라는 물음과 CV에 대한 익숙함과 흥미 덕분에 CV 쪽으로 마음이 기울었던 상태였습니다. 그래도 항상 NLP라는 선택지를 마음 속에 품고 있었는데, 오늘 도메인 특강 덕분에 그 고민을 조금 해소할 수 있었습니다.

그 답은 어차피 나중에는 둘 다 하게 될 것이다. 심지어는 회사 들어가게 되면 아예 새로운 것을 하게 될 수도 있다는 말 때문이었습니다. 조삼모사라는 말이 떠올랐고 둘 다 알게 될테지만 뭘 먼저 해볼래? 이런 느낌이 들었습니다. 

그래서 저는 CV로 마음 굳히게 되었습니다!

댓글