다른 파트 정리를 보고 싶다면 아래 링크를 확인하세요
1) 인공지능(AI) 맛보기 : https://aigong.tistory.com/334
2) 꼭 알아야 하는 파이썬 기초 지식 : https://aigong.tistory.com/344
3) 핵심만 담은 AI를 위한 수학 지식 : https://aigong.tistory.com/345
4) 인공지능 본격 탐구: 딥러닝 기초 : https://aigong.tistory.com/346
개인적인 호기심때문에 본 강좌를 수강하게 되었습니다. 해당 코스의 boostcourse를 보며 제가 중요하다고 판단된 내용 중 일부만 간단히 정리하는 공간으로 마련하였습니다. 이 내용으로 공부를 하신다기보다 그냥 이런게 있구나 정도로만 판단하시면 좋겠고 모든 저작권은 Edwith / boostcourse / boostcamp 그리고 강연해주신 분들(최성준, 임성빈, 최성철)께 있습니다.
https://www.boostcourse.org/onlyboostcampaitech3
생물학적 뉴런을 모방하는 방향으로 초기 발전이 이뤄짐.
그러나 꼭 그렇다고 하여 잘 되는 이유가 모방했기 때문이라고 단정하기에는 어려움이 있음.
가령 예를 들어 날고 싶다는 욕망과 함께 비행기가 발전되어온 과정을 살펴봤을 때 꼭 비행기가 새를 모방이 되었기 때문에 계속 발전되어왔기보다 다른 방식으로 변형이 이뤄지는 틀을 제공했다의 측면이 맞을 듯
즉, 시작은 모방일지라도 지금은 다른 것 같다.
Clément Ader's Avion III (1897) -> Write Brothers (1903) -> F-22 Raptor
선형회귀 : 가장 간단한 Linear Neural Networks
미분을 통해 loss의 최소화를 구하는 모델의 최적화를 진행. Backpropagation
W와 b에 대해 반복적으로 update하여 최적의 w와 b를 구함. 단, update stepsize는 작게 설정해야 함.
표현력을 극대화하기 위해 nonlinearity가 있는 activation function이 필요
ReLU, Sigmoid, Tanh
모델마다 필요한 activation이 다 다름.
여러 layer를 쌓아 모델을 구성
편미분 값을 토대로 Loss를 최적화 시키는 방법 Gradient Descent
Generalization : 보지 않은 데이터에 대해 얼마나 잘 행동하는지를 확인하는 것
Under-fitting vs overfitting : 과소적합 vs 과적합
Cross validation
Bias-variance tradeoff
Variance : 입력을 넣었을 때 출력이 얼마나 일관적인지를 가르키는 것
큰 Variance - overfitting될 가능성이 높음.
Bias : 평균적으로 봤을 때 True target에 가까울 때를 이야기함.
큰 Bias는 mean으로부터 많이 벗어남
Bias와 Variance를 동시에 줄일 수 있는 것은 어렵다.
Bootstrapping
일부의 데이터만 램덤으로 모델링 예측 값 측정 / metric에서도 마찬가지
Bagging and boosting
Bagging (Bootstrapping aggreagating)
학습 데이터를 여러 개 만들어 다수의 모델의 독립적 결과를 평균을 내는 방식
Ensemble의 한 종류
Boosting
weak learner 모델들을 sequential하게 만들어 하나의 강한 모델을 구성함.
Gradient Descent Methods
Stochastic gradient descent: 랜덤한 단일 샘플에 대한 gradient를 업데이트
Mini-batch gradient descent: 데이터의 부분 집합에 대한 gradient를 업데이트
Batch gradient descent: 전체 데이터로부터 gradient를 업데이트
large batch: sharp minimizer
small batch: flat minimizer
batch size를 작게 쓰는 것이 일반적으로 성능이 더 좋다고 알려져 있음
일반적으로 flat minimum이 선호
test시 오차가 적음.
sharp에서는 조금만 움직여도 오차가 큼.
1) Stochastic Gradient descent
2) Momentum
3) Nesterov Accelerate
4) Adagrad
많이 변화한 것은 적게 변화, 적게 변화한 것은 많이 변화하도록 하여 local minimum으로부터 빠져나오도록 함
G가 너무 커지면 분모가 너무 커져 학습이 진행되지 않음.
5) Adadelta
많이 활용하지 않음.
6) RMSprop
제프리 힌턴이 강의에서 잘 되는 방안을 제시했고 실제로도 잘 되었음.
7) Adam
이전의 momentum 정보를 섞고, gradient EMA를 업데이트하여 정보를 조종
다른 optimization 방안 github
https://github.com/LiyuanLucasLiu/RAdam
https://github.com/clovaai/AdamP
1) Early stopping
valiation error가 가장 낮아지는 순간에 중지
2) Parameter norm penalty
NN 함수 속 부드러운 함수가 되어지도록 하기 위해 penalty를 사용
3) Data augmentation
데이터가 많을 때 잘 되기 때문에 데이터 증강을 위한 방안을 고려해야 함.
Label preserving augmentation
회전, 크기 증강/축소, 뒤집기
4) Noise robustness
입력 데이터에 노이즈를 입력 또는 weight에 넣음.
5) Label smoothing
데이터 2개를 뽑아 섞는 것
decision boundary를 부드럽게 해줌.
Label 또는 이미지를 섞어 버림.
성능이 향상됨.
6) Dropout
neural network를 섞는 효과
7) Batch normalization
적용하고자 하는 통계적 정규화를 시키는 것.
batch norm을 사용함으로써 일반적으로는 성능이 향상됨
filter마다 다양한 결과를 얻어낼 수 있음
CNN은 conv layer, pooling layer, fully connected layer로 구성됨
parameter 수가 늘어날수록 generalization이 하락함.
stride, padding
3x3x128 filter가 64개 존재 -> parameter 개수를 세는 방법
파라미터의 숫자를 줄이기 위한 기법
주어지는 입력이 sequence input
대다수의 데이터는 sequential data
과거의 한정적 데이터만 보는 것 Autoregressive model
Markov model (first-order autoregressive model)
generative model에서 활용
그러나 과거의 정보를 완전히 포함하고 있지 못하다는 단점이 존재
이를 해결하기 위해 hidden state에 요약된 과거의 정보를 포함하는 Latent autoregressive model이 제안
RNN
short-term dependences 너무 먼 과거의 정보를 기억하고 있지 못하다는 단점이 존재
long-term dependences
Previous cell state에서 내용을 잊지않도록 과거의 정보를 요약하여 저장
Forget Gate: 0~1 값을 가지는 $f_t$, 버릴 것을 정함
Input gate: cell state 중에 어떤 정보를 올릴 지를 결정
2개의 gate만을 활용
hidden state가 곧 output
현실은 transformer