티스토리 뷰

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이 나오도록 만들기

 

수학에서는 이를 normalize 한다고 한다.

다 더한 것 분의 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 결과는 같다는 것을 증명하게 되었다.

 

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
250x250