목차
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 : 학습 데이터에 대해 잘 동작하지만 테스트 데이터에 대해 잘 동작 하지 않는 경우
- 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
- Error(X) = noise(X) + bias(X) + variance(X)
- bias와 variance는 error의 구성요소
출처: https://bywords.tistory.com/entry/번역-유치원생도-이해할-수-있는-biasvariance-tradeoff
- bias와 variance는 error의 구성요소
- Variance : Overfitting. 출력의 일관성 / Bias : Underfittinng. 예상 출력값과의 거리
- 실제 상황에서 Bias와 Variance를 모두 만족시키는 것은 불가능하고, tradeoff가 생길 수 밖에 없다
- Error(X) = noise(X) + bias(X) + variance(X)
- Bootstrapping
- Bootstrapping is any test or metric that uses random sampling with replacement
- 학습 데이터 내에서 subsample을 추출해서 여러 모델을 만드는 것
- Bagging and boosting
- Bagging(Bootstrapping aggregating)
- 앙상블. 여러 모델들에서 나온 결과값의 평균이나 보팅으로 하나의 결과로 출력
- Boosting
- 잘 학습이 되지 않은 데이터에 대한 모델을 만들어서, sequential하게 연결해주는 것
- Bagging(Bootstrapping aggregating)
- Generalization
- 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가 높다
- Paper "On Large-batch Training for Deep Learning: Generalization Gap and Sharp Minima, 2017"
- Gradient Descent Methods 제안배경과 성질에 집중해서 각 방법 살펴보기
- 1. (Stochastic) gradient descent
- learning rate와 stepsize 잡는 것이 어려움
- 수식
- 1. (Stochastic) gradient descent
- Gradient Descent methods
$$
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
- 2. 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
- 수식
- 3. Nesterov Accelerated Gradient
-
$$
\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}
$$
- 4. Adagrad
-
- 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로 마음 굳히게 되었습니다!
'TIL > Boostcamp AI tech' 카테고리의 다른 글
[Boostcamp] Week2-Day9. RNN(Recurrent Neural Network) :: seoftware (0) | 2021.08.12 |
---|---|
[Boostcamp] Week2-Day8. CNN(Convolutional Neural Network) :: seoftware (0) | 2021.08.11 |
[Boostcamp] Data Visualization 기본적인 차트 요소 :: seoftware (0) | 2021.08.09 |
[Boostcamp] Week2 - Day6. Neural network :: seoftware (0) | 2021.08.09 |
[Boostcamp] Week1 - Day5. 하루 정리 :: seoftware (0) | 2021.08.06 |
댓글