본문 바로가기
AI/딥러닝

[AI 부트캠프] DAY 68 - 딥러닝 4

by HOHHOH 2023. 10. 27.

[오늘의 일지]

딥러닝 실시간 강의 - RNN

[상세 내용]

RNN

등장배경

- 시퀀스 데이터 처리의 필요성: 다양한 분야에서 발생하는 시퀀스 데이터(시계열 데이터, 자연어 텍스트, 음성 신호 등)를 효과적으로 처리하고 모델링하기 위한 필요성이 대두되었습니다. 이러한 데이터는 순서와 상호 의존성을 가지며, 전통적인 신경망 모델로는 처리하기 어려웠습니다.

- Feedforward Neural Networks의 한계: 기존의 피드포워드 신경망 모델은 각 입력과 출력 간의 관계를 고려하는데 적합하지만, 시퀀스 데이터와 같이 순서 정보를 갖는 데이터를 다루기 어려웠습니다. 이로 인해 순서 정보를 활용하고 의미를 추출하는 방법이 필요했습니다.

- 기존 모델의 과거 정보 손실: 이전 단계의 정보를 현재 상태에서 유지하고 활용하기 어렵다는 문제가 있었습니다. Feedforward 신경망은 입력을 처리하는 동안 과거 정보를 잃어버릴 수 있어서 장기 의존성을 잘 처리하지 못했습니다.

시계열 데이터 및 자연어 처리 애플리케이션: 자연어 처리와 시계열 데이터 분야에서 순서 정보와 의존성을 효과적으로 모델링하고 활용할 수 있는 방법이 필요했습니다. 이러한 분야에서 RNN은 큰 관심을 받았습니다.

- 연구와 기술 발전: RNN의 이론과 구현에 대한 연구와 개발이 계속 진행되어 더욱 효과적인 모델들이 개발되었습니다. LSTM(장단기 기억 네트워크)와 GRU(게이트 순환 유닛)와 같은 발전된 RNN 아키텍처가 개발되어 RNN의 성능을 향상시켰습니다.

 

정의

- RNN(Recurrent Neural Network)은 시퀀스 데이터를 처리하고 모델링하는 데 사용되는 인공 신경망의 한 종류입니다.

  • 순환 구조: RNN은 순환 구조를 가지며, 현재 단계의 입력과 이전 단계의 출력(또는 상태)을 동시에 고려합니다. 이로써 시퀀스 데이터에서 순서와 상호 의존성을 고려할 수 있습니다.
  • 가변적인 입력과 출력 길이: RNN은 시퀀스의 길이가 가변적인 상황에서 사용될 수 있으며, 입력 시퀀스와 출력 시퀀스의 길이를 다르게 설정할 수 있습니다.
  • 상태(은닉 상태): RNN은 현재 시간 단계의 입력과 이전 시간 단계의 상태(은닉 상태)를 활용하여 출력을 생성합니다. 이는 이전 정보를 기억하고 활용할 수 있게 합니다.
  • 역전파 알고리즘: RNN은 역전파(Backpropagation) 알고리즘을 사용하여 가중치를 학습합니다. 시퀀스 데이터의 오차를 최소화하기 위해 학습됩니다.

 

원리

Recurrent Structure

  • RNN은 순환(recurrent) 구조를 가지고 있습니다. 이것은 네트워크가 순차적 데이터를 처리할 수 있는 기능을 제공합니다.
  • 네트워크의 각 시간 단계에서, 현재 입력과 이전 시간 단계에서의 은닉 상태(또는 출력)가 연결되고 결합됩니다. 이로써 네트워크는 과거 정보를 현재 계산에 활용할 수 있습니다.

Time Steps

  • RNN은 시간 단계(또는 스텝)에 따라 데이터를 처리합니다. 각 시간 단계에서 입력 데이터와 이전 시간 단계에서의 은닉 상태가 사용됩니다.
  • 네트워크는 현재 단계에서의 계산을 마친 후, 다음 시간 단계로 진행합니다. 이 과정은 시퀀스의 끝까지 반복됩니다.

Hidden State (State)

  • RNN은 각 시간 단계에서 은닉 상태(또는 상태)를 유지합니다. 이 상태는 현재까지의 정보를 요약하고, 다음 단계의 계산에 이전 정보를 전달하기 위해 사용됩니다.
  • 초기 시간 단계에서는 은닉 상태는 주로 0 또는 랜덤 초기값으로 설정됩니다.

Weights and Activation Functions

  • RNN은 입력 데이터와 이전 시간 단계의 은닉 상태를 결합하기 위한 가중치 행렬을 사용합니다. 이러한 가중치는 학습 과정을 통해 조정됩니다.
  • 각 시간 단계에서 활성화 함수를 사용하여 출력을 계산합니다. 일반적으로는 tanh 또는 ReLU(Rectified Linear Unit)와 같은 활성화 함수가 사용됩니다.

Backpropagation Algorithm

  • RNN은 역전파(Backpropagation) 알고리즘을 사용하여 학습됩니다. 역전파는 출력과 실제 목표 출력 간의 오차를 계산하고 이 오차를 최소화하기 위해 가중치를 조정합니다.
  • 역전파는 각 시간 단계에서 이루어지며, 그래디언트(가중치의 변화율)가 이전 시간 단계로 전파됩니다.

Handling Long-Term Dependencies

  • 일반적인 RNN은 단기 의존성은 처리할 수 있지만, 장기 의존성을 처리하기 어려울 수 있습니다. 이는 그래디언트 소실 문제와 그래디언트 폭발 문제로 나타날 수 있습니다.

 

RNN의 확장

LSTM

- LSTM(장단기 메모리 네트워크, Long Short-Term Memory)는 시퀀스 데이터를 처리하기 위한 RNN(Recurrent Neural Network)의 한 변종으로, 장기 의존성을 효과적으로 다루는 데 사용됩니다. LSTM은 RNN의 한계 중 하나인 장기 의존성 문제와 그래디언트 소실 문제를 해결하기 위해 제안되었습니다.

  • 셀 상태와 게이트 메커니즘: LSTM는 셀 상태와 게이트 메커니즘을 사용합니다. 셀 상태는 장기 의존성을 유지하는 데 사용되며, 게이트들은 어떤 정보를 저장하고 어떤 정보를 잊을지를 제어합니다.
  • 셀 상태 (Cell State): LSTM의 핵심은 셀 상태입니다. 이는 네트워크가 정보를 저장하고 전달하는 메커니즘을 가지고 있습니다. 셀 상태는 긴 시퀀스에서 중요한 정보를 계속 유지합니다.
  • 게이트 (Gate) 메커니즘: LSTM에는 3개의 게이트가 있습니다.( 입력 게이트(Input Gate), 삭제 게이트(Forget Gate), 출력 게이트(Output Gate)) 입력 게이트는 어떤 정보를 업데이트할 것인지를 결정하고, 삭제 게이트는 어떤 정보를 버릴 것인지를 결정하며, 출력 게이트는 어떤 정보를 출력할 것인지를 결정합니다.
  • 시퀀스 데이터 처리: 각 시간 단계에서 LSTM은 현재 입력과 이전 시간 단계의 셀 상태를 사용하여 현재 셀 상태와 출력을 계산합니다. 이를 통해 장기 의존성을 효과적으로 모델링합니다.
  • 그래디언트 소실 문제 해결: LSTM는 그래디언트 소실 문제를 해결하는데 도움을 줍니다. 셀 상태를 통한 정보 흐름과 게이트의 열림/닫힘 상태를 통해 그래디언트가 장기 의존성을 고려하면서 전파됩니다.

 

GRU

- GRU(게이트 순환 유닛, Gated Recurrent Unit)은 시퀀스 데이터를 처리하기 위한 RNN(Recurrent Neural Network)의 한 변형입니다. LSTM(장단기 메모리 네트워크)와 유사한 목적을 가지고 있으며, 장기 의존성 문제와 그래디언트 소실 문제를 해결하기 위해 설계되었습니다.

  • 업데이트 게이트와 재설정 게이트: GRU는 업데이트 게이트(Update Gate)와 재설정 게이트(Reset Gate)라는 두 가지 게이트 메커니즘을 사용합니다. 이러한 게이트들은 정보의 흐름을 제어하고 장기 의존성을 관리합니다.
  • 은닉 상태 (Hidden State): GRU는 LSTM과 달리 셀 상태를 사용하지 않고, 단일 은닉 상태를 유지합니다. 이 은닉 상태는 현재 시간 단계에서의 정보를 요약하고 다음 시간 단계로 전달합니다.
  • 업데이트 게이트 (Update Gate): 업데이트 게이트는 현재 정보를 이전 은닉 상태와 어떻게 결합할지를 제어합니다. 이를 통해 네트워크는 얼마나 많은 과거 정보를 유지할 것인지를 조절합니다.
  • 재설정 게이트 (Reset Gate): 재설정 게이트는 어떤 과거 정보를 잊을 것인지를 결정합니다. 이를 통해 네트워크는 현재 시간 단계에서 어떤 정보를 무시할 것인지를 관리합니다.
  • 시퀀스 데이터 처리: 각 시간 단계에서 GRU는 현재 입력과 이전 은닉 상태를 사용하여 업데이트 게이트와 재설정 게이트를 계산하고, 이를 통해 은닉 상태를 업데이트합니다.
  • 그래디언트 소실 문제 해결: GRU도 LSTM과 마찬가지로 그래디언트 소실 문제를 완화합니다. 업데이트 게이트와 재설정 게이트를 통해 그래디언트가 효과적으로 전파됩니다.
반응형

댓글