즉, 순환 신경망은 여러 개의 데이터가 순서대로 입력되었을 때 앞서 입력 받은 데이터를 잠시 기억해놓고, 그 기억된 데어가 얼마나 중요한지 별도의 가중치를 줘서 다음 데이터로 넘긴다.
그래서 다음 층을 넘어가기 전에 같은 층을 맴도는 것처럼 보이기 때문에 순환 신경망이라고 부른다.
다수 입력 단일 출력(감정분석), 단일 입력 다수 출력(사진 캡션), 다수 입력 다수 출력(번역) 등 다양한 상황에서 적용할 수 있다.
LSTM Network: 장단기 기억 네트워크
RNN의 결과를 개선하기 위한 노력 중 하나가 LSTM 방법을 함께 사용하는 것이다.
LSTM은 한 층 안에서 반복을 많이 해야하는 RNN 특성상 기울기 소실 문제라는 단점을 보완한 방법이다.
반복되기 전에 다음 층으로 기억된 값을 넘길지 안 넘길지 관리한다.
1. cell state : 정보가 바뀌지 않고 그대로 흐르도록 하는 역할
2. forget gate : cell state로부터 어떤 정보를 버릴 것인지 정하는데,
시그모이드 결과로 0이면 버리고 1이면 모든 정보를 보존한다.
3. input gate : 현재 정보를 저장할지 결정하는 과정
4. update : 과거 cell state(Ct-1)를 새로운 state로(Ct)로 업데이트
5. output gate : 어떤 값을 출력할지 결정
Bi-LSTM: 양방향 장단기 기억 네트워크
RNN과 LSTM은 은닉 계층에 과거의 데이터 정보를 기억하기 때문에 시계열 예측에 적합하다.
그러나 기존 LSTM이 입력 순서를 시간 순서대로 입력하기 때문에 직전 패턴을 기반으로 수렴하는 경향을 보이는데 이러한 단점을 보완한다.
출력값에 대한 손실을 최소화하는 과정에서 모든 파라미터들이 동시에 학습되는 종단간 학습이 가능하다.
단어와 구(phrase)간 유사성을 입력벡터에 내재화해 성능이 개선되었다.
LSTM의 기본적인 성능과 Atention 메커니즘을 도입하여 데이터의 길이가 길어져도 성능저하를 막을 수 있다.