순환 신경망 - RNN (Recurrent Neural Network)
- 신경망 : 입력층 > 은닉층 > 출력층을 지나면서 가중치를 계산해 나가는 구조
- RNN은 순차적인 데이터(예: 텍스트, 음성, 시계열 데이터)를 처리하는데 특화됨
- 대상이 되는 데이터 : 순차 데이터(Sequential Data)
- 시간적, 순차적(순서) 특성을 가진 데이터
- 순서가 변경될 경우 고유의 특성을 잃어버리는 특징이 있음.
한가지 예로, ‘도’와 ‘시’라는 글자로 ‘도시’와 ‘시도’라는 단어들의 조합이 가능하지만 이들은 서로 다른 의미를갖는 것과 같음- 종류 : 텍스트 데이터, 시계열 데이터(주가, 환율 등)
RNN의 기본 원리
- 과거의 기억을 저장 : 여러 개의 데이터가 순서대로 입력되었을 때 앞서 입력 받은
데이터의 연산 결과를 기억(저장)한다- 과거의 기억을 현재 학습에 반영 : 기억된 데이터(과거)를 가지고 현재 입력과 함께
연산한다
다른 신경망과의 차이
- 과거의 결과가 현재 입력 값에 영향을 준다
- 비슷한 두 문장이 입력되어도 과거의 차이로 인해서 두 문장의 차이를 반영할 수 있다
RNN의 기본 개념
- 순환(recurrent) 구조로써 과거의 정보를 기억하고, 현재 학습에 반영됨(현재 시점의 입력과 결합하여 출력에 반영)
- 각 단어를 시간의 흐름에 따라 차례로 입력되며, 앞서 본 단어들을 바탕으로 다음 단어를 처리함
- RNN의 입력층 (Embedding layer)
- 시점 에서의 입력 를 받음 (텍스트의 경우 단어 벡터)
- RNN의 은닉층 (RNN layer)
- 은닉상태(hidden state) 는 시점 에서의 입력 와 이전 시점 의 은닉 상태 를 결합 하여 계산됨
- 는 와 현재 입력를 결합하여 다음 시점에 전달되며, 이전 모든 시점에서 축적된 정보를 포함하여 은닉 상태를 유지함
- RNN의 출력층 (Dense layer)
- RNN의 출력은 주어진 문제에 따라 달라짐
- 마지막 은닉 상태 를 기반으로 결과를 생성함
- 데이터 전처리(토큰화 등)을 할때 데이터 벡터사이즈를 동일하게 맞춰주는것이 중요함
- RNN의 한계
- RNN은 시간 순서대로 데이터를 처리하기 때문에 시퀀스가 길어질수록 과거의 정보가 점차 희석되거나 잊혀지는 문제가 발생함
- RNN의 역전파 과정에서 시간축을 따라 기울기를 전파할때 시퀀스가 길어지면서, 기울기가 소실되거나, 지나치게 커져 가중치의 업데이터가 제대로 이루어 지지 않게 될 수 있음
- 정리
- 반복적이고 순차적인 데이터(Sequential) 학습에 적합한 인공신경망
- 결과물 : text data → 문장(문단) 임베딩 벡터 → 전체 text data에 대한 임베딩 행렬
참고자료