๋”ฅ๋Ÿฌ๋‹

์‹ ๊ฒฝ๋ง ํ•™์Šต - ์†์‹คํ•จ์ˆ˜ ์˜ค์ฐจ์ œ๊ณฑํ•ฉ, ๊ต์ฐจ ์—”ํŠธ๋กœํ”ผ ์˜ค์ฐจ

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

ํ•™์Šต์ด๋ž€ ํ›ˆ๋ จ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ค‘์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ตœ์ ๊ฐ’์„ ์ž๋™์œผ๋กœ ํš๋“ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•™์Šต์˜ ๋ชฉํ‘œ๋Š” ์†์‹คํ•จ์ˆ˜์˜ ๊ฒฐ๊ด๊ฐ’์„ ๊ฐ€์žฅ ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฐ€์ค‘์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•์ด ์žˆ๋‹ค. 

์‹ ๊ฒฝ๋ง์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ธต์„ ๊น๊ฒŒํ•œ ๋”ฅ๋Ÿฌ๋‹์˜ ๊ฒฝ์šฐ ์ˆ˜์–ต ๊ฐœ๋ฅผ ํ›จ์”ฌ ๋„˜์„ ์ˆ˜๋„ ์žˆ๋‹ค ์ด ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ผ์ผ์ด ์ •ํ•ด์ฃผ๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๋‹คํ–‰ํžˆ, ์‹ ๊ฒฝ๋ง์˜ ํŠน์ง•์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ํ•™์Šตํ•œ๋‹ค๋Š” ๊ฒƒ, ์ฆ‰ ๊ฐ€์ค‘์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ์ž๋™์œผ๋กœ ๊ฒฐ์ ˆํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ์‹ ๊ฒฝ๋ง ํ•™์Šต(๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  MNIST์…‹์—์„œ ์†๊ธ€์”จ ์ˆซ์ž ํ•™์Šต์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

 

์†๊ธ€์”จ์˜ ํŠน์ง•์„ ์‚ฌ๋žŒ๋งˆ๋‹ค ๊ธ€์”จ์ฒด๊ฐ€ ๋‹ฌ๋ผ ์ˆซ์ž๋ฅผ ์ œ๋Œ€๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์„ค๊ณ„ํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ์ง€์—์„œ ํŠน์ง•(ํ”ผ์ฒ˜)๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๊ทธ ํŠน์ง•์˜ ํŒจํ„ด์„ ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ์ˆ ๋กœ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ํŠน์ง•์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์—์„œ ๋ณด์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€ํ™˜๊ธฐ๋‹ค. ์ด๋ฏธ์ง€์˜ ํŠน์ง•์€ ๋ณดํ†ต ๋ฒกํ„ฐ๋กœ ๊ธฐ์ˆ ํ•˜๊ณ , CV์—์„œ๋Š” SIFT, SURF, HOG ๋“ฑ์˜ ํŠน์ง•์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฐ ํŠน์ง•์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ฒกํ„ฐํ™”ํ•˜๊ณ  ์ด ๋ฒกํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ง€๋„ํ•™์Šต์˜ ๋Œ€ํ‘œ ๋ถ„๋ฅ˜ ๊ธฐ๋ฒ•์ธ SVM, KNN ๋“ฑ์œผ๋กœ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๊ทœ์น™์„ ์ฐพ๋Š” ์ผ์€ ๊ธฐ๊ณ„๊ฐ€ ๋‹ด๋‹นํ•˜์ง€๋งŒ, ์ด๋ฏธ์ง€๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ง•์€ ์—ฌ์ „ํžˆ ์‚ฌ๋žŒ์ด ์„ค๊ณ„ํ•œ๋‹ค. 

ํšŒ์ƒ‰์€ ์‚ฌ๋žŒ์ด ๊ฐœ์ž…ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

์‹ ๊ฒฝ๋ง์€ ์•ž์„  ๋ฐฉ๋ฒ•๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ธฐ๊ณ„๊ฐ€ ํŠน์ง•๊นŒ์ง€ ์Šค์Šค๋กœ ํ•™์Šตํ•œ๋‹ค. ์‹ ๊ฒฝ๋ง์˜ ์ด์ ์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๊ฐ™์€ ๋งฅ๋ฝ์—์„œ ํ’€ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์ˆซ์ž 1์„ ์ธ์‹ํ•˜๋Š” ๋ฌธ์ œ, ๊ฐœ๋ฅผ ์ธ์‹ํ•˜๊ฑฐ๋‚˜ ์‚ฌ๋žŒ์˜ ์–ผ๊ตด์„ ์ธ์‹ํ•˜๋Š” ๋ฌธ์ œ๋“  ์‹ ๊ฒฝ๋ง์€ ๊ทธ์ € ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์˜จ์ „ํžˆ ํ•™์Šตํ•˜๊ณ  ํŒจํ„ด์„ ๋ฐœ๊ฒฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ฆ‰ ์‹ ๊ฒฝ๋ง์„ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅ์œผ๋กœ ์“ฐ๋Š” end-to-end ๋ฐฉ์‹์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์†์‹ค ํ•จ์ˆ˜

์‹ ๊ฒฝ๋ง ์„ฑ๋Šฅ์˜ ๋‚˜์จ์„ ํ‘œ์‹œํ•˜๋Š” ์ง€ํ‘œ๋กœ, ํ˜„์žฌ ์‹ ๊ฒฝ๋ง์ด ํ›ˆ๋ จ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ชป์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค. 

์‹ ๊ฒฝ๋ง์—์„œ๋Š” ์†์‹คํ•จ์ˆ˜๋กœ ์ตœ์ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์˜ค์ฐจ์ œ๊ณฑํ•ฉ๊ณผ ๊ต์ฐจ ์—”ํŠธ๋กœํ”ผ ์˜ค์ฐจ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

์˜ค์ฐจ์ œ๊ณฑํ•ฉ

yk: ์‹ ๊ฒฐ๋ง์˜ ์ถœ๋ ฅ(์‹ ๊ฒฝ๋ง์ด ์ถ”์ •ํ•œ ๊ฐ’)

tk: ์ •๋‹ต ๋ ˆ์ด๋ธ”

k: ๋ฐ์ดํ„ฐ์˜ ์ฐจ์› ์ˆ˜

์˜ˆ๋ฅผ ๋“ค์–ด, ์†๊ธ€์”จ ์ธ์‹ ์—์„œ yk ์™€  tk๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์›์†Œ 10๊ฐœ์งœ๋ฆฌ ๋ฐ์ดํ„ฐ์ด๋‹ค. 

y=[0.1, 0.05,0.6,0.0,0.05,0.1,0.0,,0.0,0.0]

t=[0,0,1,0,0,0,0,0,0,0]

์›์†Œ๋“ค์€ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์ˆซ์ž 0,1,2,,,,์ˆœ์ผ๋•Œ์˜ ๊ฐ’์ด๋‹ค. ์—ฌ๊ธฐ์— ์‹ ๊ฒฝ๋ง ์ถœ๋ ฅ y๋Š” ์†Œํ”„ํŠธ๋งฅ์ˆ˜ ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ๊ฐ’์ด๋‹ค. t๋Š” ์›ํ•ซ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ, ์ •๋‹ต์ด 2์ž„์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ์‹ ๊ฒฝ๋ง์— ๋”ฐ๋ฅด๋ฉด 2์ผ ํ™•๋ฅ ์€ 0.6์ด๋‹ค. 

์˜ค์ฐจ์ œ๊ณฑํ•ฉ์€ ๊ฐ ์›์†Œ์˜ ์ถœ๋ ฅ๊ณผ ์ •๋‹ต ๋ ˆ์ด๋ธก์˜ ์ฐจ๋ฅผ ์ œ๊ณฑํ•ด ๊ทธ ์ดํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์˜ค์ฐจ๊ฐ€ ์ž‘์„์ˆ˜๋ก ์ •๋‹ต์— ๊ฐ€๊น๋‹ค. 

def sum_squares_error(y,t):
	return 0.5* np.sum((y-t)**2)
   
sum_squares_error(np.array(y),ap.array(t))

 

 

๊ต์ฐจ ์—”ํŠธ๋กœํ”ผ ์˜ค์ฐจ

log๋Š” ๋ฐ‘์ด e์ธ ์ž์—ฐ๋กœ๊ทธ๋กœ, ์‹ค์งˆ์ ์œผ๋กœ ์ •๋‹ต์ผ ๋•Œ ์ถ”์ •์˜ ์ž์—ฐ๋กœ๊ทธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์‹์ด๋‹ค.

def cross_entropy_error(y,t):
	delta= 1e-7
    return -np.sum(t * np.log(y+delta))

์•„์ฃผ์ž‘์€ ๋ธํƒ€๊ฐ’์„ ๋”ํ•œ ์ด์œ ๋Š” np.log()์— 0์ด ๋“ค์–ด๊ฐ€๋ฉด -inf ๊ฐ’์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ๋ชจ๋‘์— ๋Œ€ํ•œ ์†์‹คํ•จ์ˆ˜์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ๊ธฐ์— ์ผ๋ถ€๋งŒ ํ•™์Šตํ•˜๋Š” ๋ฏธ๋‹ˆ๋ฐฐ์น˜ ํ•™์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค.

np.random.choice(60000,10)๋กœ ๋ฌด์ž‘์œ„๋กœ ๋“ค์–ด๊ฐˆ ์ธ๋ฑ์Šค๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค. 0์ด์ƒ 60000๋ฏธ๋งŒ ์ค‘ 10๊ฐœ ์ˆซ์ž

 

๋ฐ˜์‘ํ˜•