[Loss]

흔히들 코드에서 아래와 같이  경우를 보는 경우가 생각보다 존재하는데, 바로 feature data를 Normalize하는 것이다.

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train/255.0, x_test/255.0
y_train_oh = tf.one_hot(y_train, 10)
y_test_oh = tf.one_hot(y_test, 10)
이때, 255로 나누는 이유는 정규화를 위해서인데, 
X와 y사이의 "Loss map"을 simple하게 유도하여 조금만 변화시켜줘도 되기 때문에 사용한다!!

 

 

 

🤔[Loss Map...?]

Loss map이란??

Loss map은 input image의 각 pixel에 대한 Loss값을 나타내는 map이다.
이를 통해 predict와 target값 간의 차이를 시각화 할 수 있다.

일반적으로는 predict와 target간의 차이를 계산하기 위해 Loss function이 사용된다.
Loss function으로 pixel별 Loss를 얻은 후 이를 시각화하면 Loss map을 얻을 수 있다.

이런 Loss map은 아래와 같은 특징을 갖는다.

1. Loss map은 쉽게 쌓을수록 좋다.
2. ReLU는 Loss map을 쉽게 쌓을 수 있다!
3. Layer를 깊게 쌓을수록 Loss map이 복잡해져 X와 y사이의 복잡한 문제를 해결할 수 있다!

 

 

[Loss function]

기울기 그래프를 수렴속도 그래프라 생각해보자!

MSE (Mean Squared Error)
MAE는 L1 Norm을 사용한 Loss function이다.
MAE = (1/n) * |yᵢ - ȳ| 로 표현되며, 쉽게 말하자면 |x|형태이다.

- 절댓값의 합을 평균으로 계산하기에 이상치(outlier)에 더 강인한 성질을 갖는다.
즉, 이상치에 큰 영향을 받지 않고 전체적인 오차를 잘 반영한다.
MSE와 달리 local minima 탈출은 쉬우나 과하다는 점...

- 수렴속도의 관점에서, x=1을 기점으로 x>1에서는 수렴속도가 너무 느리고 x<1에서는 너무 빠르다.
따라서 data 집단이 1~100사이의 값을 다룰 때 사용이 용이하다.



MSE (Mean Squared Error)
MSE는 L2 Norm을 사용한 Loss function이다.
MSE = (1/n) * (yᵢ - ȳ)² 로 표현되며, 쉽게 말하자면 x²형태이다.

- 예측값과 실제값의 차이를 제곱하여 계산하기에 이상치(outlier)에 민감하게 반응할 수 있다.
또한, 오차값이 커질수록 제곱으로 인해 더 큰 가중치를 부여할 수 있다.

- 수렴속도 관점에서, 2차함수 형태이기에 극점에 가까워질수록 속도가 느려진다.
 x=1을 기점으로 x>1에서는 속도가 빠르고 x<1에서는 속도가 느리다.
다만, 어느기점(x<1)에서 갖혀버리는, local minima문제가 발생할 수 있다.
즉, local minima에 빠질 가능성이 높다.


RMSE (Root Mean Squared Error)
- RMSE는 √(MSE)로 다변량함수이며, MAE와 달리 0에서 미분가능하다는 장점이 존재한다!
- 즉, MAE의 대체라는 느낌이라 생각하면 좋을 것 같다.

 

 보통 MSE, MAE의 경우, 기울기기반 최적화와 사용시 일부출력이 포화하면서 기울기가 아주 작아진다.

따라서 보통 Cross Entropy를 많이 사용한다.

Cross Entropy. &. Categorical Cross Entropy
- Cross Entropy, CE 및 CCE는 확률값을 평가(loss) 시 사용된다. (0≤y≤1의 값이 분포)
CCE = -yᵢ * Σlog(ȳ)) 으로 yᵢ 즉, 참값에 대한 결과를 반영가능하다!
=> 따라서 softmax와 같은 multi activation function output, multinoulli Distribution과 연관된다.
=> 쉽게 말하자면, 0~1사이일 때, softmax output일 때 사용가능하다.


Binary Cross Entropy
- Binary Cross Entropy, BCE는 이진문제에 적용하는 Cross Entropy 방식이다.
BCE = -yᵢ * log(ȳ) - (1-yᵢ) * log(1-ȳ)
- yᵢ와 (1-yᵢ)가 곱해짐을 통해 update시 정답과 오답을 모두 사용한다.
- 유의할 점은 softmax를 사용하면 편향이 되서 sigmoid output 즉, 독립적인 활성화 함수의 output일 때 사용한다.
- 문제점: softmax output을 사용하게 되면, 정답을 맞추기 위해 update되는 것이 아닌, 오답을 피하기 위해서 학습이 되어 버린다.

 

 

 

 

 

 

[Activation function]

cf. Distribution에 따른 Activation function 사용법

1. Gaussian Distribution: affine transform에 기초한 "linear" unit

→ Regression문제에서 MSE의 최소화를 위해 사용된다.

2. Bernoulli Distribution: "s"unit (sigmoid, tanh)

정규화 되지 않은(= ∑≠1) 확률분포를 구하기 위해 s자형 함수를 사용한다.

이진변수 y값을 예측하기 위해 사용되며, 이진변수일 때, wTx+b를 logit이라 부른다.

 

3. Multinoulli Distribution: "softmax" = exp(z) / ∑exp(z)

→ softmax는 보통 cross-entropy들과 자주 사용되는데,

softmax는 총 클래스의 확률값의 합이 1인 다변량함수로 변수하나가 바뀌면 동시에 나머지도 변하기에 

하나라도 모델이 맞히게 된다면 전체적으로 학습의 정확도가 올라갈 가능성이 높다.

만약 MSE와 사용하면 부정확한 예측을 크게 확신해도 출력변경이 불가능하기 때문이다.

 exp는 Maximum Likelihood를 이용해 y출력에 도움을 준다.

log(softmax) = z - log∑exp(z)

이를 해석하면,

i) z로 인해 기울기기반알고리즘은 z를 높이는 방향으로 학습하며

ii) log∑exp(z)로 인해 z 전체값이 작아지는 방향으로도 학습된다.

 

 

ReLU
- hidden layer에서 사용이 용이
- hidden layer의 activation은 0또는 1에 분포할 확률이 높아야 한다.

 

 

 



Sigmoid
- 요즘은 거의 output layer에서 특히나 확률분포(Probabiliy)의 문제에서 사용한다.
- 특히나, 0과 1의 분포가 많은 확률분포문제에 좋다.
(즉, 두개의 군집으로 구분되는 경우.)
- 분포가 균등할 때는 linear를 통해 mse를 사용한다.



tanh
- 사실상 (0,0)을 지나는 sigmoid식이라 볼 수 있다.
- correlation과 같은 경우에서, 2개의 군집같은 문제에서 많이 사용



Leaky ReLU
- backpropagation시 음수부분을 살리고자 사용.
- 확률적으로 전체적으로 왼쪽(x<0)으로 치우치게 될 가능성이 높다.
- 오히려 방해가 되어 ReLU보다 성능이 안나올 가능성이 높다.



ReLU6
- f(x) = clip(x, 0, 6)
- 데이터가 많을 수록 좋은 함수
- 기울기가 1인 폭이 좁아서 데이터가 적으면 0으로 모두 죽어버릴 수 있다.



Hard-sigmoid
- f(x) = ReLU6 / 6 - 0.5 및 스케일링
- f(x) = max(0, min(1, (x+1)/2))
- 분포가 0~1로 되며, 데이터가 많을 수록 좋은 함수



Swish
- x*sigmoid(x)
- 1차 미분이 sigmoid와 거의 비슷.(continuous)
- 1차미분 = 속도로 생각해보면, 음수부분과 양수부분 모두 속도가 비슷하기에 쉽게 update가능
- 2차미분식이 Gaussian과 비슷
- 2차미분 = 가속도라 생각하면 2차미분의 대칭성으로 인해 살아날 가능성이 높다.




Hard-Swish
- x * hard_sigmoid(x)
- swish와 거의 비슷하지만 연산속도가 빠르다.



Smooth L1
- x < 1에서 (1/2)*(y-ȳ)²
- x ≥ 1에서 |y-ȳ| - (1/2)



cf) Huber Loss, Dice Loss, KL-Divergence, . . .

 

 

+ Recent posts