본문 바로가기

Deep Learning/모두를 위한 딥러닝 1

RNN, Recurrent Neural Network

SMALL

Recurrent Neural Network(RNN)은 자연어 문자오가 같이 단어의 순서에 따라 의미가 달라지는 순차 데이터(Sequential Data)를 다룰 때 주로 사용되는 신경망입니다. 따라서 RNN은 단어의 어순에 따라 문장의 의미가 달라지고 앞에 어떤 단어가 쓰였는지 기억해야 뒤에 오는 단어를 예측하는 등의 문제를 풀 때 주로 활용됩니다.

 

RNN은 Hidden Layer의 노드에서 Activation Function을 거쳐 나온 결과값을 Output Layer로 보내면서 다시 다음 Hidden Layer 노드 계산의 입력값으로 보내는 신경망입니다. 이처럼, 결과값이 다음 Hidden Layer 노드의 입력값 계산에 보내지는 것을 '순환한다'라고 표현하고, 이러한 신경망을 순환 신경망이라고 부릅니다. 즉, Hidden Layer에서 Activation Function을 지닌 값은 오직 Output Layer로만 향하는 피드 포워드 신경망(Feed Forward Neural Network)과는 다른 구조의 신경망입니다.

RNN을 도식화하면 위의 그림과 같습니다. x는 Input Layer의 입력 벡터, y는 Output Layer의 출력 벡터를 의미합니다. 편향(bias) b는 설명 편의상 생략하겠습니다. 여기서 셀(cell)은 Hidden Layer에서 Activation Function을 거쳐 결과를 내보내는 역할을 합니다. 또한, Cell은 이전 time step에서의 출력값을 기억하는 역할도하므로 메모리 셀(Memory Cell)또는 RNN Cell이라고도 부릅니다. 여기서 Cell이 기억한다는 것은 이전 time step에서 Hidden Layer의 메모리 셀의 출력값을 자신의 입력값으로써 재귀적으로(recursively) 사용한다는 것을 의미합니다.

메모리 셀이 Output Layer 혹은 다음 time step의 메모리 셀에 보내는 값을 Hidden State라고 부릅니다. 즉 t번째 time step의 메모리 셀은 (t-1)번째 time step에서의 메모리 셀이 보낸 Hidden State를 현재 시점의 Hidden State를 계산하기 위한 입력값으로 활용합니다. RNN을 구체적으로 도식화하면 위의 그림과 같습니다. 그림의 좌측과 같이 화살표를 재귀의 형태로 표현하기도 하지만, 우측과 같이 재귀적 화살표 대신 여러 time step의 layer 구조를 펼쳐서 표현하기도 합니다. 그림에서 확인할 수 있듯이, 이전 time step(t-1)에서의 Hidden State(h_t-1)가 다음 time step(t)에서의 Hidden STate 계산을 위한 입력값으로 사용됩니다.

 

 

 

RNN 수식

 

다음 그림은 RNN을 수식과 함께 도식화한것입니다. RNN을 수식과 함께 동작 원리를 자세히 보겠습니다.

수식에서 볼 수 있듯이, 현재 t번째 time step에서의 Hidden State를 구할 때 입력값으로 이전 time step(t-1)에서의 Hidden State를 입력값으로 사용하는 것이 특징입니다. 가장 기본적인 RNN을 Vanilla RNN라고 부릅니다. 이 Vanilla RNN은 일반적으로 Activation Function으로 하이퍼볼릭 탄젠트(tanh)를 사용하는 것이 특징입니다.

 

 

 

RNN구조

RNN은 입력 벡터와 출력 벡터의 길이에 따라 크게 3가지 구조가 있으며, 구조별 활동 예시를 보겠습니다.

 

1)One-to-Many

=> 이미지 캡셔닝(사진을 인식하여서 제목 출력) 등 활용

 

 

2) Many-to-One

=> 감정 분류(긍정/부정), 스팸 메일 분류(스팸/일반) 등에 활용

 

 

3) Many-to-Many

=> 기계 번역, 챗봇 등 활용

LIST

'Deep Learning > 모두를 위한 딥러닝 1' 카테고리의 다른 글

CNN, Convolutional Neural Network  (0) 2023.02.13
lec 9장  (0) 2023.02.07