용어 정리
- DNN (Deep Neural Network) : 깊은 인공 신경망
- FC (Fully-Connected Layer): 노드끼리 싹다 연결된 층
- Perceptron: unit step function(계단 함수)을 활성화 함수로 사용하는 인공 신경을 의미
- MLP (Multilayer Perceptron): 모든 layer가 FC layer인 신경망으로 임의의 활성화 함수를 사용하는 인공 신경망을 의미한다.
딥러닝의 목표!! loss(=cost)를 최소화하는 weight와 bias 찾기
* loss란? 내가 풀고 싶은 문제에 맞게 잘 정의하는 것 (ex. 머신의 예측값 - 실제 값)
>> linear regression에서 loss를 어떻게 계산할 수 있을까?
하지만, 양수값과 음수값이 동시에 존재한다면, 0으로 수렴할 수 있는 위험이 존재함.
따라서, 제곱을 취하는 방법을 적용함. (MSE: Mean Squared Error)
(* 이외에도 MAE, RMSE, RMSLE 존재 --> 관련 참고 링크: https://steadiness-193.tistory.com/277)
>> 엄청 큰 네트워크에서는 오차를 어떻게 구할까? 일일이 샘플 오차를 전부 계산하는 것은 불가능
최적화(Optimizer): 경사하강법 (Gradient descent)!
* 경사하강법(Gradient descent)을 이용하자!
- 함수의 기울기 값으로 기울기가 작아지는 값을 찾아가는 것
(즉, 최솟값, 최댓값을 갖는 x는 미분 값으로 0을 갖음 = 미분 값이 작아질수록 최소값에 가까워지게 됨)
- 초깃값은 랜덤하게 설정됨
Ex. LeCun, Xavier(sigmoid/tahn), He(ReLu) 자세한 내용은 추후에..
- gradient의 방향 수삭: x - (기울기 값(미분 값)*기울기 부호)
(2차 함수를 생각해보면, 음수 기울기일 경우 x는 양의 방향으로 가야지 최솟값에 도달할 수 있음. & vice versa.
따라서 원래의 x값에서 어떤 수를 더해줘야지 최솟값에 도달하게 되므로 앞에 '-'를 붙여주게 됨.)
- learning rate?
사용자가 정할 수 있는 하이퍼파라미터로 학습률을 말함. 적절한 값을 찾는 것이 중요하다!
>> 그 이유는 Local minimum에 빠질 수 있기 때문. Global minimum 찾는 것은 거의 불가능함으로 가장 Global 한 Local minimum을 찾도록 노력하는 것이 중요! (gradient 방향 수식에 따르면 기울기 값이 클수록 크게 움직이게 되고 작을수록 작게 움직이게 되는데 이를 적절하게 조정해주는 것을 말함. 다른 말로는 step size라고도 함)
* Gradient descent의 종류
- SGD (Stochatic Gradient descent)
- GD (Gradient descent)는 5개의 샘플의 기울기를 전부 고려하여 1step을 간다면, SGD는 하나의 샘플만 고려하여 1step을 감(비복원 추출로 다 뽑고 다시 주머니에 넣고 반복, local minimum에서 탈출 기회가 되기도 함)
- mini-batch SGD
-SGD는 하나의 샘플만을 고려하기 때문에 너무 성급하게 방향 결정. 따라서 샘플을 작은 묶음으로 만들어서 1step 기울기 고려 (배치사이즈가 작을수록 좋지만, 올리게 된다면 learning rate도 올리기! & warm up도 해 놓아야함)
- Momentum (방향성)
- 기울기를 누적하여 관성을 가지게 함 (아까 갔던 방향만큼 또 가자)
(기울기가 누적되어 더해지니 앞으로 쭉쭉 가게됨)
- RMSprop (Root Mean Square Propagation) (스텝 사이즈)
- 간단하게 변수들마다 다르게 가중치를 주자. 많이 등장한 아이들은 최적의 값이라는 뜻이니 보폭수를 줄이고, 드물게 나타난 변수 의 경우 보폭수를 크게하자. (gradient의 sum of squares로 나눠줌 --> 값이 빠르게 작아져 0으로 수렴하여 멈춰버리는 불상사가 발생. 이를 방지하기 위해 최근의 데이터에 가중치를 부여함으로써 0으로 수렴하지 않게 됨 )
- Adam (Momentum + RMSprop)
참고: bit.ly/3ksyheh, bit.ly/3WrysUC
Training vs. Test (vs. Validation)
- training 셋으로 훈련
- validation 셋으로 적절한 하이퍼파라미터 조정 (최적의 epoch, model구조를 찾아내기)
- test 셋으로 평가
- K-Fold Cross Validation : 데이터가 적을 경우 사용
(+ test 셋은 따로 남겨두기!)
'머신러닝 스터디 > 딥러닝' 카테고리의 다른 글
꼭 알아야할 수학(3)_미분심화 (0) | 2023.02.04 |
---|---|
꼭 알아야할 수학(2)_미분 (0) | 2023.01.31 |
꼭 알아야할 수학(1)_로그/행렬/벡터 (0) | 2023.01.31 |
인공신경망 (Artificial Neural Network, ANN)_(2) (0) | 2022.10.01 |
인공신경망 (Artificial Neural Network, ANN)_(1) (1) | 2022.09.29 |