๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

AI/Coursera

[Coursera] 5. Optimization Problem

728x90
๋ฐ˜์‘ํ˜•
๐Ÿฅ‘ Coursera์˜ "Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and
Optimization" ๊ฐ•์ขŒ์˜ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๋ฉด์„œ ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

Normalizing Inputs

ํ•™์Šต ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” Input์„ Normalizationํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์™œ Normalize๋ฅผ ํ• ๊นŒ?

 

Normalize๋œ J ๊ทธ๋ž˜ํ”„์™€ ๋˜์ง€ ์•Š์€ J๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด์ž.

Normalize ๋˜์ง€ ์•Š์€ J๊ทธ๋ž˜ํ”„๋Š” J์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋งŽ์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Normalize๋œ J ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด ๋Œ€์นญ์ ์ธ ํ˜•์ƒ์„ ๋„๊ธฐ ๋•Œ๋ฌธ์— J๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋น„๊ต์  ์ ์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค. 

 

์ด ๋‘ ๊ทธ๋ž˜ํ”„์˜ contour(์œค๊ณฝ) ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ณ  J์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

Normalize ๋˜์ง€ ์•Š์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด Learning Rate๋ฅผ ์•„์ฃผ ์ž‘๊ฒŒ ์ค˜์•ผํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํฌ๊ฒŒ ์ค„๊ฒฝ์šฐ Global Optima์— ๋„๋‹ฌํ•  ๋•Œ ๊นŒ์ง€ ๊ณ„์† ์™”๋‹ค๊ฐ”๋‹ค ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ํ•™์Šต์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

๋ฐ˜๋ฉด์— Normalize๋œ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด Learning Rate๋ฅผ ํฌ๊ฒŒ์ฃผ๊ณ  ํ•™์Šต์„ ๋ช‡๋ฒˆ ์ง„ํ–‰ํ•˜์ง€ ์•Š์•„๋„ Global Optima์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ๋กœ๋Š” W๊ฐ€ ๊ณ ์ฐจ์›์˜ matrix์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์™„๋ฒฝํ•œ ๊ตฌํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋‚˜, ๋” ๊ตฌํ˜•์ด๊ณ  feature๋ฅผ ์œ ์‚ฌํ•œ scale๋กœ ๋งž์ถฐ์„œ ํ•™์Šต ์‹œ๊ฐ„์„ ์ค„์ธ๋‹ค.

 

 

Vanishing / Exploding Gradients

DNN ํ•™์Šต ์‹œ, ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ Gradient๊ฐ€ ๋งค์šฐ ์ž‘์•„์ง€๊ฑฐ๋‚˜ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. 

  • ์‹ ๊ฒฝ๋ง์˜ ๋ฏธ๋ถ„ํ•ญ์ด๋‚˜ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋งค์šฐ ์ปค์ง€๊ฑฐ๋‚˜ ์ž‘์•„์ง€๋Š”๊ฒƒ์„ ์˜๋ฏธ
  • ํ•™์Šต์ด ๋งค์šฐ ๊นŒ๋‹ค๋กœ์›€

 

1. unit์˜ ์ˆ˜๋Š” ์ž‘์ง€๋งŒ, ๋งค์šฐ Deepํ•œ NN์˜ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž.(activation function์€ g(z) = z๋กœ linearํ•˜๋ฉฐ, ํŒŒ๋ผ๋ฏธํ„ฐ b=0์œผ๋กœ ๋ฌด์‹œ)

 

์ด ๋•Œ ์–ด๋–ค unit์—์„œ์˜ W์ธ W[L]์ด 1.5์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด y hat์€ 1.5^L ๋กœ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ 1๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ธ 0.5๋ผ๋ฉด 0.5^L๋กœ ๋งค์šฐ ์ž‘์€ ๊ฐ’์ด ๋  ๊ฒƒ์ด๋‹ค. 

 

์œ„์—์„œ๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ์˜ˆ์‹œ๋กœ ๋“ค๊ณ  ์žˆ์ง€๋งŒ ๊ธฐ์šธ๊ธฐ๊ฐ’์—๋„ ๋˜‘๊ฐ™์ด ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์šธ๊ธฐ๋„ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ํ•™์Šต์ด ๋งค์šฐ ์–ด๋ ต๋‹ค. ํŠนํžˆ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋งค์šฐ ์ž‘์€๊ฒฝ์šฐ Gradient Descent์— ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

 

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์™„์ „ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ random ์ดˆ๊ธฐํ™”๋ฅผ ์ž˜ํ•˜๋ฉด ์–ด๋Š ์ •๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์–ด๋Š Layer์—์„œ Input Feature๊ฐ€ n๊ฐœ์ผ ๋•Œ

z(= w * input feature + b, ํ™œ์„ฑํ™” ํ•จ์ˆ˜์˜ ์ž…๋ ฅ)๋Š” a(ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•œ ๊ฒฐ๊ณผ) = Active func(z)์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ๋Š” ์ ์ ˆํ•œ z๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด n์ด ๋งŽ์„ ์ˆ˜๋ก, w๋Š” ์ž‘์•„์ ธ์•ผ ํ•œ๋‹ค.

 

w[i]๋ฅผ 1/n์œผ๋กœ ๋‘๋Š” ๊ฒƒ์ด๋‹ค.(Xavier Initialization)

# Xavier initialization
# n[l-1] : ์ด์ „ ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ feature์˜ ์ˆ˜
# shape : ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ
W[l] = np.random.randn(shape) * np.sqrt(1/(n[l-1]))

"""
ํ™œ์„ฑํ™” ํ•จ์ˆ˜์— ๋”ฐ๋ฅธ ์ˆ˜์ •
ReLU : W[l] = np.random.randn(shape) * np.sqrt(2/n[l-1])
tanh : W[l] = np.random.randn(shape) * np.sqrt(1/n[l-1]) # Xavier ์ดˆ๊ธฐํ™”
Yousha Benigo ์—ฐ๊ตฌ์ง„๋“ค์ด ์—ฐ๊ตฌํ•œ ๋ฐฉ๋ฒ• : W[l] = np.random.randn(shape) * np.sqrt(2/(n[l-1]+n[l]))
"""

 

 

 

2. ์—„์ฒญ Deepํ•œ ์‹ ๊ฒฝ๋ง์˜ ๊ฒฝ์šฐ์—๋Š” Backpropagation ๊ณผ์ •์—์„œ ์ถœ๋ ฅ์ธต์—์„œ ๋ฉ€์–ด์งˆ ์ˆ˜๋ก Gradient ๊ฐ’์ด ์ž‘์•„์ ธ ํ•™์Šต์ด ์ž˜๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ด ๊ฒฝ์šฐ์˜ ์›์ธ์€ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์˜ ๊ธฐ์šธ๊ธฐ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

 

๋จผ์ € sigmoid ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด 

๋ฏธ๋ถ„๊ฐ’์€ x์ด ํฌ๊ณ  ์ž‘์•„์ง์— ๋”ฐ๋ผ 0์— ์ˆ˜๋ ดํ•˜๋Š”๋ฐ Backpropagation ๊ณผ์ •์—์„œ Sigmoid์˜ ๋ฏธ๋ถ„๊ฐ’์ด ๊ฑฐ๋“ญ ๊ณฑํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๊ฒฝ๋ง์ด Deepํ•ด์งˆ ์ˆ˜๋ก Gradient ๊ฐ’์ด ๋งค์šฐ ์ž‘์•„์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ณ„์‚ฐ ๊ณผ์ •์—์„œ ์ปดํ“จํ„ฐ๋Š” ์ •ํ™•ํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๊ทผ์‚ฌ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต ์˜ค์ฐจ๋„ ์ฆ๊ฐ€ํ•œ๋‹ค.

 

sigmoid ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ชจ๋ธ ํ•™์Šต์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

 

 

๋‹ค์Œ์€ tanh ํ•จ์ˆ˜์ด๋‹ค.

sigmoid์˜ ํ•œ๊ณ„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋˜์—ˆ๋‹ค.

0์„ ๊ธฐ์ค€์œผ๋กœ ์ตœ๋Œ€ 1, ์ตœ์†Œ -1 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ–๋„๋ก ์ถœ๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ 2๋ฐฐ(sigmoid๋Š” -0.5 ~ 0.5) ๋Š˜๋ ธ๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ tanh๋„ x๊ฐ’์ด ํฌ๊ฑฐ๋‚˜ ์ž‘์•„์งˆ ์ˆ˜๋ก 0์œผ๋กœ ์ˆ˜๋ ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๊ฒฝ๋ง์ด Deepํ•ด์งˆ ์ˆ˜๋ก Gradient ๊ฐ’์ด ๋งค์šฐ ์ž‘์•„์ง€๋Š” ๊ฒƒ์€ ํ”ผํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. 

 

 

์ด ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ๊ฒƒ์ด ReLU ํ•จ์ˆ˜ ์ด๋‹ค.

์ž…๋ ฅ๊ฐ’์ด ์–‘์ˆ˜์ผ๊ฒฝ์šฐ ํ•ญ์ƒ ๋ฏธ๋ถ„๊ฐ’์€ 1์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠน๋ณ„ํ•œ ์—ฐ์‚ฐ์ด ํ•„์š” ์—†์–ด ๋‹จ์ˆœํžˆ ์ž„๊ณ„๊ฐ’์— ๋”ฐ๋ผ ์ถœ๋ ฅ๊ฐ’์ด ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ์†๋„๋„ ๋น ๋ฅด๋‹ค. 

 

ํ•˜์ง€๋งŒ ์ž…๋ ฅ๊ฐ’์ด ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ๋ฏธ๋ถ„๊ฐ’์ด ํ•ญ์ƒ 0์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ๊ฐ’์ด ์Œ์ˆ˜์ธ ๋‰ด๋Ÿฐ์€ ํšŒ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. 

์ด๋Ÿฌํ•œ ๋ฌด์ œ๋ฅผ Dying ReLU(์ฃฝ์–ด๊ฐ€๋Š” ReLU)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

Dying ReLU๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Leaky ReLU๊ฐ€ ์ œ์•ˆ๋˜์—ˆ๋‹ค.

 

์ž…๋ ฅ๊ฐ’์ด ์Œ์ˆ˜์ผ ๋•Œ ์ถœ๋ ฅ๊ฐ’์„ 0์ด ์•„๋‹Œ 0.001๊ณผ ๊ฐ™์€ ๋งค์šฐ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. 

max(ax,x)

 

 

a๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ 0.01, 0.001 ๊ฐ™์€ ์ž‘์€ ๊ฐ’์ด ์‚ฌ์šฉ๋œ๋‹ค.

a๋Š” 0์ด ์•„๋‹Œ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์Œ์ˆ˜๋ผ๋„ ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์ด ๋˜์ง€ ์•Š์•„ ๋‰ด๋Ÿฐ์ด ์ฃฝ๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Gradient Checking

Backpropagation์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Gradient Checking์ด๋ผ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด BP์˜ ๊ณผ์ •์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋จผ์ € ์‚ฐ์ˆ ์ ์œผ๋กœ ์–ด๋–ค ๊ทธ๋ž˜ํ”„์—์„œ f(θ)์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ๊ณต์‹์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•œ๋‹ค.

θ = 1 ์ด๊ณ  ฯต = 0.01์œผ๋กœ ๋‘”๋‹ค.

์ด ๋•Œ 1~1.01 ์‚ฌ์ด์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 0.99 ~ 1.01 ์‚ฌ์ด์˜ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ทผ์‚ฌ์น˜๊ฐ€ ๋” ์ž˜๋‚˜์˜จ๋‹ค.

๊ฐ’์„ ๊ตฌํ•˜๋ฉด 3.0001์ด ๋‚˜์˜จ๋‹ค. f์˜ ๋ฏธ๋ถ„์€ f'(θ) = 3θ^2์œผ๋กœ 1์—์„œ์˜ ๋ฏธ๋ถ„๊ฐ’์€ 3์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์ฐจ๋Š” 0.0001์ด๋‹ค.

๋ฐ˜๋ฉด 1~1.01๋กœ ๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด 3.0301์œผ๋กœ, ์˜ค์ฐจ๊ฐ€ 0.0301์˜ ์˜ค์ฐจ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

 

 

์ด์ œ Gradient Checking ์ ์šฉ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

  1. ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ ํ›„์— ์—ฐ๊ฒฐ์‹œ์ผœ์„œ big vector๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  2. dW, db๋ฅผ dθ๋กœ ๋งŒ๋“ค์–ด์„œ J(θ)์˜ ๊ธฐ์šธ๊ธฐ์™€ ๋น„๊ตํ•œ๋‹ค.

 

Gradient Checking ์‚ฌ์šฉ์‹œ ์ฃผ์˜ํ•ด์•ผํ•  ์ 

  • ๋ชจ๋“  i์— ๋Œ€ํ•˜์—ฌ ๊ธฐ์šธ๊ธฐ์˜ ๊ทผ์‚ฌ์น˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๋””๋ฒ„๊น…์‹œ์—๋งŒ ์‚ฌ์šฉ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด Gradient check์— ์‹คํŒจํ•˜๋ฉด, ๊ฐ’์ด ํฌ๊ฒŒ ๋‹ค๋ฅธ i๋ฅผ ์ฐพ์•„์„œ ์–ด๋Š layer์—์„œ ๋ฒ„๊ทธ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • Regularization ํ•ญ์ด ์žˆ๋‹ค๋ฉด dθ์—๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
  • dropout์€ unit์„ ์ž„์˜๋กœ ์ œ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— GC๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 0์— ๊ฐ€๊นŒ์šธ ๋•Œ GD๊ฐ€ ์ž˜ ๋™์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

Normalization.ipynb

Colaboratory notebook

colab.research.google.com

 

728x90
๋ฐ˜์‘ํ˜•

'AI > Coursera' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Coursera] 7. Hyperparameter tuning, Batch Normalization  (0) 2024.01.01
[Coursera] 6. Opitmization  (0) 2023.12.31
[Coursera] 4. Practical Aspects of Deep Learning  (0) 2023.12.27
[Coursera] 3. Gradient Descent  (0) 2023.12.27
[Coursera] 2. Logistic Regression  (0) 2023.12.17