본문 바로가기

부스트캠프 AI Tech

[WEEK 3] DL Basic

Artificial Inteligence : 사람의 지능을 모방하는 것

Machine Learning : 데이터를 통해 학습하는 것

Deep Learning : 뉴럴 네트워크를 사용하는 것

Data, Model, Loss, Algorithm

 

Neural Networks

Nonlinear transform이 있어야만 네트워크를 깊게 쌓았을 때 의미가 있음

Multi-Layer Perceptron

Loss의 성질을 이해하고 알맞게 사용해야 함

 

Generalization (일반화)

- 학습 데이터와 테스트 데이터간의 차이(Generalization gap)이 얼마나 차이가 나는지

Underfitting vs. Overfitting

- 사실 굉장히 이론적인 얘기라고 함

Cross-validation

- 보통 이를 통해 최적의 하이퍼 파라미터를 찾고 모든 데이터로 학습시킴

Bias ans Variance

- 낮으면 각각 평균적으로 잘 맞았는지, 분산이 적은지

- 둘 다 낮추기는 힘들다

Bootstrapping

- Bagging (Bootstrapping aggregating) : 데이터를 나눠 여러 모델들을 parallel하게 합침

- Boosting : 잘 동작하지 않은 데이터에 대한 모델들(weak leaner)을 sequential하게 합침

Gradient Desecnt Methods

- Stochastic(SGD) : single sample

- Mini-batch : subset of data, 대부분 딥러닝

- Batch : whole data

Batch-size

- 얼마나 나누나 싶지만 굉장히 중요함

- 사이즈를 줄이게되면 일반적으로 flat minimum에 도달하기에 sharp minumum보다 좋다

1. (Stochastic) Gradient descent

- Leaning rate를 적절히 잡아주는 것이 중요하고 어려움

2. Momentum

- 말 그대로 관성을 어느정도 유지시켜 줌

3. Nesterov Accelerated Gradient

- momentum이 간 지점에서 gradient를 계산해서 converge가 더 빠르게 됨

4. Adagrad

- 많이 변한 파라미터는 적게, 적게 변한 파라미터는 많이 변하게 함

- 결국에는 뒤로 가면 갈수록 학습이 멈춰지는 현상

5. Adadelta

- 학습이 멈추지 않도록 이전 정보를 통해 보정 (EMA)

- learning rate가 없어 바꿀 요소가 없어 잘 활용 안함

6. RMSprop

- EMA를 사용하고 그냥 stepsize를 집어넣어 줌

7. Adam

- 가장 무난하게 사용

- Momentum과 EMA를 잘 섞어 사용

Regularization

Early Stopping

- Validation error가 커지기 시작할 때 멈춤

Parameter Norm Penalty

- 파라미터를 너무 커지지 않게해서 스무스하게 함

Data Augmentation

- 데이터를 지지고 볶아서 늘림

Noise Robustness

- 데이터에 노이즈를 줌

Label Smoothing

- 분류 문제에서 두 개의 클래스를 섞음(Mix-up, CutMix)

Dropout

- 뉴런 절반을 0으로 해버림

Batch Normalization

- 각각 레이어에 값들을 정규화 시킴

 

Convolution

- Stride : 몇칸씩 건너뛸지

- Padding : 몇칸 덧댈지 

 

ILSVRC (ImageNet Large-Scale Visual Recognition Challenge)

AlexNet

- ReLU(Rectified Linear Unit) Activation 사용 : linear model에 적합

- GPU 활용

- Data augmentatin, Dropout

VGGNet

- 3x3 convolution filter만 사용 : 파라미터 수를 줄임

- 1x1 convolution 쓰긴 함

- Dropout (p=0.5)

GoogLeNet

- Inception Block : 1x1 convolution을 추가하여 파리미터를 줄임

ResNet

- identity map (skip-connection) : layer를 쌓을수록 학습에 유리해짐

DenseNet

- Dense Block : addition 대신 concatenation

- Transition Block : feature size를 줄임

 

Semantic Segmentation

Fully Convolutional Network

- dense layer를 conv layer로, 파리미터는 동일

Deconvolution (conv transpose)

- dimension을 늘림

- 사실상 convolution과 거의 같다고 보면 됨

Detection

R-CNN

- 모든 Bounding Box를 무식하게 다 찾아냄

SPPNet

- CNN을 한번만 돌리고 해당 영역의 tensor만 뽑아옴

Fast R-CNN

- 각각의 region에 대해 ROI pooling

Faster R-CNN

- Region Proposal Network : Bounding Box 뽑는 것도 학습

YOLO

- 두 스탭을 한번에 하기에 더 빠름

- grid를 나누고 그 안에 bounding box가 쓸모있는지와 어느 class에 속한지를 통해 동시에 확인

 

Sequential Model

- Naive sequence model : 과거 입력 모두 고려

- Autoregresive model : 과거 몇개만 봄

- Markov model (first-order autogressive model) : joint distribution을 표현하기 쉬워짐

- Latent autoregressive model : 중간 Hidden state가 과거 정보를 요약

Recurrent Neural Network

- Short-term dependencies은 잡지만 Long-term dependencies는 잘 잡지 못함

- Vanishing / exploding gradient : 이것 때문에 ReLU를 잘 쓰지않음

Long Short Term Memory

- cell state : 내부에서만 흘러가는 이전 정보를 취합한 정보

- hidden state : Output

- Forget Gate : 어떤 정보를 버릴지 정함

- Input Gate : 어떤 정보를 올릴지 정함

- Update Gate : 합쳐서 cell state를 업데이트

- Output Gate : 어떤 값을 내보낼지 정함

Gated Recurrent Unit

- reset gate, update gate 둘만 존재

- cell state 없이 hidden state만 존재

- 파라미터가 더 적기에 더 좋은 퍼포먼스

 

'부스트캠프 AI Tech' 카테고리의 다른 글

[WEEK 4-5] CV 이론  (1) 2023.11.30
데이터 직군에 대한 지식 쌓기  (0) 2023.11.30
[WEEK 3-4] Data Visualization  (1) 2023.11.23
[WEEK 2] PyTorch  (0) 2023.11.13
[WEEK 1] AI Math  (0) 2023.11.09