본문 바로가기

AI/대학원

RNN 의 Parameter Sharing

Parameter Sharing in RNN

1. Generalize to sequence lengths not seen during training

  • 의미:
    • RNN은 고정된 길이의 입력 시퀀스에만 작동하지 않습니다. 훈련 시 보지 못했던 다른 길이의 시퀀스에도 일반화가 가능합니다.
    • RNN은 동일한 파라미터를 시퀀스의 모든 단계에서 재사용(공유)하므로, 시퀀스 길이가 달라져도 동일한 연산 과정을 반복합니다.
  • 어떻게 가능한가?
    • RNN에서는 하나의 셀(Neuron) 이 시간 단계마다 반복적으로 활성화됩니다.
    • 입력 시퀀스의 길이에 상관없이 동일한 가중치(파라미터)가 각 시간 단계에서 재사용되므로, 시퀀스 길이에 구애받지 않고 작동할 수 있습니다.

예시:

  • 훈련: 길이가 10인 시퀀스로 훈련.
  • 테스트: 길이가 20인 시퀀스에도 적용 가능.
    • 이유: 시퀀스의 길이가 증가해도 RNN은 각 시간 단계에서 동일한 파라미터를 사용하여 연산을 수행합니다.

2. Share the parameter effectiveness across different sequence lengths and different positions in time

  • 의미:
    • RNN은 시퀀스의 다른 시간 단계(position) 에서도 동일한 파라미터를 재사용합니다.
    • 동일한 파라미터가 시퀀스의 처음, 중간, 끝 어디에서든 사용되며, 이는 파라미터가 위치와 무관하게 효과적으로 작동함을 의미합니다.
  • 어떻게 가능한가?
    • RNN은 모든 시간 단계에서 동일한 가중치 행렬 반복 구조, 그리고 동일한 수학적 연산(주로 행렬 곱과 비선형 활성화 함수)을 사용합니다.
    • 따라서, 입력 데이터가 시퀀스의 어느 시점에 위치하든 동일한 가중치가 적용되므로, 모든 시간 단계에서 파라미터의 효과가 공유됩니다.

예시:


RNN에서 Parameter Sharing의 장점

1. 시퀀스 길이에 독립적

  • RNN의 파라미터는 시퀀스의 길이에 무관하게 재사용됩니다.
  • 따라서 훈련 데이터에서 보지 못했던 긴 시퀀스나 짧은 시퀀스를 처리할 수 있습니다.
  • 이는 RNN이 유연한 모델로 작동하게 만듭니다.

2. 모델 크기 축소

  • RNN은 시간 단계별로 독립적인 파라미터를 사용하는 대신, 동일한 파라미터를 재사용하므로 모델 크기가 대폭 줄어듭니다.
  • 예: 길이 1000의 시퀀스가 입력되더라도, 각 시간 단계에서 동일한 가중치 행렬 W, U, b를 사용하므로, 전체 모델의 파라미터 수는 고정됩니다.

3. 데이터 효율성

  • 시퀀스의 각 시간 단계에서 동일한 파라미터를 학습하기 때문에, 모델은 각 시간 단계에서 데이터를 활용하며 동일한 파라미터를 계속 개선합니다.
  • 이는 데이터의 효율적 학습을 가능하게 합니다.

4. 일반화 성능 향상

  • 동일한 파라미터를 시퀀스 전체에 공유하므로, 모델은 시퀀스의 모든 위치에 대해 일관된 학습을 수행합니다.
  • 이는 모델이 시간적 위치에 구애받지 않고 패턴을 일반화할 수 있게 합니다.

Parameter Sharing의 한계

1. 긴 시퀀스에서의 정보 소실

  • 동일한 파라미터를 공유하더라도, 긴 시퀀스에서는 초기 시간 단계의 정보가 점차 소실되어 후반부에 영향을 미치지 않을 수 있습니다.
  • 이를 해결하기 위해 LSTM(Long Short-Term Memory)GRU(Gated Recurrent Unit) 와 같은 개선된 RNN 구조가 도입되었습니다.

2. Context Independence

  • 동일한 파라미터를 공유하기 때문에, RNN은 시간적 위치에 따라 패턴을 유연하게 조정하지 못할 수 있습니다. 이는 Transformer와 같은 모델이 등장한 이유 중 하나입니다.

Parameter Sharing의 수학적 표현

RNN의 기본 공식:


Parameter Sharing의 직관적 이해

1. 일반적인 네트워크

  • 일반적인 피드포워드 네트워크는 각 층(layer)이 독립된 가중치를 학습합니다.
  • 동일한 패턴이 여러 위치에서 나타나더라도, 이를 별도의 가중치로 학습해야 하므로 학습 효율이 낮습니다.

2. RNN의 파라미터 공유

  • RNN에서는 동일한 파라미터가 재사용되므로, 모델은 같은 패턴을 반복 학습할 필요가 없습니다.
  • 동일한 파라미터가 시퀀스의 처음, 중간, 끝 어디에서든 효과적으로 작동할 수 있습니다.

RNN의 3가지 주요 파라미터

  • 입력-가중치 행렬 (W)


  • 은닉 상태-가중치 행렬 (U)


  • 바이어스 벡터 (b)

 


RNN의 파라미터를 이용한 은닉 상태 계산 공식

RNN에서 은닉 상태 (hth_t)를 계산하는 공식은 다음과 같습니다:


파라미터 공유

시간 축의 모든 단계에서 동일한 파라미터 사용

  • RNN은 모든 시간 단계 tt에서 동일한 W, U, b 를 공유합니다. 이는 Parameter Sharing이라고 불리며, 다음과 같은 장점을 제공합니다:
    1. 모델 크기 감소: 시퀀스의 길이에 상관없이 동일한 가중치를 사용하여 파라미터 수를 최소화.
    2. 일관된 학습: 시간 단계별로 동일한 연산이 반복되므로, 각 시간 단계에서 데이터가 동일한 방식으로 처리됨.

파라미터 수 계산

파라미터 수 공식

RNN의 총 파라미터 수는 다음과 같이 계산할 수 있습니다:


LSTM과 GRU의 경우

RNN보다 복잡한 구조인 LSTMGRU는 더 많은 파라미터를 가집니다. 이들은 각 시간 단계에서 더 많은 가중치 행렬과 바이어스를 사용하여, 장기 의존성 문제를 해결합니다.

  1. LSTM: 4개의 게이트(입력, 망각, 출력, 후보값)를 가지므로, 총 12개의 가중치 행렬 (W,U,b)을 사용합니다.
  2. GRU: 3개의 게이트(업데이트, 리셋, 후보값)를 가지므로, 총 9개의 가중치 행렬을 사용합니다.

Parameter Sharing의 예제

같은 가중치 사용의 직관적 이해

 

  • 여기서 W,U,b 는 각 시간 단계에서 동일하게 사용됩니다.

Parameter Sharing의 시각적 표현

다음은 RNN의 구조를 시간축으로 펼친(Unrolled) 형태입니다:

Time Step 1      Time Step 2      Time Step 3
 x_1 ------------> x_2 ------------> x_3
  |                 |                 |
 [W, U, b]        [W, U, b]        [W, U, b]
  ↓                 ↓                 ↓
 h_1 ------------> h_2 ------------> h_3