📚 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가 계산된다.
이 방식으로 출력을 반복하게 되면 Time step 3에서는 단어 3에 대한 정보가 가장 많이 포함되어 있고, 이전 단계로 갈수록 정보가 적게 반영된다.
(time step=0 에서는 hidden state vector의 값이 모두 0으로 초기화해서 입력한다)
감성 분석을 목적으로 분류 모델을 만든다고 할 때, 최종 출력층에 전달되는 값은 마지막에 계산된 hidden state vector이다.
위 그림에서는 RNN 에서 출력된 히든 벡터가 곧바로 출력노드로 연결되지만, 성능 향상을 위해서 은닉층을 추가할 수도 있다.
yi 벡터는 i번째 문서에 대한 결과값.
📚 Reference
• 연세대학교 디지털사회과학센터(CDSS) 파이썬을 활용한 딥러닝 기초 워크숍, 이상엽 교수님
'머신러닝, 딥러닝 > 딥러닝' 카테고리의 다른 글
CNN 사전학습 모델을 이용한 이미지 분류 (3) | 2022.01.18 |
---|---|
CNN 사전학습 모델 - LeNet / AlexNet / VGGNet / InceptionNet / ResNet / DenseNet / MobileNet / EfficientNet (0) | 2022.01.17 |
CNN(합성곱 신경망) 기본 (0) | 2022.01.13 |
딥러닝 기본 개념 - 신경망 구조, 활성화 함수, Optimizer (0) | 2022.01.11 |
딥러닝 기본 개념 - 비용함수, 경사하강법, 규제 (1) | 2022.01.10 |
댓글