๋”ฅ๋Ÿฌ๋‹

์‹ ๊ฒฝ๋ง ์ถœ๋ ฅ์ธต ๊ตฌํ˜„

์ฃผ์˜ ๐Ÿฑ 2022. 12. 10. 13:19
728x90
๋ฐ˜์‘ํ˜•

์ €๋ฒˆ์‹œ๊ฐ„์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ ์ถœ๋ ฅ์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๋ถ„๋ฅ˜ -์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜, ํšŒ๊ท€ - ํ•ญ๋“ฑํ•จ์ˆ˜๋กœ ๊ฐˆ๋ฆฐ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ๊ตฌํ˜„ํ•ด๋ด…์‹œ๋‹ค. 

ํ•ญ๋“ฑํ•จ์ˆ˜๋Š” ์ž…๋ ฅ์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. 

์†Œํ”„ํŠธ๋งฅ์Šค๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ์ž…๋ ฅ์˜ ํ™”์‚ดํ‘œ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฆ‰ ๋ชจ๋“  ์ถœ๋ ฅ๋‰ด๋Ÿญ์ด ๊ฐ ์ž…๋ ฅ์‹ ํ˜ธ์—์„œ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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์ด ๋˜๊ฒ ์ฃ 

๋ฐ˜์‘ํ˜•