더북(TheBook)

7.3.1 RNN 계층과 셀

이제 RNN을 구성하는 RNN 계층(layer)과 RNN 셀(cell)을 살펴보겠습니다.

RNN은 내장된(built-in) 계층뿐만 아니라 셀 레벨의 API도 제공합니다. RNN 계층이 입력된 배치 순서열을 모두 처리하는 것과 다르게 RNN 셀은 오직 하나의 단계(time step)만 처리합니다. 따라서 RNN 셀은 RNN 계층의 for loop 구문의 내부라고 할 수 있습니다.

▲ 그림 7-9 RNN 계층과 RNN 셀

RNN 계층은 셀을 래핑4하여 동일한 셀을 여러 단계에 적용합니다. 그림 7-9에서도 동일한 셀이 x1, x2, …, xn 등 전체 RNN 네트워크(계층)에서 사용되고 있습니다. 따라서 셀은 입력 시퀀스에서 반복되고 return_sequences 같은 옵션을 기반으로 출력 값을 계산합니다. 즉, 셀은 실제 계산에 사용되는 RNN 계층의 구성 요소로, 단일 입력과 과거 상태(state)를 가져와서 출력과 새로운 상태를 생성합니다.

참고로 셀 유형은 다음과 같습니다.

tf.keras.layers.SimpleRNNCell: SimpleRNN 계층에 대응되는 RNN 셀

tf.keras.layers.GRUCell: GRU 계층에 대응되는 GRU 셀

tf.keras.layers.LSTMCell: LSTM 계층에 대응되는 LSTM 셀

이렇게 RNN의 계층과 셀을 분리해서 설명하는 이유는 텐서플로 2에서 이 둘을 분리해서 구현이 가능하기 때문입니다. 따라서 앞으로 진행될 RNN 예제는 이 둘을 분리해서 진행합니다.

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

이제 구체적으로 RNN 구조를 살펴보겠습니다.

 

 


  4 dll이나 API를 사용하기 쉽도록 한 번 더 dll 등으로 만들어 주는 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.