본 글은 네이버 부스트 캠프 AI Tech 기간동안
개인적으로 배운 내용들을 주단위로 정리한 글입니다
본 글의 내용은 새롭게 알게 된 내용을 중심으로 정리하였고
복습 중요도를 선정해서 정리하였습니다
✅ Week 3
목차
- Deep learning에서 중요한건 꺾기지 않는 마음?
- What is Model optimizer?
- What is Regularization?
✅ Intro
도비는 그동안 딥러닝 모델을 pytorch와 python을 통해서 코딩하는 방법에 대해서 알아왔다
그러나 도비에게는 딥러닝의 원리와 역사, 그리고 학습 방법등 기초적인 지식이 부족하다
그래서 오늘은 이런 도비의 지식을 채워주기 위해
도비와 함께 딥러닝의 기초, model optimizer에 대해서 알아보도록 하자
+) 추가로 최근 Deep learning의 트렌드:
1. Deep learning에서 중요한건 꺾이지 않는 마음?
도비 뿐만 아니라 우리가 Deep learning을 할 때 중요한 것이 무엇일까?
그건... 꺾이지 않는 마음... 이 아니라 - 이것도 물론 중요하지만...
아래의 4개 정도로 정리해볼 수있다
1. Data
2. Model
3. Loss
4. Optimizer
자세히 살펴볼까?
1. Data
사실 Deep learning은 Data가 시작이자 끝이다
이상 설명 끝... 라고할뻔
Deep learning 모델을 구성할 때 Data의 수가 적으면 사실 일반적인 머신러닝 보다 좋은 성능을 만들기 힘들다
또한 쓰레기 같은 Data를 투입 하면 쓰레기가 나올 뿐이다
따라서 Data의 양 뿐만 아니라 Data의 품질 또한 중요하다
즉, 초반 단계에서 Data를 어떻게 전처리 할 지도 매우 중요한 부분을 차지한다
이미지 Task의 경우 많은 전처리는 요구 되는 편은 아니지만
그래도 가끔은 이미지 합성, 노이즈 제거 등 다양한 도메인 지식을 포함해야한다
2. Model
그리고 다음 전투는 Model에서 일어난다
Data가 요리 재료라고 한다면 Model은 요리 도구이다
잘 준비된 재료가 있더라도 망가진 도구로 맛있는 요리를 만들 수 없을 것이다
그만큼 좋은 모델이 좋은 결과를 만들어낸다
사실 Deep learning의 많은 연구 분야들이 그동안 Model 구조에 집중되어 왔다
Attention All You need등 딥러닝의 패러다임을 변화시킨 모델들은 사실 구조에 집중되어 있었다
물론 뒤에 나올 Optimizer나 다양한 Augmentation등 학습 방법에 대한 연구들도 많이 존재한다
하지만 그만큼 정확성을 올리는 것에는 Model이 중요하다는 것을 의미한다
하지만 최근들어서는 Transformer 구조가 거의 지배하고 있지만...
- 그래서 사실 모델 싸움은 거의 끝나가고 있는 느낌이 든다..
그래도 Model 선택은 결과에 큰 영향을 미친다🔥
3. loss
이렇게 선택된 모델은 그냥 데이터만 넣은 자동으로 학습이 될까?
물론 아니다
loss를 구해서 역전파🥲를 해주어야하기 때문이다
loss라고 하니 무언가 잃는 느낌이 드는 건 기분탓이다...
잃는게 있다면 얻는것도 있는법...
그것이
단지 데이터를 모델에 넣기만 하면 그냥 똑같은 Y값만 나올 뿐이다
따라서 task에 맞는 loss를 선택하고 이를 활용하면 모델의 최적점을 얻을 수 있다
분류의 경우 Cross-entropy
회귀의 경우 MSE가 보통 사용된다
물론 이런 loss에 대한 다양한 연구들도 존재한다
4. Optimizer
이렇게 선택된 loss와 model을 갖고 우리는 최적의 위치에 모델을 도착시켜야한다
여기에는 다양한 방법들이 존대한다
처음 가는 목적지를 여러 네비게이션을 통해서 간다고 가정해보자
각 네비게이션마다 걸리는 시간이 다르고 때로는 목적지에 올바르게 안내하지 못할 수도 있다
그만큼 Optimizer는 모델이 최적지점에 - local minima, global minima 도착할 수있게 해주는 중요한 역활을 한다
따라서 상황에 맞는 방식을 선택해야한다
물론 요즘은 대부분 Adam을 쓴다 - 왜? 일반적으로 잘 수렴하기 때문에
그럼 Adam말고 이전에 활용된 방법들은 무엇이 있을까?
다음장에서 조금더 자세히 살펴보자
🔥도비의 한줄 정리🔥
: Deep learning에서는 1. data, 2.model, 3.loss, 4.optimizer가 중요하다
2. What is Model optimizer?
앞에서 도비와 함께 optimizer가 무엇인지 살펴 보았다
그럼 이런 optimizer에는 어떠한 종류가 있는지 살펴 보자
사실 optimizer에 대한 간단한 내용은 위의 사진 1장으로 정리할 수 있다
스텝의 방향을 조절하는 : Momentum, NAG계열
스텝의 사이즈를 조절하는 : Adagrad, RMSProp, AdaDelta 계열
그리고 두 계열을 합친 : Adam, Nadam 계열
이것에 대한 수식과 원리를 조금더 이해하고 싶다면 전에 쓴 글을 참고하기를...
물론 Adam 계열이 사실 가장많이 쓰인다
일반적으로 다양한 데이터나 모델에서 좋은 성능을 보이기 때문이다
🔥도비의 한줄 정리🔥
: Optimizer에는 스텝의 방향을 조절하는 Momentum, NAG계열, 스텝의 사이즈를 조절하는 Adagrad, RMSProp, AdaDelta 계열 그리고 두 계열을 합친 Adam, Nadam이 있다
그러나 Adam이 최고다.... 👍👍
3. What is Regularization?
규제 하면 무슨 생각부터 떠올라?
??? : 아즈카반이요....
물론 그럴 수 있다
규제는 모델의 학습을 방해한다는 것을 의미한다
아니... 우리의 목표는 모델 학습인데 학습을 왜 방해한다는 걸까?
사실 중요한것은 꺾어 버리는 규제였던것....🥲
이는 overfitting의 개념을 이해할 필요가 있다
overfitting 은 train data에는 잘 작동하지만
test data에서는 잘 작동하지 않는 것을 의미한다.
즉, 모델이 train data에만 과적합해서 일반화가 이루어지지 않은 것이다
그렇다면 이를 어떻게 해결해야할까?
다양한 방법들이 존재한다
1. Cross-validation
주의 : 물론 Cross-validation은 규제 방법이 아니다!!!!!!!
Cross validation은 과적합을 어느정도 방지해주는 방법으로
일반적으로 train-test data로 나누고 여기서 train data에서 train-validataion 셋으로 나는 방법 대신에
train data을 k개로 분활하여 학습할 때마다 k-1개의 랜덤 데이터로 학습하고 나머지 1개로 모델을 validataion하는 방법이즉, 모델의 학습 데이터가 매번달라지고 평가 데이터도 달라지기 때문에 한개의 데이터 셋에 과적합 되는 경우를 피할 수 있다
2. Early stopping
해석하자면 빠른 멈춤정도로 정리할 수 있을 것 같다
빨리 멈춘다라... 무슨의미일까?
모델을 학습하다 보면
가끔 학습이 길어질 수록 Train data에 대한 error는 내려가지만
어느 순간부터 Validation data에 대한 error는 떨어지지 않는 경우를 마주치게 된다
따라서 이런경우 모델이 train data에 과적합 되는 것으로 볼 수 있다
따라서 이를 해결하기위해서 특정 횟수만큼 validation data에 대해 error 증가한다면 학습을 멈추는 것이다
이러한 방법은 쉽게 코드로 작성하여 학습때 적용하면되고 조건은 이용자가 설정할 수있다
3. Parameter Norm Penalty
Parameter norm penalty는 머신러닝에서도 등장하는 개념으로
부드러운 함수 일 수록 모델의 일반화가 좋을 것을 가정한다.
즉, 모델의 loss 미분 함수를 조금더 부드럽게 해주면 모델 일반화에 좋다는 것을 가정한다
Norm penalty에는
L1 norm과 ㅣ2 norm가 있다
4. Data Augmentation
우리가 데이터로 모델을 학습할 때 최고의 상황은 데이터가 많은 상황이다
즉, 끊임 없이 생성마법으로 데이터를 만들어 낼 수있다면
도비와 우리의 모델의 정확성의 100에 가까워 질 것이다...
그러나 현실은 녹녹하지 않다
끊임 없는 데이터는 가상에 불과하다
따라서 데이터가 부족한 상황에서는
트릭같은 또는 마법 같은 방법으로 데이터를 증폭시킬 필요가 있다
이러한 방법이 Data Augmentation이다 - 사실 필수적이다
쉽게 말해서 지팡이로 데이터를 생성하는 마법인 것이다
이런 마법... 아니.. 방법에는 여러방법이 있다
아래 있는 것들이 대표적인 방법들이다
Noise Robustness
Mix-up
CutMix
Dropout
Batch Normalization ....
이것에 대한 자세한 내용도 이전에 작성한 글이 있으니 참고하길...
🔥도비의 한줄 정리🔥
: 모델의 과적합을 피하기 위해서 때로는 모델의 학습을 방해해야 한다
그럴때 마다 사용되는 방법이 Regularization이다
이것에는 Early stopping, Parameter Norm Penalty, Data Augmentation등이 있다!!
오늘은 딥러닝 요정 도비와 함께 모델을 최적화 하고 overfitting을 방지하는 규제 방법에 대해서 알아보았다
물론 모델의 학습도 쉽지 않다...
딥러닝 모델의 학습은 끝이 없으면 성장한다
그리고 오늘 도비의 공부에는 끝이 없다 - Dobby is not free!
오늘 정리할 공부 내용이 아직 한편.. 남았다... 🔫
진짜 딥러닝에서 중요한건... 꺾이지 않는 마음 그것 하나면 될지도...🖐️
'네이버 부스트캠프 🔗 > ⭐주간 학습 정리' 카테고리의 다른 글
[네이버 부스트 캠프 AI Tech] RNN & LSTM & GRU (0) | 2023.03.21 |
---|---|
[네이버 부스트 캠프 AI Tech] CNN Models & CNN Task (0) | 2023.03.20 |
[부스트 캠프]Week 2 회고 및 Week 3 목표 정리 (0) | 2023.03.20 |
[네이버 부스트 캠프 AI Tech] VGG 논문리뷰 (0) | 2023.03.17 |
[네이버 부스트 캠프 AI Tech] OOM & Multi GPU & Hyper parameter tune (0) | 2023.03.16 |