RNN(순환 신경망)

이상우·2022년 1월 5일
0

RNN란?

RNN(RNN(Recurrent Neural Network)은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델이다. 번역기로 생각해보면 입력은 번역하고자 하는 단어의 시퀀스, 출력에 해당하는 번역된 문장 또한 단어의 시퀀스이다. RNN은 가장 기본적인 인공 신경망 시퀀스 모델이다.

RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖는다.
*활성화 함수(Activation function)이란 입력된 데이터의 가중 합을 출력 신호로 변환하는 함수

은닉층의 메모리 셀은 각각의 시점에서 바로 이전 시점에서의 은닉층의 메모리 셀에서 나온 값을 자신의 입력으로 사용하는 재귀적 활동을 한다.

위의 그림 왼쪽과 오른쪽은 같은 것을 뜻한다. 왼쪽의 은닉층의 재귀적인 부분을 펼치면 오른쪽과 같다.

피드 포워드 신경망(NNLM)에서는 뉴런이라는 단위를 사용했지만, RNN에서는 뉴런이라는 단위보다는 입력층과 출력층에서는 각각 입력 벡터와 출력 벡터, 은닉층에서는 은닉 상태라는 표현을 주로 사용한다. 아래 그림을 보자.

그림을 보면 입력 벡터의 차원이 4, 은닉 상태의 크기가 2, 출력층의 출력 벡터의 차원이 2인 RNN시점이 2일때의 모습이다.

RNN 형태


RNN은 입력과 출력의 길이를 다르게 설계할 수 있어서 다양한 용도로 사용할 수 있다.
1. 일 대 다(one-to-many): 하나의 입력에 대해서 여러개의 출력을 의미한다.
하나의 이미지 입력에 대해서 사진의 제목을 출력하는 이미지 캡셔닝(Image Captioning) 작업에 사용할 수 있습니다. 사진의 제목은 단어들의 나열이므로 시퀀스 출력이다.
*이미지 캡셔닝이란 이미지를 문장(이미지를 설명하는)으로 변환시켜주는 기술


2. 다 대 일(many-to-one): 입력 문서가 긍정적인지 부정적인지를 판별하는 감성 분류(sentiment classification), 또는 메일이 정상 메일인지 스팸 메일인지 판별하는 스팸 메일 분류(spam detection) 등에 사용할 수 있다. 위 그림은 RNN으로 스팸 메일을 분류할 때의 아키텍처를 보여준다.


3. 다 대 다(many-to-many): 사용자가 문장을 입력하면 대답 문장을 출력하는 챗봇과 입력 문장으로부터 번역된 문장을 출력하는 번역기, 또는 개체명 인식이나 품사 태깅과 같은 작업이 속한다. 위 그림은 개체명 인식을 수행할 때의 RNN 아키텍처를 보여준다.

RNN 수식

하이퍼볼릭 탄젠트(tanh)란?


하이퍼볼릭 함수는 우리말로 쌍곡선 함수라고도 하며, 시그모이드 함수를 보완할 수 있는 함수이다. 위의 그림과 같이 -1에서 1사이의 값을 출력하며, 중앙값도 0이다.왜냐하면 하이퍼볼릭 탄젠트는 중앙값이 0이기 때문에, 경사하강법 사용 시 시그모이드 함수에서 발생하는 편향 이동이 발생하지 않는다. 즉 기울기가 양수 음수 모두 나올 수 있기 때문에 시그모이드 함수보다 학습 효율성이 뛰어나다.

참고 사이트

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글