Artificial Intelligence/Studying

[Hands-on] Ch15 RNNκ³Ό CNN을 μ‚¬μš©ν•΄ μ‹œν€€μŠ€ μ²˜λ¦¬ν•˜κΈ°

geum 2021. 8. 18. 19:18

 

15.1 μˆœν™˜ λ‰΄λŸ°κ³Ό μˆœν™˜ μΈ΅

좜처: https://wikidocs.net/22886

 

β—½ RNN은 각 νƒ€μž„ μŠ€ν… tλ§ˆλ‹€ X(t)와 이전 νƒ€μž„ μŠ€ν…μ˜ 좜λ ₯인 Y(t-1)을 μž…λ ₯으둜 λ°›μŒ

β—½ 첫번째 νƒ€μž„ μŠ€ν…μ€ 이전 좜λ ₯이 μ—†κΈ° λ•Œλ¬Έμ— 보톡 0으둜 μ„€μ •

β—½ μ‹œκ°„μ„ μΆ•μœΌλ‘œ λ‚˜νƒ€λ‚Ό 경우 μ‹œκ°„μ— 따라 λ„€νŠΈμ›Œν¬λ₯Ό νŽΌμ³€λ‹€κ³  ν‘œν˜„

 

ν•˜λ‚˜μ˜ μƒ˜ν”Œμ— λŒ€ν•œ μˆœν™˜ 측의 좜λ ₯

 

λ―Έλ‹ˆλ°°μΉ˜μ— μžˆλŠ” 전체 μƒ˜ν”Œμ— λŒ€ν•œ μˆœν™˜ λ‰΄λŸ° 측의 좜λ ₯

 

15.1.1 λ©”λͺ¨λ¦¬ μ…€

β—½ λ©”λͺ¨λ¦¬ μ…€(λ˜λŠ” μ…€) : νƒ€μž„ μŠ€ν…μ— 걸쳐 μ–΄λ–€ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜λŠ” μ‹ κ²½λ§μ˜ ꡬ성 μš”μ†Œ

β—½ h(t) : νƒ€μž„ μŠ€ν… tμ—μ„œμ˜ μ…€μ˜ μƒνƒœ. κ·Έ νƒ€μž„ μŠ€ν…μ˜ μž…λ ₯κ³Ό 이전 νƒ€μž„ μŠ€ν…μ˜ μƒνƒœμ— λŒ€ν•œ ν•¨μˆ˜

 

15.1.2 μž…λ ₯κ³Ό 좜λ ₯ μ‹œν€€μŠ€

1) μ‹œν€€μŠ€-투-μ‹œν€€μŠ€ λ„€νŠΈμ›Œν¬ : ν•˜λ‚˜μ˜ μž…λ ₯ μ‹œν€€μŠ€, ν•˜λ‚˜μ˜ 좜λ ₯ μ‹œν€€μŠ€(λ„€νŠΈμ›Œν¬ μ „μ²΄λ‘œ 보면 μ—¬λŸ¬ 개의 좜λ ₯)

2) μ‹œν€€μŠ€-투-벑터 λ„€νŠΈμ›Œν¬ : μ—¬λŸ¬ 개의 μž…λ ₯ μ‹œν€€μŠ€, ν•˜λ‚˜μ˜ μ΅œμ’…μ μΈ 좜λ ₯ μ‹œν€€μŠ€(쀑간 κ³Όμ •μ˜ 좜λ ₯듀은 λ¬΄μ‹œλ¨)

3) 벑터-투-μ‹œν€€μŠ€ λ„€νŠΈμ›Œν¬ : 각 νƒ€μž„ μŠ€ν…μ—μ„œ ν•˜λ‚˜μ˜ μž…λ ₯ 벑터λ₯Ό λ°˜λ³΅ν•΄μ„œ λ„€νŠΈμ›Œν¬μ— μ£Όμž…, ν•˜λ‚˜μ˜ 좜λ ₯ μ‹œν€€μŠ€

 

 

15.3 μ‹œκ³„μ—΄ μ˜ˆμΈ‘ν•˜κΈ°

β—½ μ‹œκ³„μ—΄ : νƒ€μž„ μŠ€ν…λ§ˆλ‹€ ν•˜λ‚˜ μ΄μƒμ˜ 값을 가진 μ‹œν€€μŠ€

 

1) λ‹¨λ³€λŸ‰ μ‹œκ³„μ—΄ : νƒ€μž„ μŠ€ν…λ§ˆλ‹€ ν•˜λ‚˜μ˜ 값을 가짐

예) μ›Ή μ‚¬μ΄νŠΈμ˜ μ‹œκ°„λ‹Ή μ ‘μ†μž 수, λ„μ‹œμ˜ λ‚ μ§œλ³„ μ˜¨λ„

 

2) λ‹€λ³€λŸ‰ μ‹œκ³„μ—΄ : νƒ€μž„ μŠ€ν…λ§ˆλ‹€ μ—¬λŸ¬ 값을 가짐

 

 

15.4 κΈ΄ μ‹œν€€μŠ€ 닀루기

β—½ κΈ΄ μ‹œν€€μŠ€λ‘œ RNN을 ν›ˆλ ¨ν•˜λ €λ©΄ λ§Žμ€ νƒ€μž„ μŠ€ν…μ— 걸쳐 μ‹€ν–‰ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λ„€νŠΈμ›Œν¬κ°€ 맀우 κΉŠμ–΄μ Έ 일반적인 심측 μ‹ κ²½λ§μ²˜λŸΌ κ·Έλž˜λ””μ–ΈνŠΈ μ†Œμ‹€ λ¬Έμ œλ‚˜ 폭주 λ¬Έμ œκ°€ λ°œμƒν•  수 있음

 

15.4.1 λΆˆμ•ˆμ •ν•œ κ·Έλž˜λ””μ–ΈνŠΈ

β—½ 쒋은 κ°€μ€‘μΉ˜ μ΄ˆκΈ°ν™”, λΉ λ₯Έ μ˜΅ν‹°λ§ˆμ΄μ €, λ“œλ‘­μ•„μ›ƒ 등을 μ‚¬μš©ν•΄ κ·Έλž˜λ””μ–ΈνŠΈ 문제 ν•΄κ²° κ°€λŠ₯

β—½ ν•˜μ§€λ§Œ ReLU와 같이 μˆ˜λ ΄ν•˜μ§€ μ•ŠλŠ” ν™œμ„±ν™” ν•¨μˆ˜λŠ” RNN의 ν›ˆλ ¨μ„ 더 λΆˆμ•ˆμ •ν•˜κ²Œ λ§Œλ“€ 수 있음 → 좜λ ₯ 폭주 κ°€λŠ₯성이 μ‘΄μž¬ν•¨

β—½ μœ„μ™€ 같은 μ΄μœ μ—μ„œ RNN의 기본적인 ν™œμ„±ν™” ν•¨μˆ˜λ‘œ tanhλ₯Ό μ‚¬μš©ν•¨

β—½ κ·Έλž˜λ””μ–ΈνŠΈ μžμ²΄κ°€ 폭주할 수 있기 λ•Œλ¬Έμ— ν›ˆλ ¨μ΄ λΆˆμ•ˆμ •ν•˜λ‹€κ³  λŠλ‚„ 경우 κ·Έλž˜λ””μ–ΈνŠΈ 클리핑을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŒ

 

15.4.2 단기 κΈ°μ–΅ 문제

β—½ RNN을 κ±°μΉ˜λ©΄μ„œ 데이터가 λ³€ν™˜λ˜κΈ° λ•Œλ¬Έμ— 맀 ν›ˆλ ¨ μŠ€ν… ν›„ 일뢀 정보가 사라짐

β—½ μ‹œκ°„μ΄ κ½€ μ§€λ‚˜λ©΄ RNN이 μž…λ ₯의 흔적을 가지지 λͺ»ν•˜λŠ” 문제 λ°œμƒ

 

LSTM μ…€

β—½ keras → SimpleRNN λŒ€μ‹  LSTM or keras.layers.RNN 측에 LSTMCell λ§€κ°œλ³€μˆ˜ μΆ”κ°€

β—½ μ‚­μ œ 게이트 : μž₯κΈ° μƒνƒœμ˜ μ–΄λŠ 뢀뢄이 μ‚­μ œλ˜μ–΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•΄ μ œμ–΄

β—½ μž…λ ₯ 게이트 : μ–΄λŠ 뢀뢄이 μž₯κΈ° μƒνƒœμ— 더해져야 ν•˜λŠ”μ§€μ— λŒ€ν•΄ μ œμ–΄

β—½ 좜λ ₯ 게이트 : μž₯κΈ° μƒνƒœμ˜ μ–΄λ–€ 뢀뢄을 μ½μ–΄μ„œ 이 νƒ€μž„ μŠ€ν…μœΌ 단기 μƒνƒœμ™€ 좜λ ₯으둜 내보내야 ν•˜λŠ”μ§€μ— λŒ€ν•΄ μ œμ–΄

 

핍홀 μ—°κ²°

β—½ μ‚­μ œ κ²Œμ΄νŠΈμ™€ μž…λ ₯ 게이트의 μ œμ–΄κΈ°μ— μž₯κΈ° κΈ°μ–΅ μƒνƒœκ°€ μž…λ ₯으둜 μΆ”κ°€λ˜λŠ” LSTM λ³€ν˜• μœ ν˜•

 

GRU(Gate Recurrent Unit) μ…€

β—½ 게이트 μˆœν™˜ μœ λ‹›

β—½ LSTM μ…€μ˜ κ°„μ†Œν™”λœ 버전

 

GRU μ…€μ˜ λ³€ν™” λ‚΄μš©

β‘  두 μƒνƒœ 벑터가 ν•˜λ‚˜μ˜ λ²‘ν„°λ‘œ 합쳐짐

β‘‘ ν•˜λ‚˜μ˜ 게이트 μ œμ–΄κΈ°κ°€ μ‚­μ œ κ²Œμ΄νŠΈμ™€ μž…λ ₯ 게이트λ₯Ό λͺ¨λ‘ μ œμ–΄

β‘’ 전체 μƒνƒœ 벑터가 맀 νƒ€μž„ μŠ€ν…λ§ˆλ‹€ 좜λ ₯되기 λ•Œλ¬Έμ— 좜λ ₯ κ²Œμ΄νŠΈκ°€ μ—†μŒ