일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mocov3
- UnderstandingDeepLearning
- simclrv2
- ConMatch
- shrinkmatch paper
- WGAN
- Meta Pseudo Labels
- dann paper
- Pix2Pix
- 백준 알고리즘
- SSL
- semi supervised learnin 가정
- conjugate pseudo label paper
- CGAN
- shrinkmatch
- BYOL
- 딥러닝손실함수
- mme paper
- CoMatch
- CycleGAN
- Pseudo Label
- adamatch paper
- Entropy Minimization
- cifar100-c
- 컴퓨터구조
- 최린컴퓨터구조
- tent paper
- GAN
- dcgan
- remixmatch paper
Archives
- Today
- Total
Hello Computer Vision
Softmax 활성화함수 알아보기 본문
우리가 분류할 때 레이어 최상단에 많이 쓰는 함수로는 softmax 함수가 있다.
이전에 다른 entropy 함수랑 mse함수를 다루었는데 softmax도 한번 체크해보고자 한다.
수식
$$\frac{exp(a_{k})}{\sum_{i=1}^{n}exp(a_{i})}$$
분모에서는 함수 값들에 자연상수를 씌워준 값의 합이고 분자는 해당 함수 값의 자연상수를 취한 것을 확인할 수 있습니다.
특징
각 함수 값에 softmax를 씌운 모든 값들의 범위는 [0,1]이며 합은 1이다.
-->예를 들어 함수 값(1, 1, 2)가 각각 나왔다고 했을 때 각각의 softmax값은 (0.21, 0.21, 0.58)이다.
softmax를 취한다고 함수 값의 대소변화에 변화를 일으키지 않는다.
--> 지수함수는 단조증가 함수이기 때문에 변하지 않는다.
모든 값의 합이 1이므로 확률로 생각하고 계산할 수 있다.
--> softmax값이 (0.21, 0.21, 0.58)이라면 input에 대해 3번째 클라스가 정답일 확률이 58퍼센트라고 해석할 수 있다.
주의점
softmax는 지수함수므로 높은 함수값을 가질 경우 오버플로(아주 높은 값) 문제가 발생할 수 있다.
파이토치를 사용해 Conv2d 를 사용할 경우 내장된 초기화 함수가 있어서 아직 한번도 발생한 적은 없다.
그러나 발생할 수도 있는데 이러한 경우
def softmax(x):
c = np.max(x)
exp_x = np.exp(x-c) # x값에 최대값 c를 빼준다
sum_exp_x = np.sum(exp_x)
y = exp_x / sum_exp_x
return y
이렇게 설정해 오버플로를 방지할 수는 있다.
파이토치 문서에는 그냥 inf로 표시된다고 언급만 하고 해결책을 말해주지는 않는다.
'딥러닝 > 손실함수' 카테고리의 다른 글
Gaussian distribution과 Mean Squared Error와의 관계 (1) | 2023.09.30 |
---|---|
Cross Entropy 초기 loss알아보기 (0) | 2023.09.26 |
Focal Loss 공부해보기 (0) | 2023.07.09 |
딥러닝 손실함수 알아보기(MSE, BCE, CE) (0) | 2022.11.16 |