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
   27   28   29   30   31   32   33