Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기
DL/RNN

[DL][RNN] RNN(Recurrent Neural Network, 순환 신경망) Introduce

by 어떻게든 되겠지~ 2024. 8. 25.

RNN(Recurrent Neural Network, 순환 신경망) 이란?

RNN이란 시간적으로 연속성이 있는 데이터를 처리하기 위해 고안된 인공신경망이다

'Recurrent'는 이전 은닉층이 현재 은닉층의 입력이 되면서 '반복되는 순환 구로'를 갖는다는 의미이다

RNN이 기존 네트워크와 다른 점은 기억(Memory)를 갖는다는 점이다

여기서 기억이란 현재까지의 Input Data를 요약한 정보라고 생각하면 된다. 즉, 최종적으로 남겨진 기억은 모든 입력 전체를 요약한 정보라고 할 수 있다.

 

첫 번째 입력(x1)이 들어오면 첫 번째 기억(h1)이 만들어지고, 두 번째 입력(x2)이 들어오면 기존 기억(h1)과 새로운 입력을 참고하여 새 기억(h2)을 만든다     
즉, 외부 입력과 자신의 이전 상태를 입력받아 현재 상태를 결정하는 구조이다

 

RNN 유형

RNN 유형에는 일대일, 일대다, 다대일, 다대다, 동기화 다대다 구조이 있다

  • 일대일 구조 : 순환이 없기 때문에 RNN이라고 말하기 어려우며, 순방향 네트워크가 대표적이다
  • 일대다 구조 : 입력이 하나이고 출력이 다수인 구조, Image Caption이 대표적 사례이다
  • 다대일 구조 : 입력이 다수이고 출력이 하나인 구조, 감성 분석기에 사용된다
  • 다대다 구조 : 입력이 다수이고 출력이 하나인 구조, 자동 번영기가 대표적 사례이다
  • 동기화 다대다 구조 : 다대다 구조처럼 입력과 출력이 다수인 구조, 문장에서 다음에 나올 단어를 예측하는 언어 모델이 대표적

※ 다대다 구조 vs 동기화 다대다 구조

  • 다대다 구조 
    • 입력 시퀀스와 출력 시퀀스의 길이가 서로 다를 수 있으며, 출력 시점이 입력 시적과 직접적으로 맞물리지 않는 구조
  • 동기화 다대다 구조
    • 입력 시퀀스와 출력 시퀀스의 길이가 같고, 시퀀스의 각 시점이 직접적으로 매칭되는 구조
    • 입력과 출력깅 시간적으로 일치해야 하며, 각 입력 시점에 대해 동일한 위치의 출력이 존재

RNN  Layer와 RNN Cell

  • RNN Layer : 입력된 배치 순서대로 모두 처리
  • RNN Cell : 오직 하나의 단계(Time Step)만 처리

즉, RNN Layer는 RNN 계층에서 RNN Cell이 for loop을 갖는 구조라 할 수 있다

RNN Layer는 Cell을 래핑하여 동일한 셀을 여러 단계에 적용        
즉, Cell은 실제 계산에 사용되는 RNN 계층의 구성 요소로, 단일 입력과거 상태를 가져와서 출력과 새로운 상태를 생성

RNN의 활용 분야로는 대표적으로 '자연어 처리'를 꼽을 수 있다     
연속적인 단어들의 나열인 언어(자연어)처리는 음성 인식, 단어의 의미 판단 및 대화 등에 대한 처리가 가능하다       
이외에도 손글씨, 센서 데이터 등 시계열 데이터 처리 활용된다

 

여기까지 RNN의 간단한 개념에 대해 살펴보았고, 이 다음 글에서 RNN Cell과 RNN Layer을 수식으로 공부하고 PyTorch로 구현해보도록 하겠습니다

반응형