본문 바로가기
Deep Learning

순환신경망 RNN (Recurrent Neural Network)

by wave_m 2020. 9. 21.
728x90

RNN이란 ?

- 계층의 출력이 순환하는 인공신경망

- 은닉 계층의 결과가 다음 계층으로 넘어갈 뿐 아니라 자기 계층으로 다시 들어오는 순환 방식을 사용

- 시계열 정보처럼 앞뒤 신호가 서로 상관도가 있는 경우 인공신경망의 성능을 더 높일 수 있음

- 순환 처리를 통해 문장, 음성 등과 같은 시계열 데이터 처리에 적합

- ex. LSTM(Long-Term SHORT TERM MEMORY)

 

 

RNN의 개념과 구조 ?

- RNN은 신호를 순환하여 시계열 신호와 같이 상호 관계가 있는 신호를 처리하는 인공신경망

- 이런 단순한 방식으로 구현하면 경우에 따라 출력된 신호가 계속 순환하면 활성화 함수를 반복적으로 거치게 되어서 경삿값을 구하기가 힘들기에 학습이 제대로 이루어지지 않을 수도 있음. 경사는 학습 방향을 결정하는 연산자로서 활성화 함수랑 연계되는데 활성화 함수는 신호가 커지면 포화가 되는 특성이 있기에 입력값이 조금만 커져도 미분값이 매우 작아짐. 이때 순환하여 활성화 함수를 반복해서 지나다 보면 미분값이 0에 매우 가까워져 학습이 어려워짐. 이러한 문제를 없애기 위해서는 곱셈이 아닌 덧셈을 사용해 과거의 값을 처리하는 것이 유리.

- LSTM은 이런 기본적인 RNN의 문제점을 개선하고자 제안된 RNN의 방법

 

 

LSTM 구조 및 동작 ?

- 입력 조절 벡터, 망각 벡터, 출력 조절 벡터를 이용해 입력과 출력 신호를 게이팅(Gating)

- 게이팅은 신호의 양을 조정해주는 기법

- 입력 조절 벡터 : 입력 신호가 tanh 활성화 함수의 완전 연결 계층을 거친 이후의 값을 조절

- 망각 벡터 : 과거 입력의 일부를 현재 입력에 반영

- 출력 조절 벡터 : 과거의 값과 수정된 입력값을 고려래 tanh 활성화 함수로 게이팅을 수행

- 게이팅된 최종 결과가 출력 조절 벡터로 나가는데 이 최종 결과는 데이터 처리를 위한 tanh 계층 그리고 게이팅을 위한 새 시그모이드 계층에 다시 입력으로 들어감

- LSTM은 망각(forget) 입력, 출력 게이팅을 이용하여 우수한 시계열 데이터 처리 성능을 보이고 있어 음성 인식, 문장 번역 등에 활발히 사용

 

 

RNN의 구조 (출처 : 한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛)
LSTM의 구조도 (출처 : 한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛)

 

 

reference ? 

한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛

 

 

 

728x90