본문 바로가기

Data Analysis/Deep Learning

Recurrent Neural Network(RNN)

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

  • 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence)모델
  • RNN은 입력과 출력의 길이를 다르게 설계 할 수 있으므로 다양한 용도로 사용할 수 있다.

 

메모리 셀, RNN 셀

RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고 있다.

위의 그림을 보면, x는 입력층의 입력 벡터, y는 출력층의 출력 벡터이다. 실제로는 편향 b도 입력으로 존재할 수 있지만, 앞으로의 그림에서는 생략한다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀(cell)이라고 한다. 이 셀은 이전의 값을 기억하려고 하는 일종의 메모리 역할을 수행하므로, 이를 메모리 셀 또는 RNN 셀이라고 표현한다.

 

은닉 상태(hidden state)

메모리 셀이 출력층 방향 또는 다음 시점인 t+1의 자신에게 보내는 값

다시 말해 t 시점의 메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태값을 t 시점의 은닉 상태 계산을 위한 입력값으로 사용한다.

RNN을 표현할 때는 일반적으로 위의 그림에서 = 의 좌측과 같이 화살표로 사이클을 그려서 재귀 형태로 표현하기도 한다. =의 우측과 같이 사이클을 그리는 화살표 대신, 여러 시점으로 펼쳐서 표현하기도 한다. 두 그림은 동일한 그림으로 단지 사이클을 그리는 화살표를 사용하여 표현하였느냐, 시점의 흐름에 따라서 표현하였느냐의 차이일 뿐 둘 다 동일한 RNN을 표현하고 있다.

 

피드 포워드 신경망에서는 뉴런이라는 단위를 사용했지만, RNN에서는 뉴런이라는 단위보다는 입력층과 출력층에서는 각각 입력 벡터와 출력 벡터, 은닉층에서는 은닉 상태라는 표현을 주로 사용한다. 위의 그림에서 회색과 초록색으로 표현한 각 네모들은 기본적으로 벡터 단위를 가정하고 있다. 피드 포워드 신경망과의 차이를 비교하기 위해서, RNN을 뉴런 단위로 시각화해보겠다.'

 


모델 구조 별 활용 예시

이미지 캡셔닝(Image Captioning)

  • 이미지 캡셔닝(Image Captioning): 하나의 이미지 입력에 대해서 사진의 제목을 출력하는 작업

하나의 입력에 대해서 여러개의 출력을 의미하는 일 대 다(one-to-many) 구조의 모델을 사용한다.

 

감성 분류(sentiment classification), 스팸 메일 분류(spam detection)

  • 감성 분류(sentiment classification): 입력 문서가 긍정적인지 부정적인지를 판별
  • 스팸 메일 분류(spam detection): 메일이 정상 메일인지 스팸 메일인지 판별

단어 시퀀스에 대해서 하나의 출력을 하는 다 대 일(many-to-one) 구조의 모델을 사용한다.

다대일 모델의 예시(좌), 다대다 모델의 예시(우)

 

챗봇(Chatbot), 번역기(Translator), 태깅(Tagging)

  • 챗봇(Chatbot): 사용자가 문장을 입력하면 대답 문장을 출력
  • 번역기(Translator): 입력 문장으로부터 번역된 문장을 출력
  • 태깅(Tagging): 개체명 인식이나 품사 태깅

여러 개의 입력에 대해서 여러 개의 출력을 하는 다 대 다(many-to-many) 구조의 모델을 사용한다.

 

 

References

https://wikidocs.net/22886