본문 바로가기
공부자료/Deep Learning

순환 신경망(RNN) ★

by mogazi 2022. 9. 26.
  •   순환 신경망이란? (Recurrent Neural Network)

 

RNN은 시간적으로 연속성이 있는 데이터를 처리하려고 고안된 인공 신경망이다. 

RNN의 ‘Recurrent(반복되는)’는 이전 은닉층이 현재 은닉층의 입력이 되면서 ‘반복되는 순환 구조를 갖는다’는 의미. 

 

 

RNN이 기존 네트워크와 다른 점은 ‘기억(memory)’을 갖는다는 것. 

이때 기억은 현재까지 입력 데이터를 요약한 정보라고 생각하면 된다 

따라서 새로운 입력이 네트워크로 들어올 때마다 기억은 조금씩 수정되며, 결국 최종적으로 남겨진 기억은 모든 입력 전체를 요약한 정보가 된다.

 

 

 

그림과 같이 첫 번째 입력이 들어오면 첫 번째 기억(h1)이 만들어지고, 두 번째 입력이 들어오면 기존 기억(h1)과 새로운 입력을 참고하여 새 기억(h2)을 만든다. 

 

입력 길이만큼 이 과정을 얼마든지 반복할 수 있다. 

즉, RNN은 외부 입력과 자신의 이전 상태를 입력받아 현재 상태를 갱신한다.

 

 

 

 

  유형

 

1. 일대일: 순환이 없기 때문에 RNN이라고 말하기 어려우며, 순방향 네트워크가 대표적 사례이다.

2. 일대다: 입력이 하나이고, 출력이 다수인 구조입니다. 이미지를 입력해서 이미지에 대한 설명을 문장으로 출력하는 이미지 캡션(image captioning)이 대표적 사례이다.

3. 다대일: 입력이 다수이고 출력이 하나인 구조로, 문장을 입력해서 긍정/부정을 출력하는 감성 분석기에서 사용된다.

4. 다대다: 입력과 출력이 다수인 구조로, 언어를 번역하는 자동 번역기 등이 대표적인 사례이다.

5. 동기화 다대다4의 유형처럼 입력과 출력이 다수인 구조이다. 

문장에서 다음에 나올 단어를 예측하는 언어 모델, 즉 프레임 수준의 비디오 분류가 대표적 사례.

 

- 다대일 모델 (코드를 구조화하면 다음 그림과 같다. 하지만 코드는 입력과 출력 사이에 하나의 RNN 셀(cell)만 가지고 있는 것에 주의.

 

 

- 다대다 모델

 

 

 

 

 

 

  •   RNN 계층과 셀

 

 

RNN은 내장된 (built-in) 계층 뿐만 아니라 샐 레벨의 API도 제공한다.

RNN 계층이 입력된 배치 순서열을 모두 처리하는 것과 다르게 RNN 셀은 오직 하나의 단계 (time step) 만 처리한다.

 

따라서 RNN셀은 RNN 계층의 for loop 구문의 내부라고 할 수 있다.

 

 

 

RNN 계층은 셀을 래핑하여 동일한 셀을 여러 단계에 적용한다.

동일한 셀이 x1, x2, …, xn 등 전체 RNN 네트워크(계층)에서 사용되고 있다. 

따라서 셀은 입력 시퀀스에서 반복되고 return_sequences 같은 옵션을 기반으로 출력 값을 계산한다. 

즉, 셀은 실제 계산에 사용되는 RNN 계층의 구성 요소로, 단일 입력과 과거 상태(state)를 가져와서 출력과 새로운 상태를 생성한다.

 

 

RNN의 활용 분야로는 대표적으로 ‘자연어 처리’ 가 있다 

연속적인 단어들의 나열인 언어 (자연어) 처리는 음성 인식, 단어 의미 판단 및 대화 등에 대한 처리가 가능하다.

이외에도 손글씨, 센서 데이터 등 시계열 데이터 처리에 활용된다

 

 

 

* API : Application Programming Interface (애플리케이션 프로그램 인터페이스)의 줄임말

애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 

 

* 래핑 : dll 이나 API를 사용하기 쉽도록 한번 더 dll 등으로 만들어 주는 것이다.

 

'공부자료 > Deep Learning' 카테고리의 다른 글

LSTM  (0) 2022.09.26
RNN구조 ★  (0) 2022.09.26
AR, MA, ARMA, ARIMA  (0) 2022.09.26
시계열 분석  (0) 2022.09.26
분류 신경망 유형  (0) 2022.09.26