deep-learning-RNN #1

be1le·2022년 5월 16일
0

DL

목록 보기
5/9

RNN 이란?

우선 오늘 알아볼 RNN은 재귀신경망(Recursive Neurel Network) 이 아닌 순환 신경망(Recurrent Neural Network)이다.순환신경망(Recurrent Neural Network)은 사슬(체인)형태의 계산 그래프를 사용하여 구현되는 모델이며 재귀신경망(Recursive Neural Network)은 트리형태의 계산 그래프를 사용하여 구현되는 모델이라는 정도만 알고있자!
간단히 생각을 해보자면, RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델이라고 할 수 있다.

시퀀스(Sequence) 모델이란?

Sequence Model이란, 연속적인 입력(Sequential Input)으로부터 연속적인 출력(Sequential Output)을 생성하는 모델이다.

  • 번역기를 생각해보면 입력은 번역하고자 하는 단어의 시퀀스가 되는 문장인 것이다. 출력에 해당되는 번역된 문장 또한 단어의 시퀀스가 되는 것이다. 이처럼 시퀀스들을 처리하기 위해 고안된 모델들을 시퀀스 모델이라고 합니다. 그 중 RNN은 가장 기본적인 인공 신경망 시퀀스 모델이라고 생각하면 됩다.

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

RNN의 특징

보편적인 신경망들은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향하는데, 이와 같은 신경망들을 피드 포워드 신경망(Feed Forward Neural Network)이라고 한다. 그런데 RNN(Recurrent Neural Network)은 그렇지 않다. RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있다.

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

은닉층의 메모리 셀은 각각의 시점(time step)에서 바로 이전 시점에서의 은닉층의 메모리 셀에서 나온 값을 자신의 입력으로 사용하는 재귀적(Recursive) 활동을 하고 있다. 이는 현재 시점 t에서의 메모리 셀이 갖고있는 값은 과거의 메모리 셀들의 값에 영향을 받은 것임을 의미하게되는데, 그렇다면 메모리 셀이 갖고 있는 이 값이 바로 은닉상태(hidden state)인 것이다.

은닉 상태(hidden state)

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

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

이와같이 나타낼 수 있는데, 위의 그림은 입력 벡터의 차원이 4, 은닉 상태의 크기가 2, 출력층의 출력 벡터의 차원이 2인 RNN이 시점이 2일 때의 모습을 보여줍니다. 다시 말해 뉴런 단위로 해석하면 입력층의 뉴런 수는 4, 은닉층의 뉴런 수는 2, 출력층의 뉴런 수는 2가된다.

RNN의 다양한 활용


RNN은 입력과 출력의 길이를 다르게 설계 할 수 있으므로 다양한 용도로 사용할 수 있다는 장점이 있다. 위 그림은 입력과 출력의 길이에 따라서 달라지는 RNN의 다양한 형태를 보여주는데. 자연어 처리로 예를 들어본다면, 하나의 입력에 대해서 여러개의 출력을 의미하는 일 대 다(one-to-many) 구조의 모델은 하나의 이미지 입력에 대해서 사진의 제목을 출력하는 이미지 캡셔닝(Image Captioning) 작업에 사용할 수 있다.


one-to-many

  • 단어 시퀀스에 대해서 하나의 출력을 하는 다 대 일(many-to-one) 구조의 모델은 입력 문서가 긍정적인지 부정적인지를 판별하는 감성 분류(sentiment classification), 또는 메일이 정상 메일인지 스팸 메일인지 판별하는 스팸 메일 분류(spam detection) 등에 사용할 수 있다.


many-to-many

  • 다 대 다(many-to-many) 구조의 모델의 경우에는 사용자가 문장을 입력하면 대답 문장을 출력하는 챗봇과 입력 문장으로부터 번역된 문장을 출력하는 번역기, 또는위 그림처럼 개체명 인식을 수행할 때사용 된다. 위의 그림은 개체명 인식의 RNN 아키텍처이다.

RNN 수식

  • 현재 시점 t에서의 은닉 상태값 = htht
  • 은닉층의 메모리 셀은 htht를 계산하기 위해서 총 두 개의 가중치를 가진다.
  • 입력층을 위한 가중치= WxWx,
  • 이전 시점 t-1의 은닉 상태값인ht1ht-1 을 위한 가중치 = WhWh

이를 식으로 표현하면 다음과 같습니다.


(여기서 f는 비선형 활성화 함수중 하나.)

profile
그저 그런 개발자가 되지 않겠습니다.

0개의 댓글