딥러닝이란?
- 사람이 직접 기계를 가르치지 않아도, 기계가 스스로 학습할 수 있는 기술
크게 세가지 layer로 나눌 수 있다.
1. Input layer - 우리가 넣어주는 input으로, 학습할 dataset의 feature를 넣는다.
2. Hidden layer - 딥러닝에서 중간 연산을 담당하는 layer들이다.
3. Output layer - 정답 layer로, 넣어준 input을 연산한 결과값(output)을 내어준다. 이 결과값은 예측값(prediction)으로, 실제 정답값(label)과 비교해 오차를 줄이는 방향으로 딥러닝을 학습시킨다.
간단히 딥러닝의 연산을 알아보자
한 layer는 이전 layer들의 값*w(weight) + B(bias)의 합으로 이루어진다.
예를 들어 U1층은 a*wa1 + bwb1 + B 로 연산된다.
하지만 이렇게 나온 값은 너무 간단하기 때문에, activation function을 사용해 값을 한 번 꼬아준다.
Activation function
위에서 연산한 값을 꼬아주는 함수로, 보통 Linear function(선형함수)가 아닌 Non-Linear function(비선형함수)를 사용한다.
만약 네트워크가 선형 수식으로만 이루어진다면, Layer가 깊어진다 하더라도 기존 layer의 제곱꼴밖에 나오지 않으므로 깊은 layer를 구성하는 의미가 없어진다. 따라서 활성화함수는 비선형 함수를 사용해, 네트워크가 더 다양한 feature를 추출할 수 있도록 구성한다.
activation function의 종류
1. sigmoid
평균이 0.5이고, 모든 값을 0~1 사이로 만드는 활성화함수이다. 딥러닝의 backpropagation은 미분값을 곱하며 진행된다. 빨간색은 sigmoid를 미분한 값인데, 미분한 값이 매우 작으므로 sigmoid 함수가 곱해질수록 값이 작아질 수 밖에 없다. 따라서 깊은 layer의 활성화함수로 사용하기엔 적합하지 않다.
2. ReLU
양수일 땐 값을 그대로 사용하고, 음수일 땐 0을 출력하는 함수이다. sigmoid와 다르게 양수일 때 ReLU의 미분값은 1로, Layer가 깊어지도라도 값의 손실이 발생하지 않는다는 장점이 있다. 그러나 한 번이라도 음수값이 나온다면 미분값이 0이므로 이후의 layer는 업데이트를 멈추게 되는 단점이 존재한다.
이런 단점을 보완하기 위해 Leaky ReLU, ELU(Exponential Linear Unit)등이 고안되었다. 음수값을 모두 0으로 출력했던 ReLU와는 달리 음수값도 영향을 줄 수 있도록 변형시킨 함수이다. 모든 값을 활용할 수 있다는 장점이 있지만, 연산속도가 ReLU보다 느리다는 단점도 있다.
3. softmax
출력값을 0~1사이의 확률값으로 변환해주고, 변환된 값들의 합은 항상 1인 함수이다. 보통 classification의 마지막 출력층에 사용한다.
classification 모델에서 최종 output값은 softmax 함수를 거쳐 각 class에 속할 확률로 변환된다.
그 중 가장 높은 확률을 가지는 class가 모델이 예측한 class가 되는 것이다.
Loss function
인공지능 학습이란 정답(label)과 예측(prediction)의 차이를 최소화하는 방법으로 모델을 업데이트하는 과정을 의미한다.
여기서 label과 prediction의 차이를 계산하는 함수가 Loss Function이다.
Loss function의 종류
1.MAE & MSE
주로 regression, transformation 모델에서 사용하는 loss function이다.
MAE : Mean Absolute Error, 평균절대오차. 정답값과 예측값 차이에 대한 평균이다.
예를 들어 신체 나이를 예측하는 모델 학습 시, 정답값이 10, 31, 51살이고 예측값이 9, 37, 45살이라면 MAE는 4.33이다.
MSE : Mean Squared Error, 평균제곱오차. 정답값과 예측값 차이에 대한 제곱의 평균이다. 위와 같은 예제에서 MSE는 24.33이다.
MAE & MSE의 차이
예측값 조절 시, MAE는 일정한 간격으로 loss값이 줄어들지만, MSE는 정답값에 근접할수록 변화폭이 줄어든다. 따라서 MSE가 최적값에 수렴하기에 더 쉽다. 하지만 MSE는 오차의 제곱값이므로, 특이값이 발생할 경우 loss전체가 갑자기 커질 수 있다는 단점이 있다.
2. cross entropy (교차 엔트로피)
주로 classification 모델에서 사용한다.
교차 엔트로피는 하나의 사건에 대해 두가지 확률 분포를 활용해 불확실성을 표현한 것으로, 두 분포가 동일할수록 0에 가까워지고 다를수록 값이 커진다.
여기서 두 분포를 정답분포와 예측분포로 설정할 때, 같을수록 0으로 수렴, 다를수록 값이 커지는 loss function의 개념과 일치한다. 따라서 softmax activation function을 사용해 최종 output 값을 확률값으로 변환하는 classification 모델의 loss function 함수로 사용하기에 적합하다.
예를 들어 정답확률이 개 : 1.0, 고양이,판다 : 0.0이고 예측확률이 개 : 0.73, 고양이 : 0.04, 판다 : 0.23일 때, cross entropy는 0.314이다.
모델이 학습할수록 개라고 예측할 확률은 1에 가까워지게 되고, loss function으로 사용한 cross entropy의 값은 0에 가까워지는 것을 확인할 수 있다.
딥러닝의 학습
딥러닝의 학습은 forward-propagation과 back-propagation을 통해 진행된다. forward-propagation과 back-propagation을 반복하며 Error가 0에 수렴하도록 파라미터(weight, bias)를 계속해서 수정하는 과정이다.
back-propagation은 loss function을 통해 계산된 오차 값을 통해 모델을 업데이트 하는 방법으로, 생성된 prediction(예측값)과 label(정답값)의 차이를 가지고 거꾸로 네트워크를 업데이트 하는 것이다.
딥러닝 학습의 전체 과정으로, input을 네트워크에 넣고 prediction(예측값)이 나오면, label(정답값)과 비교한 차이를 계산하는 Loss function을 지나고, loss function 값을 최소화하는 parameter( W(weight), B(bias) )를 구하는 과정인 "optimization"을 거쳐 parameter를 업데이트한다. 업데이트한 parameter 값들을 다시 네트워크에 넣어 또 다른 prediction을 뽑아내는 과정을 반복하는 것이 딥러닝 학습이다.
Optimizer
loss function 값을 최소화하는 parameter를 구하는 과정이 optimization이다.
주로 gradient descent algorithm을 기반으로 한 SGD에서 변형된 여러 종류의 optimizer를 사용한다.
gradient descent (경사 하강법)
경사가 없는 지점을 찾기 위해 값을 하강시키는 방법으로, 기울기가 클수록 빠르게 내려가고, 기울기가 완만할수록 천천히 내려간다.
위의 그래프는 네트워크를 구성하는 weight 가운데 하나인 w1이 변할 때 Error값의 변화 그래프이다. 처음 w1값은 랜덤하게 할당되며, 할당된 값으로 사용한다.
그 다음의 w1값은 현재의 w1값에서 접선의 기울기를 뺀 값이 사용된다. 같은 방법을 계속 반복하면 결국 기울기값이 0에 가까워지고, w값이 변하지 않는 최적의 값을 찾게 된다.
Learning rate
위의 수식에서 기울기값을 온전히 빼는 것이 아닌 a로 비율을 설정하는데, 이 값이 learning rate이다. learning rate는 사용자가 직접 설정한다.
만약 Learning rate가 너무 크다면, 최적의 W값을 찾기 못할 가능성이 있고, 너무 작다면 global minima(원래의 목표값)을 찾기 못하고 local minima에 빠질 수 있다. 또 최적값을 찾더라도 학습 속도가 너무 느리므로 시간이 오래걸린다는 단점이 있다. 따라서 Learning rate의 값을 잘 설정하는 것을 경험으로 터득하는 것이 중요하다.
출처
* 딥러닝 공부중인 학생이라 잘못된 부분이 있을수도 있습니다. 틀린 부분이 있다면 댓글로 정정 부탁드립니다. 읽어주셔서 감사합니다.
'AI > DeepLearning' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝1] 밑딥 스터디 CH6 정리 (4) | 2024.07.25 |
---|---|
[밑바닥부터 시작하는 딥러닝1] 밑딥 스터디 CH5 정리 (1) | 2024.07.24 |
[밑바닥부터 시작하는 딥러닝1] 밑딥 스터디 CH4 정리 (1) | 2024.07.24 |
[밑바닥부터 시작하는 딥러닝1] 밑딥 스터디 CH3 정리 (1) | 2024.07.24 |
[개념]선형(linearity) (0) | 2023.04.09 |