티스토리 뷰
2020/09/16 - [Study/인공지능] - 3층 인공신경망 ( 퍼셉트론과 활성화 함수의 결합 ) ( 인공지능 기초 #5-1)
2020/09/15 - [Study/인공지능] - Heaviside 함수 Sigmoid함수 ReLU 함수, 신경망과 활성화 함수 ( 인공지능 기초 #4 )
확률 벡터는 단순하게 확률을 벡터로 표현한 것이다.
중요한점은
1. 확률은 음수가 없다는 점.
2. 모든 확률을 더하면 1이 나온다는 점 이다.
일반적인 벡터는 음수일 수도 있고, 다 더했을때 1이 되지 않을수도 있다.
이러한 벡터를 양수이며 다 더하면 1이 되도록 바꾸어 주는 것이 Softmax 변환 이다. ( 확률벡터로 변환시켜주기 )
방법으로는 (a1,a2,a3 ,...,an) 이 있을 때
1. 양수로 만들기
e^x // x에 값을 넣어줘서 양수로 만들어준다. (ex, e^a1 , e^a2, e^a3...)
2. 다 더했을 때 1이 나오도록 만들기
다 더한 것 분의 e^x 로 표현한다. // 다 더했을 때 1이 나온다
여기서 (a1,a2,a3,...,an) 와 (a1+C ,a2+C ,a3+C,..., an+C)의 softmax값은 동일하다.
이를 이용하여 overflow를 방지할 수 있다. // 숫자가 너무 크면 메모리상에 저장하지 못한다. 이를 방지한다는 뜻
사용을 하는 법은 a1 = 1010 a2 = 1000 a3 = 990일때, 각각에 1000을 빼면, 0 , - 10, -20 이 된다.
전자는 값이 너무 크기때문에 overflow가 발생하지만, 후자는 값이 저장범위를 벗아나지않아 저장된다.
다행히도 softmax는 모든 원소에 같은값을 더하거나 뺏을때 같은 결과가 나오기 때문에 이렇게 사용할 수 있다.
이를 증명하는 과정은 지수함수의 특성을 이용하면 된다.
e^a1+C , e^a2+C , e^a3+C 세 원소를 softmax하면
(e^a1+C) / (e^a1+C) + (e^a2+C) + (e^a3+C)
(e^a2+C) / (e^a1+C) + (e^a2+C) + (e^a3+C)
(e^a3+C) / (e^a1+C) + (e^a2+C) + (e^a3+C)
이렇게 세가지 원소가 된다 여기서 e^a1+C = e^C*e^a1 이다. [지수함수의 특성]
그렇게 e^C 를 기준으로 묶어주면
e^C * e^a1/ e^C * ( (e^a1) + (e^a2) + (e^a3) ) 여기서 e^C를 소거할 수 있다. 결국 softmax의 최종값은
e^a1/(e^a1) + (e^a2) + (e^a3)
e^a2/(e^a1) + (e^a2) + (e^a3)
e^a3/(e^a1) + (e^a2) + (e^a3)
이렇게 나온다.
이로서 softmax전 원래 원소에 같은 값을 빼거나 더해도 softmax 결과는 같다는 것을 증명하게 되었다.
'Study > 인공지능' 카테고리의 다른 글
수치미분과 gradient, 최대 최소 등위선면 (인공지능 기초 #8) (0) | 2020.10.15 |
---|---|
MNIST, 손글씨 구분하기 + Tensor 개념 (인공지능 기초 #6) (1) | 2020.09.17 |
3층 인공신경망 ( 퍼셉트론과 활성화 함수의 결합 ) ( 인공지능 기초 #5-1) (1) | 2020.09.16 |
Heaviside 함수 Sigmoid함수 ReLU 함수, 신경망과 활성화 함수 ( 인공지능 기초 #4 ) (0) | 2020.09.15 |
다층 퍼셉트론 XOR 논리회로 표현하기 , 단층으로 안되는 이유 ( 인공지능 기초 #3 ) (0) | 2020.09.14 |