๐Ÿ’ป/ML

[๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋”ฅ๋Ÿฌ๋‹] ํ™œ์„ฑํ•จ์ˆ˜, ์ดˆ๊ธฐํ™”, ์ •๊ทœํ™”

ruhz 2020. 8. 17. 18:37

ํ™œ์„ฑํ•จ์ˆ˜

์šฐ๋ฆฌ๋Š” SIGMOID ํ•จ์ˆ˜๋ฅผ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์—์„œ ์ฒ˜์Œ ๋ฐฐ์› ๊ณ , 0์—์„œ 1์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋ง ํ•ด์ค€๋‹ค๋Š” ์ •๋„๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ•จ์ˆ˜๋Š” ์ธ๊ฐ„์œผ๋กœ ๋”ฐ์ง€๋ฉด, ๋‰ด๋Ÿฐ์—์„œ ์ž๊ทน์„ ํ•ด์„ํ•˜์—ฌ ๋‹ค๋ฅธ ๋‰ด๋Ÿฐ์œผ๋กœ ์‹ ํ˜ธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋‚ด๋Š” ์—ญ์น˜์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๊ฒƒ์„ ์ธ๊ณต์‹ ๊ฒฝ๋ง์—์„œ๋Š” ๋‰ด๋Ÿฐ์„ ํ™œ์„ฑํ™”์‹œ์ผœ์ค€๋‹ค๋Š” ๋œป์œผ๋กœ 'ํ™œ์„ฑํ•จ์ˆ˜'๋ผ๊ณ  ๋ถ€๋ฅด๊ฒŒ ๋œ๋‹ค. ํ™œ์„ฑํ•จ์ˆ˜์—๋Š” SIGMOID๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์‚ฌ์‹ค SIGMOID๋Š” ์น˜๋ช…์ ์ธ ์•ฝ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

SIGMOIDํ•จ์ˆ˜์˜ ์ถœ๋ ฅ์€ ํ•ญ์ƒ 1๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์—, SIGMOIDํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•œ ๊ฐ’๋“ค์€ ์„œ๋กœ ๊ณฑํ• ์ˆ˜๋ก ์ ์  ์ค„์–ด๋“ค ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๋น„์Šทํ•œ ์ด์œ ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์‹ ๊ฒฝ๋ง์„ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• '์˜ค์ฐจ์—ญ์ „ํŒŒ'๋Š” ๋’ค๋กœ ๊ฐˆ ์ˆ˜๋ก ์ ์  ๊ทธ ๊ฐ’์ด ํฌ๋ฏธํ•ด์ง„๋‹ค. ์ฒ˜์Œ์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋‚˜์ค‘์—๋Š” ์ค„์–ด๋“ค์–ด ์ถœ๋ ฅ์— ๋„ˆ๋ฌด๋„ ๋ฏธ๋ฏธํ•œ ์˜ํ–ฅ์„ ๋ผ์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๊ฒƒ์„ '๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ(Vanishing Gradient)' ๋ผ๊ณ  ํ•œ๋‹ค. 

 

RELU

๋ชจ๋‘๋ฅผ์œ„ํ•œ๋”ฅ๋Ÿฌ๋‹ lec10

์ด๋Ÿฌํ•œ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ํ™œ์„ฑํ•จ์ˆ˜๋กœ SIGMOID๋ณด๋‹ค๋Š” 'RELU'๋ผ๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. RELU๋Š” REctified Linear Unit์˜ ์•ฝ์ž๋กœ ์ง์—ญํ•˜๋ฉด '์ •๋ฅ˜ ์„ ํ˜• ์œ ๋‹›'์ด๋‹ค. ๋ง์€ ๊ฑฐ์ฐฝํ•˜์ง€๋งŒ '์ •๋ฅ˜'๋Š” z < 0 ์—์„œ ํ•จ์ˆซ๊ฐ’์„ ๋ชจ๋‘ 0์œผ๋กœ, ๊ทธ ์™ธ์—๋Š” SIGMOID์ฒ˜๋Ÿผ ๊ณก์„ ์ด ์•„๋‹Œ ์›๋ž˜์˜ '์„ ํ˜•' ์ง์„ ์„ ์ทจํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์ƒˆ๋กœ์šด ํ™œ์„ฑํ•จ์ˆ˜๋Š” ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ํ•™์Šต๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“์•˜๋‹ค. 

# hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
hypothesis = tf.nn.relu(tf.matmul(X, W) + b)

์‹ค์ œ๋กœ ์ธ๊ณต์‹ ๊ฒฝ๋ง ๋ถ„์•ผ์˜ ์—ฐ๊ตฌ๋Š” ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ง๋ฉดํ•˜๋ฉฐ ์‚ฌ์‹ค์ƒ ๋ฒ„๋ ค์ง€๋Š” ๋“ฏ ํ•˜์˜€์œผ๋‚˜, ์ œํ”„๋ฆฌ ํžŒํ„ด ๊ต์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํ™œ์„ฑํ•จ์ˆ˜์˜ ์‚ฌ์šฉ(RELU ๋“ฑ), ํ•™์Šต๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ• ๊ฐœ์„ (RBM ๋“ฑ)์„ ์ œ์•ˆํ•˜๊ณ , ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ์„ฑ๋Šฅ ๋˜ํ•œ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ๋‹ค์‹œ ํ™œ๋ฐœํ•œ ์—ฐ๊ตฌ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.

 

Dropout

์ด์ „์— ๊ณผ์ ํ•ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ ์ ์ด ์žˆ๋‹ค. ๊ณผ์ ํ•ฉ์€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š”, ๋„ˆ๋ฌด ํ•™์Šต๋ฐ์ดํ„ฐ์—๋งŒ ํŠน์ •๋œ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”, ํ•™์Šต ๋ฐ์ดํ„ฐ๋Ÿ‰์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋„ˆ๋ฌด ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–์ง€ ์•Š๋„๋ก ์ •๊ทœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ ๊ฒฝ๋ง์—์„œ๋Š” ์ •๊ทœํ™”์˜ ๋˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ Dropout์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•™์Šต ๊ณผ์ •์—์„œ ๋žœ๋ค์œผ๋กœ ๋…ธ๋“œ๋ฅผ ๊บผ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๊ฒƒ์ด ํ•™์Šตํšจ์œจ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ธ์ง€๋Š” ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ ๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ๋น„์œ ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ฐ ๋ถ„์•ผ์— ๋Œ€ํ•œ ์ „๋ฌธ๊ฐ€๋“ค์ด ๋ชจ์—ฌ์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๋ชจ๋‘ ๊ฐ™์ด ๋ฌธ์ œ๋ฅผ ์˜๋…ผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋žœ๋คํ•˜๊ฒŒ ์กฐ๋ฅผ ์งœ์„œ ์ด์•ผ๊ธฐํ•˜๋‹ค ๋ณด๋ฉด ๋” ๊ฑด์„ค์ ์ธ ์ด์•ผ๊ธฐ๊ฐ€ ์˜ค๊ณ ๊ฐˆ ์ˆ˜๋„ ์žˆ๊ณ  ๊ฒฐ๊ตญ ๋ฌธ์ œํ•ด๊ฒฐ์— ๋” ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

# ๋žœ๋ค์œผ๋กœ ๊บผ๋ฒ„๋ฆด ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋น„์œจ๋กœ ์ •์˜ํ•œ๋‹ค.
dropout_rate = tf.placeholder("float")

_L1 = tf.nn.relu(tf.add(tf.matmul(X, W), B))
L1 = tf.nn.dropout(_L1, dropout_rate)

 

 

์•ž์„  ๊ฒŒ์‹œ๋ฌผ์— ๋งํฌํ–ˆ๋˜ '๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋”ฅ๋Ÿฌ๋‹' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ํ•„๊ธฐํ•œ ๋…ธํŠธ์—
์ถ”๊ฐ€์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ๋”ํ•ด ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€์ž…๋‹ˆ๋‹ค.