본문 바로가기
머신러닝, 딥러닝/딥러닝

RNN(순환신경망) 기본

by 장찐 2022. 1. 14.

 📚 RNN(Recurrent Neural Network) 개념  

 

✅ RNN 이란  

• RNN층은 기본 신경망인 FNN의 은닉층 형태와 동일하다. RNN층에서는 하나의 은닉층을 순차적으로 여러 번 반복해서 사용한다. 

 

• 텍스트나 비디오 등 순서를 가지고 연속적으로 나열되어 있는 sequence 데이터에 적합함 

   특히 텍스트 분석에서 단어들의 문맥적 의미 추출 또는 단어 간의 관계 추출에 사용됨. 

 

 

 RNN 작동 방식 

• RNN에 텍스트 데이터를 입력하기 위해서는 각 단어를 저차원의 벡터로 표현해야 한다(벡터의 차원 = 벡터의 원소 수)

  저차원으로 변환해서 표현한 벡터를 Embedding vector라고 한다. 파이토치 위키독스에 설명이 잘 되어 있음(https://wikidocs.net/60852)

 

• 단어를 원소 1개의 벡터로 나타내는 것 보다 100차원으로 나타내는 것이 더 많은 정보를 담을 수 있다(선형대수 참고)

   단, 차원이 너무 많은 경우에는 오히려 학습에 많은 시간이 소요되기 때문에 100~300차원의 벡터로 표현하는 것이 일반적이다. 

 

• the, movie, is, fun이라는 단어들을 100차원의 벡터로 위와 같이 표현할 수 있다.

  각 벡터의 원소 값을 하나의 파라미터로 볼 수 있으며, 초기에는 랜덤 하게 설정하고 나중에 학습을 통해서 업데이트를 진행한다. 

 

 

 

• 입력층에는 각 단어의 벡터 정보가 순차적으로 입력되는데 각 단계를 time step 이라고 부른다. 

즉, 처음에는 the, 두번째는 movie, 세번째는 is, 네번째는 fun에 대한 벡터 정보가 입력된다. 

따라서 RNN의 입력 노드의 수는 벡터의 원소 수(=차원의 수)와 동일하다. 위 그림에서는 설명 편의를 위해 편향 노드가 제외되었다.

 

• RNN층 노드 수는 사용자가 결정한다. RNN 층이 출력하는 값을 Hidden state라고 함. 

 

 

 

 time step 0 에서는 첫 번째 단어인 'the'에 대한 임베딩 벡터가 입력되고, RNN층에서 hidden state vector인 h0이 출력된다. RNN층 노드의 활성화 함수는 수로 tanh 함수가 많이 사용된다. 

 

 

두 번째 단계인 time step 1에서는 입력 값에 두 가지 정보가 입력된다.

 

1. time step 1(두 번째 단계)에 입력되는 단어의 임베딩 정보 

2. time step 0(첫 번째 단계)에서 RNN층이 출력한 hidden state vector 정보 

 

 즉, 두 번째 단어에 대한 정보와 앞선 단어에 대한 정보가 동시에 사용되고 이를 통해서 새로운 hidden state vector인 h1가 계산된다. 

 

 

 

 

RNN 구조

 이 방식으로 출력을 반복하게 되면 Time step 3에서는 단어 3에 대한 정보가 가장 많이 포함되어 있고,  이전 단계로 갈수록 정보가 적게 반영된다. 

(time step=0 에서는 hidden state vector의 값이 모두 0으로 초기화해서 입력한다)

 

 감성 분석을 목적으로 분류 모델을 만든다고  할 때, 최종 출력층에 전달되는 값은 마지막에 계산된 hidden state vector이다.

위 그림에서는 RNN 에서 출력된 히든 벡터가 곧바로 출력노드로 연결되지만, 성능 향상을 위해서 은닉층을 추가할 수도 있다. 

yi 벡터는 i번째 문서에 대한 결과값. 

 

 

 


📚 Reference

• 연세대학교 디지털사회과학센터(CDSS) 파이썬을 활용한 딥러닝 기초 워크숍, 이상엽 교수님 

 

 

 

 

 

 

댓글