Page 32 -
P. 32
그림 7-4 순환 신경망(RNN)
y t y 1 y 2 y 3 y t
h h h h h
t 1 2 3 t
x x x x x
t 1 2 3 t
)이 만들어지고, 두 번째 입력이 들어오면
그림과 같이 첫 번째 입력이 들어오면 첫 번째 기억(h 1
)을 만듭니다. 입력 길이만큼 이 과정을 얼마
기존 기억(h 1 )과 새로운 입력을 참고하여 새 기억(h 2
든지 반복할 수 있습니다. 즉, RNN은 외부 입력과 자신의 이전 상태를 입력받아 현재 상태를 갱
신합니다.
RNN은 입력과 출력에 따라 유형이 다양합니다.
1. 일대일: 순환이 없기 때문에 RNN이라고 말하기 어려우며, 순방향 네트워크가 대표적 사례입
니다.
2. 일대다: 입력이 하나이고, 출력이 다수인 구조입니다. 이미지를 입력해서 이미지에 대한 설명
을 문장으로 출력하는 이미지 캡션(image captioning)이 대표적 사례입니다.
3. 다대일: 입력이 다수이고 출력이 하나인 구조로, 문장을 입력해서 긍정/부정을 출력하는 감성
분석기에서 사용됩니다.
다대일에 대한 모델은 텐서플로 2에서 다음과 같이 구현합니다. 다음은 예시 코드이며, 이를
이용한 순환 신경망 구현은 7.4절에서 다룹니다.
In_layer = tf.keras.input(shape=(3,1), name='input')
RNN_layer = tf.keras.layers.SimpleRNN(100, name='RNN')(In_layer)
Out_layer = tf.keras.layers.Dense(1, name='output')(RNN_layer)
코드를 구조화하면 다음 그림과 같습니다. 하지만 코드는 입력과 출력 사이에 하나의 RNN 셀
(cell)만 가지고 있는 것에 주의해야 합니다.
266