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 |