Computer πŸ’»/Deep Learning

LSTM(Long Short-Term Memory, μž₯단기 λ©”λͺ¨λ¦¬)

yeon42 2022. 1. 31. 14:01
728x90
Reference

 

 

 

은닉 μƒνƒœ(hidden state)

: λ©”λͺ¨λ¦¬ 셀이 좜λ ₯μΈ΅ λ°©ν–₯ or λ‹€μŒ μ‹œμ μΈ t+1의 μžμ‹ μ—κ²Œ λ³΄λ‚΄λŠ” κ°’

 

즉, tμ‹œμ μ˜ λ©”λͺ¨λ¦¬ 셀은 t-1μ‹œμ μ˜ λ©”λͺ¨λ¦¬ 셀이 보낸 은닉 μƒνƒœμ˜ 값을 tμ‹œμ μ˜ 은닉 μƒνƒœ 계산을 μœ„ν•œ μž…λ ₯κ°’μœΌλ‘œ μ‚¬μš©!!

 

 

바닐라 RNN

: κ°€μž₯ 기본적인 λ§›μ˜ μ•„μ΄μŠ€ν¬λ¦Όμ΄ 바닐라맛 μ•„μ΄μŠ€ν¬λ¦ΌμΈ κ²ƒμ²˜λŸΌ, RNNμ—μ„œλ„ κ°€μž₯ λ‹¨μˆœν•œ ν˜•νƒœμ˜ RNN을 바닐라 RNN (Vanilla RNN, Simple RNN)이라고 ν•œλ‹€.

 

바닐라 RNN은 길이가 짧은 μ‹œν€€μŠ€(sequence)μ—μ„œλ§Œ 효과λ₯Ό 보이며, 좜λ ₯ κ²°κ³Όκ°€ μ΄μ „μ˜ 계산 결과에 μ˜μ‘΄ν•œλ‹€λŠ” 단점이 μžˆλ‹€.

이처럼 바닐라 RNN의 μ‹œμ (time step)이 κΈΈμ–΄μ§ˆμˆ˜λ‘ μ•žμ˜ 정보가 λ’€λ‘œ μΆ©λΆ„νžˆ μ „λ‹¬λ˜μ§€ λͺ»ν•˜λŠ” ν˜„μƒμ΄ λ°œμƒν•œλ‹€.

 

 

μœ„ κ·Έλ¦Όμ—μ„œ 색이 μ˜…μ–΄μ§€λŠ” 것은 μ‹œκ°„μ΄ μ§€λ‚ μˆ˜λ‘ μ •λ³΄λŸ‰μ΄ μ†μ‹€λ˜μ–΄κ°€λŠ” 과정을 ν‘œν˜„ν•œλ‹€.

λ§Œμ•½ κ°€μž₯ μ€‘μš”ν•œ 정보가 맨 μ•žμ— μ‘΄μž¬ν•˜κ²Œ 될 λ•Œ, RNN이 μΆ©λΆ„ν•œ κΈ°μ–΅λ ₯을 κ°€μ§€κ³  μžˆμ§€ μ•ŠλŠ”λ‹€λ©΄ λ‹€μŒ 단어λ₯Ό μ—‰λš±ν•˜κ²Œ μ˜ˆμΈ‘ν•  것이닀.

이λ₯Ό μž₯κΈ° μ˜μ‘΄μ„± 문제(the problem of Long-Term Dependencies)라고 ν•œλ‹€.

 

 

바닐라 RNN λ‚΄λΆ€

μœ„ 그림은 바닐라 RNN의 λ‚΄λΆ€ ꡬ쑰이며, 편ν–₯ bλ₯Ό μƒλž΅ν•œ 그림이닀.

바닐라 RNN은 xt와 ht-1μ΄λΌλŠ” 두 개의 μž…λ ₯이 각각의 κ°€μ€‘μΉ˜μ™€ κ³±ν•΄μ Έ λ©”λͺ¨λ¦¬ μ…€μ˜ μž…λ ₯이 λœλ‹€.

이λ₯Ό tanhν•¨μˆ˜μ˜ μž…λ ₯으둜 μ‚¬μš©ν•΄ 이 값은 μ€λ‹‰μΈ΅μ˜ 좜λ ₯인 은닉 μƒνƒœκ°€ λœλ‹€.

 

 

LSTM λ‚΄λΆ€ ꡬ쑰

 

전톡적인 RNN의 단점을 λ³΄μ™„ν•œ RNN의 일쒅을 LSTM이라 ν•˜λ‚Ÿ.

LSTM은 μ€λ‹‰μΈ΅μ˜ λ©”λͺ¨λ¦¬ 셀에 μž…λ ₯ 게이트, 망각 게이트, 좜λ ₯ 게이트λ₯Ό μΆ”κ°€ν•˜μ—¬ λΆˆν•„μš”ν•œ 기얡을 μ§€μš°κ³ , κΈ°μ–΅ν•΄μ•Ό ν•  것듀을 μ •ν•œλ‹€.

μš”μ•½ν•˜λ©΄, LSTM은 은닉 μƒνƒœ(hidden state)λ₯Ό κ³„μ‚°ν•˜λŠ” 식이 전톡적 RNN보닀 λ³΅μž‘ν•΄μ‘ŒμœΌλ©°, μ…€ μƒνƒœ(cell state)λΌλŠ” 값을 μΆ”κ°€ν–ˆλ‹€.

μœ„ κ·Έλ¦Όμ—μ„œ tμ‹œμ μ˜ μ…€ μƒνƒœλ₯Ό Ct라 ν‘œν˜„ν•˜κ³  있고, LSTM은 RNN에 λΉ„ν•΄ κΈ΄ μ‹œν€€μŠ€μ˜ μž…λ ₯을 μ²˜λ¦¬ν•˜λŠ”λ° νƒμ›”ν•œ μ„±λŠ₯을 보인닀.

 

 

μ…€ μƒνƒœ(cell state)λŠ” μœ„μ˜ κ·Έλ¦Όμ—μ„œ μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ κ°€λŠ” ꡡ은 선이닀.

μ…€ μƒνƒœ λ˜ν•œ 은닉 μƒνƒœμ²˜λŸΌ 이전 μ‹œμ μ˜ μ…€ μƒνƒœκ°€ λ‹€μŒ μ‹œμ μ˜ μ…€ μƒνƒœλ₯Ό κ΅¬ν•˜κΈ° μœ„ν•œ μž…λ ₯μœΌλ‘œμ„œ μ‚¬μš©λœλ‹€.

 

은닉 μƒνƒœμ™€ μ…€ μƒνƒœμ˜ 값을 κ΅¬ν•˜κΈ° μœ„ν•΄ μƒˆλ‘œ μΆ”κ°€λœ 3개의 게이트λ₯Ό μ‚¬μš©ν•˜κ²Œ λ˜λŠ”λ°,

각각 μ‚­μ œ 게이트, μž…λ ₯ 게이트, 좜λ ₯ 게이트라 ν•˜λ©° 이 3개의 κ²Œμ΄νŠΈμ— κ³΅ν†΅μ μœΌλ‘œ μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€.

μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό ν†΅κ³Όν•˜λ©΄ 0-1 μ‚¬μ΄μ˜ 값이 λ‚˜μ˜€κ²Œ λ˜λ―€λ‘œ 이 값듀을 톡해 게이트λ₯Ό μ‘°μ ˆν•œλ‹€.

σ

 

 

(1) μž…λ ₯ 게이트

 

 

μž…λ ₯ κ²Œμ΄νŠΈλŠ” ν˜„μž¬ 정보λ₯Ό κΈ°μ–΅ν•˜κΈ° μœ„ν•œ 게이트.

ν˜„μž¬ μ‹œμ  t의 xκ°’κ³Ό μž…λ ₯ 게이트둜 μ΄μ–΄μ§€λŠ” κ°€μ€‘μΉ˜ Wxiλ₯Ό κ³±ν•œ κ°’κ³Ό / 이전 μ‹œμ μ˜ t-1 μ‹œμ μ˜ 은닉 μƒνƒœκ°€ μž…λ ₯ 게이트둜 μ΄μ–΄μ§€λŠ” κ°€μ€‘μΉ˜ Whiλ₯Ό κ³±ν•œ 값을 λ”ν•˜μ—¬ / μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό μ§€λ‚œλ‹€. 이λ₯Ό it라 ν•œλ‹€.

 

ν˜„μž¬ μ‹œμ  t의 xκ°’κ³Ό μž…λ ₯ 게이트둜 μ΄μ–΄μ§€λŠ” κ°€μ€‘μΉ˜ Wxgλ₯Ό κ³±ν•œ κ°’κ³Ό / 이전 μ‹œμ  t-1의 은닉 μƒνƒœκ°€ μž…λ ₯ 게이트둜 μ΄μ–΄μ§€λŠ” κ°€μ€‘μΉ˜ Whgλ₯Ό κ³±ν•œ 값을 λ”ν•˜μ—¬ / ν•˜μ΄νΌλ³Όλ¦­νƒ„μ  νŠΈ ν•¨μˆ˜λ₯Ό μ§€λ‚œλ‹€. 이λ₯Ό gt라 ν•œλ‹€.

 

μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό μ§€λ‚˜ 0-1 μ‚¬μ΄μ˜ 값을 κ°€μ§€λŠ” it와 ν•˜μ΄νΌλ³Όλ¦­νƒ„μ  νŠΈ ν•¨μˆ˜λ₯Ό μ§€λ‚˜ -1~1 μ‚¬μ΄μ˜ 값을 κ°€μ§€λŠ” gt.

이 두 값을 κ°€μ§€κ³  μ΄λ²ˆμ— μ„ νƒγ„±λœ κΈ°μ–΅ν•  μ •λ³΄μ˜ 양을 μ •ν•˜λŠ”λ°, ꡬ체적으둜 μ–΄λ–»κ²Œ κ²°μ •ν• μ§€λŠ” μ•„λž˜μ—μ„œ 배우게 될 μ…€ μƒνƒœ μˆ˜μ‹μ„ μ°Έκ³ ν•˜μž.

 

 

(2) μ‚­μ œ 게이트

 

 

μ‚­μ œ κ²Œμ΄νŠΈλŠ” 기얡을 μ‚­μ œν•˜κΈ° μœ„ν•œ 게이트.

ν˜„μž¬ μ‹œμ  t의 xκ°’κ³Ό 이전 μ‹œμ  t-1의 은닉 μƒνƒœκ°€ μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό μ§€λ‚˜κ²Œ λœλ‹€.

μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό μ§€λ‚˜λ©΄ 0-1 μ‚¬μ΄μ˜ 값이 λ‚˜μ˜€λŠ”λ°, 이 값이 κ³§ μ‚­μ œ 과정을 거친 μ •λ³΄μ˜ 양이닀.

0에 κ°€κΉŒμšΈμˆ˜λ‘ 정보가 많이 μ‚­μ œλœ 것, 1에 κ°€κΉŒμšΈμˆ˜λ‘ 정보λ₯Ό μ˜¨μ „νžˆ κΈ°μ–΅ν•œ 것.

이λ₯Ό 톡해 μ…€ μƒνƒœλ₯Ό κ΅¬ν•˜λŠ”λ° μžμ„Έν•œ 건 μ•„λž˜μ— ~

 

 

(3) μ…€ μƒνƒœ

 

μ…€ μƒνƒœ Ctλ₯Ό κ΅¬ν•˜λŠ” 방법에 λŒ€ν•΄ λ°°μ›Œλ³΄μž. μ‚­μ œ κ²Œμ΄νŠΈμ—μ„œ 일뢀 기얡을 μžƒμ€ μƒνƒœλ‹€.

 

μž…λ ₯ κ²Œμ΄νŠΈμ—μ„œ κ΅¬ν•œ it와 gt에 λŒ€ν•΄ μ›μ†Œλ³„ 곱을 μ§„ν–‰ν•œλ‹€. (크기가 같은 두 행렬이 μžˆμ„ λ•Œ, 같은 μœ„μΉ˜μ˜ 성뢄끼리 κ³±ν•˜λŠ” 것)

이것이 μ΄λ²ˆμ— μ„ νƒλœ κΈ°μ–΅ν•  값이닀.

 

μž…λ ₯ κ²Œμ΄νŠΈμ—μ„œ μ„ νƒλœ 기얡을 μ‚­μ œ 게이트의 결괏값(ft)κ³Ό λ”ν•œλ‹€.

이 값을 ν˜„μž¬ μ‹œμ  t의 μ…€ μƒνƒœλΌ 함, 이 값은 λ‹€μŒ t+1 μ‹œμ μ˜ LSTM μ…€λ‘œ λ„˜κ²¨μ§„λ‹€.

 

μ‚­μ œ 게이트의 좜λ ₯값인 ftκ°€ 0이라면, 이전 μ‹œμ μ˜ μ…€ μƒνƒœμ˜ 값인 Ct-1은 ν˜„μž¬ μ‹œμ μ˜ μ…€ μƒνƒœμ˜ 값을 κ²°μ •ν•˜κΈ° μœ„ν•œ 영ν–₯λ ₯이 0이 λ˜λ©΄μ„œ, 였직 μž…λ ₯ 게이트의 결과만이 ν˜„μž¬ μ‹œμ μ˜ μ…€ μƒνƒœμ˜ κ°’ Ctλ₯Ό κ²°μ •ν•  수 μžˆλ‹€.

(ft와 Ct-1이 κ³±ν•΄μ§€λ‹ˆ 영ν–₯λ ₯이 0μ΄λΌλŠ” 뜻!)

μ΄λŠ” μ‚­μ œ κ²Œμ΄νŠΈκ°€ μ™„μ „νžˆ λ‹«νžˆκ³  μž…λ ₯ 게이트λ₯Ό μ—° μƒνƒœλ₯Ό 의미.

 

λ°˜λŒ€λ‘œ μž…λ ₯ 게이트의 it값을 0이라고 ν•œλ‹€λ©΄, ν˜„μž¬ μ‹œμ μ˜ μ…€ μƒνƒœμ˜ κ°’ CtλŠ” 였직 이전 μ‹œμ μ˜ μ…€ μƒνƒœμ˜ κ°’ Ct-1μ—λ§Œ μ˜μ‘΄ν•˜κ²Œ λœλ‹€.

μ΄λŠ” μž…λ ₯ 게이트λ₯Ό μ™„μ „νžˆ λ‹«κ³  μ‚­μ œ 게이트만 μ—° μƒνƒœλ₯Ό 의미.

 

결과적으둜 μ‚­μ œ κ²Œμ΄νŠΈλŠ” 이전 μ‹œμ μ˜ μž…λ ₯을 μ–Όλ§ˆλ‚˜ λ°˜μ˜ν• μ§€λ₯Ό μ˜λ―Έν•˜κ³ , μž…λ ₯ κ²Œμ΄νŠΈλŠ” ν˜„μž¬ μ‹œμ μ˜ μž…λ ₯을 μ–Όλ§ˆλ‚˜ λ°˜μ˜ν• μ§€λ₯Ό μ˜λ―Έν•œλ‹€.

 

 

(4) 좜λ ₯ κ²Œμ΄νŠΈμ™€ 은닉 μƒνƒœ

 

 

좜λ ₯ κ²Œμ΄νŠΈλŠ” ν˜„μž¬ μ‹œμ  t의 xκ°’κ³Ό 이전 μ‹œμ  t-1의 은닉 μƒνƒœκ°€ μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜λ₯Ό μ§€λ‚œ κ°’.

ν•΄λ‹Ή 값은 ν˜„μž¬ μ‹œμ  t의 은닉 μƒνƒœλ₯Ό κ²°μ •ν•˜λŠ” 일에 μ“°μ΄κ²Œ λœλ‹€.

μ…€ μƒνƒœμ˜ 값이 tanh ν•¨μˆ˜λ₯Ό μ§€λ‚˜ -1~1 μ‚¬μ΄μ˜ 값이 되고, ν•΄λ‹Ή 값은 좜λ ₯ 게이트의 κ°’κ³Ό μ—°μ‚°λ˜λ©°, 값이 κ±ΈλŸ¬μ§€λŠ” νš¨κ³Όκ°€ λ°œμƒν•΄ 은닉 μƒνƒœκ°€ λœλ‹€. 은닉 μƒνƒœμ˜ 값은 λ˜ν•œ 좜λ ₯μΈ΅μœΌλ‘œλ„ ν–₯ν•œλ‹€.