ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RNN]Recurrent Neural Network(RNN)
    Artificial Intelligence/Deep learning 2021. 6. 21. 16:04

    이번에는 자연어(NL, Natural Language)나 음성신호, 주식과 같은 연속적인(sequential) 시계열(time series) 데이터에 많이 사용되는 모델인 순환 신경망(Recurrent Neural Network)에 대해 포스팅해 보도록 하겠습니다

     

    순차 데이터(Sequential Data)

    Sequential Data

    순환 신경망(RNN)을 공부하기 전에 먼저 순환 신경망(RNN)에 사용하는 순차 데이터(Sequential Data)에 대해 알아야 합니다 
    순차 데이터(Sequential Data)란 순서가 의미가 있으며, 순서가 달라질 경우 의미가 손상 되는 데이터를 순차 데이터(Sequential Data)라고 합니다. 

    시간적 의미가 있는 경우 Temporal Sequence라고 하며, 일정한 시간차라면 Time Series 라고 합니다. 

    일반적으로 순환 신경망(RNN)에서는 Time Series형태의 데이터를 많이 사용하게 되는데요 

    Temporal Sequence를 Time Series로 변환하기 위해서는 Resample을 해주어야 합니다.

    취득된 데이터(Temporal Sequence)를 이용해 신호를 보간(Imterpolation)하고, 이를 균일 시간 간경으로 샘플링합니다.

     

     

    기억 시스템(Memory System)

    순차 데이터(Sequential Data)를 처리하려고 하면 기본적으로 기억 시스템이라는 것이 전제가 되어있어야 합니다.

    위의 그림과 같이 입력이 여러 가지가 들어왔을 때 모든 입력을 다 분석을 해서 출력을 하기 위해서는 모든 입력들을 기억을 하고 있어야 합니다.  올바른 대답을 하려면, 입력받을 때마다 그 내용을 '기억' 할 수 있어야 합니다. 

    이전 입력을 기억하지 않는 시스템은 무기억 시스템(Memoryless System)이라고 하는데 얕은 신경망(Shallow Neural Network), 합성곱 신경망(Convolution Neural Network) 등이 있습니다. 

     

     

    순환 신경망(Recurrent Neural Network)

    기본적인 순환 신경망(RNN)은 위의 그림과 같습니다.

    얕은 신경망(Shallow Neural Network)에 '순환'이 추가된 것으로 이해하면 될 것 같습니다. 

    입력에서 얕은 신경망(Shallow Neural Network)과는 다르게  n-1번째 히든 레이어를 입력받아 더해서 사용을 합니다

    그러면 자연스럽게 입력의 길이가 길어지면서 데이터가 끊임없이 갱신될 수 있는 구조입니다. 

    수식에서도 알 수 있든 히든 레이어의 활성화 함수는 비선형 함수인 하이퍼볼릭 탄젠트를 많이 사용합니다. 

    이러한 순환 신경망(RNN)은 입력값과 출력 값이 Sequential의 길이에 관계없이 받아들일 수 있는 구조이기 때문에 언어 모델링, 번역, 음성 인식 등에 다양하게 사용이 가능합니다 

     

     

     

    순환 신경망(Recurrent Neural Network)의 한계

    순환 신경망(RNN)은 순차 데이터의 장기 의존관계(Long-Term Dependency)를 학습하는 것에 한계가 있습니다. 길이가 길어지어짐에 따라 신경망을 하나 통과할 때마다 기울기의 값이 조금씩 작아져서, 이전 시각 t까지 역전파 되기 전에 0이 되어 소멸하게 되는 기울기 소실(Gradient Vanishing) 또는 반대로 기울기가 너무 커지는 기울기 폭발(Gradient Exploding) 문제가 일어나기 때문입니다. 

    다음 포스팅에는 RNN의 한계를 해결하는 방법을 포스팅하도록 하겠습니다. 

Designed by Tistory.