[딥러닝] RNN #2

군자·2024년 6월 9일
0

딥러닝

목록 보기
8/9


앗! 머리를 쓰고 싶지 않다


📌 New types of RNN: LSTM (Long-short term memory)

LSTM(Long-Short Term Memory)는 기본 RNN의 단점을 극복하기 위해 제안된 새로운 유형의 RNN입니다.

  1. LSTM 소개:

    • 메모리를 여러 종류로 분리: LSTM은 메모리를 여러 타입으로 나누어 저장하고 관리합니다.
    • 기울기 소실 문제 해결: 1997년 Hochreiter와 Schmidhuber에 의해 제안된 LSTM은 RNN에서 발생하는 기울기 소실 문제를 해결합니다.
  2. LSTM의 구성 요소:

    • 숨겨진 상태 (hidden state, (ht)(h_t))셀 상태 (cell state, (Ct)(C_t)):
      • 각 상태는 길이가 (n)인 벡터입니다.
      • 셀 상태는 장기 정보를 저장합니다.
      • LSTM은 셀 상태에서 정보를 지우고, 쓰고, 읽을 수 있습니다.
  3. 정보 관리:

    • 3개의 게이트 (잊음 게이트, 입력 게이트, 업데이트 게이트)를 통해 어떤 정보를 지우고, 쓰고, 읽을지(erase, write, read) 결정합니다.
      • 잊음 게이트 (forget gate): 어떤 정보를 지울지 결정합니다.
      • 입력 게이트 (input gate): 어떤 새로운 정보를 셀 상태에 저장할지 결정합니다.
      • 업데이트 게이트 (update gate): 과거 정보와 현재 정보를 결합하여 셀 상태를 업데이트합니다.
    • 각 게이트는 길이가 (n)(n)인 벡터이며, 시간 단계마다 열리거나 닫히거나 중간 상태가 될 수 있습니다.
    • 게이트의 값은 현재 컨텍스트에 따라 동적으로 계산됩니다.

요약:

  • LSTM의 주요 개념:
    • LSTM은 긴 시퀀스 데이터를 효과적으로 처리할 수 있도록 설계되었습니다.
    • 기울기 소실 문제를 해결하기 위해 셀 상태를 도입하여 장기 정보를 보존합니다.
    • 잊음, 입력, 업데이트 게이트를 통해 정보를 효율적으로 관리합니다.

LSTM (Long-Short Term Memory) 셀 구조와 수식 설명

LSTM(Long-Short Term Memory)은 RNN의 확장으로, 기울기 소실 문제를 해결하기 위해 설계된 메모리 셀입니다. LSTM은 데이터를 효율적으로 저장하고 불필요한 정보를 제거하여 장기 의존성을 유지합니다.

주요 구성 요소와 수식 설명:


1. Forget Gate (잊음 게이트, (ft)(f_t)):

  • 이전 셀 상태 (Ct1)(C_{t-1})에서 어떤 정보를 잊을지 결정합니다.
  • 수식: (ft=σ(Wfxt+Vfht1+bf))( f_t = \sigma(W_f x_t + V_f h_{t-1} + b_f) )
  • 여기서, (σ)(\sigma)는 시그모이드 함수로, 출력 값이 [0, 1] 사이입니다. (Wf)(W_f), (Vf)(V_f)는 가중치, (bf)(b_f)는 바이어스입니다.
  1. Input Gate (입력 게이트, (it)(i_t)):

    • 새로운 정보를 셀 상태에 추가할지 결정합니다.
    • 수식: (it=σ(Wixt+Viht1+bi))( i_t = \sigma(W_i x_t + V_i h_{t-1} + b_i) )
    • (Ct~)(\tilde{C_t}): 새로운 후보 메모리 셀 상태
      • 수식: (Ct~=tanh(Wgxt+Vght1+bg))( \tilde{C_t} = \tanh(W_g x_t + V_g h_{t-1} + b_g) )
    • (Wi)(W_i), (Vi)(V_i), (bi)(b_i), (Wg)(W_g), (Vg)(V_g), (bg)(b_g)는 가중치와 바이어스입니다.
  2. Cell State (셀 상태, (Ct)(C_t)):

    • 셀 상태는 이전 셀 상태 (Ct1)(C_{t-1})와 새로운 후보 메모리 셀 상태 (Ct~)(\tilde{C_t})의 조합으로 업데이트됩니다.
    • 수식: (Ct=ftCt1+itCt~)( C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C_t} )
    • 여기서, ()(\odot)는 Hadamard Product(요소별 곱셈)입니다.
  3. Output Gate (출력 게이트, (ot)(o_t)):

    • 현재 셀 상태로부터 어떤 정보를 출력할지 결정합니다.
    • 수식: (ot=σ(Woxt+Voht1+bo))( o_t = \sigma(W_o x_t + V_o h_{t-1} + b_o) )
    • 최종 출력 (ht)(h_t):
      • 수식: (ht=ottanh(Ct))( h_t = o_t \odot \tanh(C_t) )
    • (Wo)(W_o), (Vo)(V_o), (bo)(b_o)는 가중치와 바이어스입니다.

LSTM의 동작 과정:

  1. 입력 (xt)(x_t)와 이전 숨겨진 상태 (ht1)(h_{t-1})이 주어지면 잊음 게이트 (ft)(f_t)가 어떤 정보를 잊을지 결정합니다.
  2. 입력 게이트 (it)(i_t)가 어떤 새로운 정보를 셀 상태에 추가할지 결정하고, 새로운 후보 셀 상태 (Ct~)(\tilde{C_t})를 계산합니다.
  3. 셀 상태 (Ct)(C_t)는 이전 셀 상태 (Ct1)(C_{t-1})과 새로운 후보 셀 상태 (Ct~)(\tilde{C_t})의 조합으로 업데이트됩니다.
  4. 출력 게이트 (ot)(o_t)가 현재 셀 상태로부터 어떤 정보를 출력할지 결정하고, 최종 출력 (ht)(h_t)를 계산합니다.

Forget Gate(망각 게이트) 설명:

  1. 기능:

    • 망각 게이트는 셀 상태에서 어떤 정보를 버릴지를 결정합니다.
    • 즉, 이전 상태에서의 정보를 현재 상태에서 얼마나 유지할지 또는 잊을지를 결정합니다.
  2. 활성화 함수:

    • 시그모이드 함수(sigmoid)가 활성화 함수로 사용됩니다.
    • 시그모이드 함수는 출력 값을 0과 1 사이로 만듭니다.
  3. 출력 값 해석:

    • Output 0: 모든 이전 값을 잊어버리라는 의미입니다. 시그모이드 함수의 출력이 0에 가까울 때 해당됩니다.
    • Output 1: 모든 이전 값을 유지하라는 의미입니다. 시그모이드 함수의 출력이 1에 가까울 때 해당됩니다.

Input Gate(입력 게이트) 설명:


1. 기능:

  • 입력 게이트는 셀 상태에 어떤 새로운 정보를 저장할지를 결정합니다.
  • 현재 입력된 정보를 얼마나 셀 상태에 추가할지 결정하는 역할을 합니다.
  1. 활성화 함수:
    • 시그모이드 함수(sigmoid)와 하이퍼볼릭 탄젠트 함수(tanh)가 사용됩니다.
    • 시그모이드 함수는 출력 값을 0과 1 사이로 만들고, 하이퍼볼릭 탄젠트 함수(tanh)는 출력 값을 -1과 1 사이로 만듭니다.
  2. 역할:
    • 입력 게이트는 얼마나 많은 새로운 정보를 현재 셀 상태에 추가할지를 결정합니다.
    • 망각 게이트와 함께 입력 게이트는 이전 셀 상태 값을 얼마나 버릴지, 그리고 현재 입력과 이전 출력에서 얻은 값을 셀 상태에 얼마나 반영할지를 결정합니다.

Update Cell in LSTM (셀 업데이트)


LSTM(Long Short-Term Memory) 네트워크의 Update Cell(셀 업데이트)은 셀 상태를 업데이트하는 과정입니다. 이 과정은 입력 게이트와 망각 게이트의 작동을 통해 수행됩니다.

주요 기능:

  1. 업데이트 양 결정:
    • 셀 상태 업데이트는 얼마만큼 업데이트할지를 결정하는 과정입니다. 이는 입력 게이트와 망각 게이트의 작동을 통해 이루어집니다.
  2. 망각 게이트와 입력 게이트의 역할:
    • 망각 게이트는 이전 셀 상태의 어떤 정보를 잊을지를 결정합니다.
    • 입력 게이트는 새로운 정보를 얼마나 현재 셀 상태에 추가할지를 결정합니다.
  3. 셀 상태 갱신:
    • 셀 상태 (Ct)( C_t )는 이전 셀 상태 (Ct1)( C_{t-1} )와 새로운 정보 (Ct~)( \tilde{C_t} )를 결합하여 갱신됩니다.
    • 망각 게이트의 출력 (ft)( f_t )는 이전 셀 상태의 정보 중 얼마나 잊을지를 결정하고, 입력 게이트의 출력 (it)( i_t )는 새로운 정보를 얼마나 추가할지를 결정합니다.

Output Gate in LSTM (출력 게이트)


LSTM(Long Short-Term Memory) 네트워크의 Output Gate(출력 게이트)는 셀 상태를 바탕으로 최종 출력을 결정하는 역할을 합니다. 출력 게이트는 셀 상태에서 어떤 정보를 출력할지를 결정하여, 이를 필터링된 형태로 만듭니다.

주요 기능:

  1. 출력 결정:

    • 출력 게이트는 셀 상태 (Ct)( C_t )에 기반하여 최종 출력 (ht)( h_t )를 결정합니다. 이 출력은 필터링된 형태로, 셀 상태의 중요한 정보만 포함됩니다.
  2. 필터링 과정:

    • 셀 상태는 (tanh)( tanh ) 함수에 의해 활성화된 후, 출력 게이트의 값을 통해 필터링됩니다.
    • 출력 게이트 (ot)( o_t )는 현재 입력 (xt)( x_t )와 이전 출력 (ht1)( h_{t-1} )를 바탕으로 계산됩니다.
    • 필터링된 출력 (ht)( h_t )(ot)( o_t )(tanh(Ct))( tanh(C_t) )의 곱으로 나타납니다.
  3. 출력 값 결정:

    • (ot)( o_t )의 값이 1에 가까울수록 해당 셀 상태 정보가 그대로 출력에 반영됩니다.
    • (ot)( o_t )의 값이 0에 가까울수록 해당 셀 상태 정보가 출력에서 제외됩니다.

📌 GRU (Gated Recurrent Unit)

GRU는 LSTM보다 단순화된 형태의 RNN 구조입니다. LSTM과 유사한 성능을 가지면서도 계산량이 적고, 구현이 더 간단합니다. GRU는 두 개의 주요 게이트로 구성됩니다: 업데이트 게이트리셋 게이트.

주요 특징 및 구성 요소:

  1. 업데이트 게이트 (zt)( z_t ):

    • LSTM의 포겟 게이트와 입력 게이트를 합친 역할을 합니다.
    • 업데이트 게이트는 현재 상태를 얼마나 업데이트할지를 결정합니다. 즉, 현재 상태 (ht)( h_t )가 이전 상태 (ht1)( h_{t-1} )와 새 입력 (xt)( x_t )에서 얼마나 영향을 받을지를 조절합니다.
  2. 리셋 게이트 (rt)( r_t ):

    • 이전 상태를 얼마나 리셋할지를 결정합니다. 즉, 리셋 게이트는 현재 입력 (xt)( x_t )와 이전 상태 (ht1)( h_{t-1} )가 얼마나 섞일지를 조절합니다.
    • 리셋 게이트 값이 0에 가까울수록 이전 상태를 무시하고 새 입력에 더 의존하게 됩니다.

GRU의 작동 방식:

  1. 리셋 게이트:

    • 리셋 게이트 (rt)( r_t )는 현재 입력 (xt)( x_t )와 이전 상태 (ht1)( h_{t-1} )를 이용하여 계산됩니다.
    • 리셋 게이트 값에 따라 이전 상태가 얼마나 반영될지를 결정합니다.
  2. 잠재 상태:

    • 잠재 상태 (h~t)( \tilde{h}_t )는 리셋 게이트 (rt)( r_t )에 의해 조정된 이전 상태 (ht1)( h_{t-1} )와 현재 입력 (xt)( x_t )를 이용해 계산됩니다.
  3. 업데이트 게이트:

    • 업데이트 게이트 (zt)( z_t )는 현재 입력 (xt)( x_t )와 이전 상태 (ht1)( h_{t-1} )를 이용하여 계산됩니다.
    • 업데이트 게이트는 새로운 상태 (ht)( h_t )가 이전 상태 (ht1)( h_{t-1} )와 잠재 상태 (h~t)( \tilde{h}_t ) 사이에서 어떻게 조합될지를 결정합니다.
  4. 최종 상태:

    • 최종 상태 (ht)( h_t )는 업데이트 게이트 (zt)( z_t )에 따라 이전 상태와 잠재 상태의 가중합으로 결정됩니다. 업데이트 게이트 값이 1에 가까울수록 새로운 입력에 더 의존하게 되고, 0에 가까울수록 이전 상태를 유지합니다.

GRU는 이러한 구조 덕분에 긴 시퀀스에서도 효과적으로 학습할 수 있으며, LSTM에 비해 계산 효율성이 높은 장점이 있습니다.

profile
헬로 아이엠군자. 굿투씨유

0개의 댓글