RNN (Recurrent Neural Network)

RNN(Recurrent neural network)은 과거의 정보를 사용하여 현재 및 미래의 입력에 대한 신경망의 성능을 개선하는 딥러닝 신경망입니다. RNN의 독특한 점은 신경망에 은닉 상태 및 루프가 있다는 것입니다. 루프 구조를 통해 신경망은 은닉 상태에 과거의 정보를 저장하고 시퀀스에 대해 연산할 수 있습니다.

이러한 특징으로 인해 recurrent neural network은 다음과 같은 다양한 길이의 순차 데이터가 있는 문제를 풀기에 적합합니다.

RNN의 셀 하나를 펼친 모습. 데이터 시퀀스에 대해 정보가 신경망 안에서 어떻게 움직이는지 볼 수 있습니다. 입력은 셀의 은닉 상태에 의해 계산되어 출력을 생성하고, 은닉 상태는 다음 시간 스텝으로 전달됩니다.

RNN은 과거의 정보를 현재 입력에 어떻게 적용할까요? 이 신경망에는 두 개의 가중치 세트가 있습니다. 하나는 은닉 상태 벡터에 대한 가중치 세트이며, 다른 하나는 입력에 대한 가중치 세트입니다. 신경망은 훈련 중에 입력과 은닉 상태, 두 가지 모두에 대한 가중치를 학습합니다. 구현이 되면 출력은 현재 입력, 그리고 이전 입력을 기반으로 하는 은닉 상태를 기반으로 합니다.

LSTM

실제로 단순한 RNN은 장기적인 종속성 학습에서 문제를 겪습니다. RNN은 일반적으로 역전파를 통해 훈련되며, 여기서 ‘소실’ 또는 ‘폭주’하는 기울기 문제에 직면할 수 있습니다. 이러한 문제는 신경망 가중치가 너무 작아지거나 너무 커지는 현상을 유발하기 때문에 장기적인 관계를 학습하기에는 효과적이지 않습니다.

이 문제를 극복하는 특수한 recurrent neural network 유형이 LSTM(장단기 기억) 신경망입니다. LSTM 신경망은 부가적인 게이트를 사용하여 은닉 셀의 어느 정보가 출력과 다음 은닉 상태까지 보내지는지를 제어합니다. 이를 통해 신경망은 데이터의 장기적인 관계를 더 효과적으로 학습할 수 있습니다. LSTM은 일반적으로 구현되는 RNN 유형입니다.

RNN(왼쪽)과 LSTM 신경망(오른쪽)의 비교

MATLAB®에는 텍스트, 영상, 신호 및 시계열 데이터로 LSTM 신경망을 훈련 및 구현하기 위한 모든 기능이 완비되어 있습니다. 다음 섹션에서는 MATLAB을 사용한 RNN의 응용 사례 및 몇 가지 예제를 살펴보겠습니다.

RNN 응용 사례

자연어 처리

언어는 본질적으로 순차적이며, 텍스트 조각의 길이는 다양합니다. 따라서 문장의 단어를 맥락화하는 방법을 학습할 수 있는 RNN은 이 영역의 문제 해결에 있어 탁월한 툴입니다 . 한 가지 예를 들자면, 단어와 구의 의미를 범주화하는 방법인 감성 분석이 있습니다. 기계 번역 또는 알고리즘을 사용한 언어 간 번역은 또 다른 일반적인 응용 사례입니다. 먼저 단어를 텍스트 데이터에서 숫자 시퀀스로 변환해야 합니다. 이를 위한 효과적인 방법은 단어 임베딩 계층입니다. 단어 임베딩은 단어를 숫자 벡터로 매핑합니다. 아래 예제에서는 단어 임베딩을 사용하여 단어 감성 분류기를 훈련시키고  MATLAB의 wordcloud 함수를 사용하여 결과를 표시합니다.

MATLAB의 감성 분석 결과. 워드 클라우드는 분류기가 새로운 텍스트 그룹의 감성을 판단할 수 있도록 훈련 과정의 결과를 표시합니다.

다른 분류기 예제에서 MATLAB은 RNN을 사용하여 텍스트 데이터를 분류해서 제조상의 결함 유형을 판단합니다.  MATLAB은 로마 숫자를 이해하도록 신경망을 훈련시키기 위한 기계 번역 예제에도 사용됩니다.

신호 분류

신호는 일정 시간에 걸쳐 센서로부터 수집되는 경우가 많으므로 본질적으로 순차적인 데이터의 또 다른 예입니다. 자동 신호 분류는 대용량 데이터셋에 필요한 수작업 시간을 줄이거나 실시간 분류를 가능하게 해주므로 유용합니다. 원시 신호 데이터를 심층 신경망에 공급하거나 사전 처리하여 주파수 성분과 같은 다른 특징에 집중할 수 있습니다. 특징 추출은 전기 심장 신호 예제의 경우와 같이 신경망 성능을 크게 개선시켜줄 수 있습니다. 아래는 RNN에서 원시 신호 데이터를 사용하는 예제입니다.

MATLAB에서 LSTM을 이용하여 센서 데이터 분류하기.

비디오 분석

비디오는 본질적으로 영상의 시퀀스이므로 RNN은 비디오에도 효과적입니다. 신호를 사용한 작업과 마찬가지로 시퀀스를 RNN으로 공급하기 전에 특징 추출을 하는 것이 좋습니다. 이 예제에서는 각 프레임에 대한 특징 추출을 위해 사전 훈련된 GoogleNet 모델(컨벌루션 신경망)이 사용됩니다. 아래에서 신경망 아키텍처를 볼 수 있습니다.

LSTM을 사용한 비디오 분류의 기본 아키텍처.