Recurrent Neural Network (RNN)
RNN은 순환 신경망이라고 불리며, 과거의 데이터도 학습에 활용하는 딥러닝 알고리즘 입니다. RNN은 몇 단계 전으로 거슬러 올라가 데이터를 반영하는 신경망 알고리즘 입니다. 간단히 설명하자면, 1회의 데이터가 아니라 과거의 데이터도 학습에 활용하는 알고리즘입니다. RNN의 특징은 아래와 같습니다.
RNN 사용 예시
1. 시계열 데이터 학습 가능
2. 음성 파형, 자연어 학습 가능
3. 자연어 처리, 음성 인식과 같은 순서가 있는 데이터 처리
RNN 구조
RNN의 학습은 확률적 경사 하강법을 이용해서 실시간 순환학습 (Real-Time Recurrent Learning : RTRL)이나 시간 기반 오차역전파 (Back Propagation Through : BPTT)를 사용해서 가중치를 업데이트 합니다. RNN은 단일 계층을 반복적으로 수행하는 체인구조의 모듈 연결구조 입니다.
RNN 학습 방법
RTRL : 확률적 경사 하강법 사용 순환학습
BPTT : 시간 기반 오차 역전파
RNN의 장점은 이전 정보를 현재의 문제해결에 활용할 수 있다는 것이며, 단점은 현재 노드 위치와 먼 상태를 사용한 문맥 처리가 어렵다는 것입니다. 이러한 문제를 장기 의존성 문제 (Long-Term Dependency) 라고 합니다.
RNN 단점
Long-Term Dependency : 현재 노드와 먼 과거 상태를 사용한 문맥 처리가 어려움
Long Short-Term Memory (LSTM)
RNN은 걸슬러 올라가는 단계수가 많아지면 기울기 소실 문제가 발생해서 학습이 이루어지지 않습니다. 이러한 문제를 해결한 알고리즘은 LSTM 입니다. LSTM은 신결망의 중간 계층에서의 각 유닛을 LSTM 블록이라는 메모리 유닛으로 치환한 구조입니다. LSTM 블록은 아래와 같습니다.
입력 게이트 : Input Gate
망각 게이트 : Forget Gate
출력 게이트 : Output Gate
입력 게이트와 망각 게이트를 열고 닫으면서 출력을 조정하는 방식으로 학습합니다. LSTM 동작원리는 아래와 같습니다.
1. Forget Gate : 버릴 정보 선택
2. Input Gate : 정보 저장 여부 결정
3. 새로운 스테이트로 업데이트
4. 어떤 값을 출력할지 결정
댓글