์ ๊ฒฝ๋ง ์ถ๋ ฅ์ธต ๊ตฌํ
์ ๋ฒ์๊ฐ์ ์ธ๊ธํ๋ฏ ์ถ๋ ฅ์ธต์์ ์ฌ์ฉํ๋ ํจ์๋ ๋ถ๋ฅ -์ํํธ๋งฅ์ค ํจ์, ํ๊ท - ํญ๋ฑํจ์๋ก ๊ฐ๋ฆฐ๋ค๊ณ ํ์ต๋๋ค. ์ด์ ๋ํด ์์ธํ ์์๋ณด๊ณ ๊ตฌํํด๋ด ์๋ค.
ํญ๋ฑํจ์๋ ์ ๋ ฅ์ ๊ทธ๋๋ก ์ถ๋ ฅํฉ๋๋ค.
์ํํธ๋งฅ์ค๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ ์ ๋ ฅ์ ํ์ดํ๋ฅผ ๋ฐ์ต๋๋ค. ์ฆ ๋ชจ๋ ์ถ๋ ฅ๋ด๋ญ์ด ๊ฐ ์ ๋ ฅ์ ํธ์์ ์ํฅ์ ๋ฐ์ต๋๋ค. ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
n์ ์ถ๋ ฅ์ธต์ ๋ด๋ฐ ์ , yk๋ ๊ทธ์ค์์๋ k๋ฒ์งธ ์ถ๋ ฅ์ ๋ปํฉ๋๋ค . ์ง์ํจ์ exp()๋ ํฐ ๊ฐ์ ๋ด๋ฑ๊ธฐ๋๋ฌธ์ ์ค๋ฒํ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ ํธ ์ค ์ต๋๊ฐ(c)๋ฅผ ๋บด์ฃผ๊ฒ ์ต๋๋ค.
import numpy as np
a = np.array([0.3,2.9,4.0])
def softmax(a):
c=np.max(a-c)
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a/sum_exp_a
return y
์ํํธ๋งฅ์ค ํจ์์ ์ถ๋ ฅ์ 0๋ถํฐ 1.0์ฌ์ด์ ์ค์ ์ ๋๋ค. ๋ํ ์ดํฉ์ 1์ ๋๋ค. ์ด ์ฑ์ง ๋๋ถ์ ์ํํธ๋งฅ์ ํจ์์ ์ถ๋ ฅ์ ํ๋ฅ ๋ก ํด์ํ ์ ์์ต๋๋ค. ์ฃผ์์ ์ผ๋ก ์ํํธ๋งฅ์ค ํจ์๋ฅผ ์ ์ฉํด๋ ๊ฐ ์์์ ๋์๊ด๊ณ๋ ๋ณํ๋ ์๊ธฐ์ ํ์ต๊ณผ์ ์์๋ ์ํํธ๋งฅ์ค๋ฅผ ์ฐ์ง๋ง, ์ถ๋ก ๋จ๊ณ(ํ์ตํ ๋ชจ๋ธ๋ก ๋ถ๋ฅํ ๋)์์๋ ์ํํธ๋งฅ์คํจ์๋ฅผ ์๋ตํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
์ถ๋ ฅ์ธต์ ๋ด๋ฐ ์๋ ๋ฌธ์ ์ ๋ง๊ฒ(๋ถ๋ฅํ๋ ํด๋์ค ์) ์ ํฉ๋๋ค. ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ 0~9๊น์ง ์ซ์๋ก ๋ถ๋ฅํ๋ ๋ฌธ์ ๋ ์ถ๋ ฅ์ธต ๋ด๋ จ์๊ฐ 10์ด ๋๊ฒ ์ฃ