빅데이터 공부 한 걸음: RNN(순환 신경망)이란?

//빅데이터 공부 한 걸음: RNN(순환 신경망)이란?

빅데이터 공부 한 걸음: RNN(순환 신경망)이란?

최근 딥러닝은 급격히 발전하여 대부분의 분야에서 큰 효과를 내고 있습니다. 데이터 분석 및 예측, 자연어 처리 등의 다양한 분야의 기술 수준을 크게 향상 시키고, 특히 많은 양의 데이터가 있는 빅데이터에서 정보를 학습하는 기술에 탁월한 성능을 보이고 있습니다. 본문에서는 자연어 처리와 예측 등 여러 분야에서 사용되고 있는 머신러닝ㆍ딥러닝 알고리즘 중  RNN에 대해 알아보고자 합니다.

  • RNN(순환신경망) 개념과 구조
  • BPTT(오차역전파) 개념과 계산 방법
  • RNN 한계점과 대책


1. RNN(RNN; Recurrent Neural Networks, 순환신경망)

순환 신경망(RNN; Recurrent Neural Networks)은 인공 신경망의 한 종류로서, 내부의 순환 구조가 포함되어 있기 때문에 시간에 의존적이거나 순차적인 데이터(Sequential data) 학습에 활용됩니다. 내부에 있는 순환 구조에 의해 현재 정보에 이전 정보가 쌓이면서 정보 표현이 가능한 알고리즘으로, 데이터가 순환되기 때문에 정보가 끊임없이 갱신될 수 있는 구조입니다.

RNN 계층은 다음과 같습니다.

RNN 기본구조

위의 왼쪽 그림에서 RNN은 입력값()을 받아 출력값()를 만들고, 이 출력을 다시 입력으로 받는 형태를 보입니다. 오른쪽 그림은 이를 각 타임 스텝(Time step)마다 펼쳐서 Time step 별 입력, 출력, 가중치를 나타냅니다.

계산 식

RNN 계층을 수행하는 계산의 수식은 위와 같습니다. 위 식에서의 입력()을 출력()로 변환하기 위한 가중치 와, RNN 출력을 다음 시각(t)의 출력으로 변환하기 위한 가중치, 편향으로 이루어져 있습니다. 먼저 행렬 곱을 계산한 후, 그 합을 tanh 함수(tanh; Hyperbolic tangent, 쌍곡 탄젠트 함수)를 이용해 변환하여 시간이 출력됩니다. 이 는 다른 계층을 향해 위쪽으로 출력되는 동시에, 다음 시각 의 RNN 계층으로도 출력됩니다.

위의 설명을 좀 더 직관적인 그림으로 나타내자면 다음과 같습니다.

출력 h_t 흐름도

이러한 RNN은 입력값과 출력값이 시퀀스의 길이에 관계없이 받아들일 수 있는 구조이기 때문에 언어 모델링, 기계 번역, 음성 인식, 이미지 캡션 생성(이미지를 보고 텍스트로 주석 달기) 등으로 다양하게 사용이 가능합니다.


2. BPTT(BackPropagation Through Time)

RNN의 학습도 보통 신경망과 같은 순서로 진행되는데 이때 가중치 매개변수의 기울기를 효율적으로 계산할 수 있는 오차 역전파 법(Backpropagation)을 사용합니다. 역전파란 인공 신경망을 학습시키기 위한 일반적인 알고리즘 중 하나로, 역방향으로 해당 함수의 국소적 미분을 곱해 나가는 방법입니다. 내가 출력하고자 하는 값과 실제 모델이 계산한 값이 얼마나 차이가 나는지 계산한 후 그 오차 값을 다시 전달하며 각 노드가 가지고 있는 값(Weight, Bias)들을 업데이트하기 위한 알고리즘입니다.

아래는 (식1-1)의 역전파 계산 그래프입니다.

(식1-1)의 역전파 계산 그래프

계산 그래프(computational graph)는 계산 과정을 그래프로 나타낸 것으로, (식1-1)에서 언급했듯이 위 계산 그래프에서는 입력 값, 가중치는 편향을 의미합니다. 빨간색으로 표기된 수식들이 역전파 계산을 의미하며, 역방향으로 해당 함수의 미분을 곱해 나가는 모습을 보이고 있습니다. 위의 역전파를 기본으로 하여 RNN은 시간 방향으로 펼친 신경망의 역전파를 수행하며 이를 BPTT(BackPropagation Through Time)라고 합니다. BPTT를 그림으로 표현하면 다음과 같습니다.

BPTT(BackPropagation Through Time)

하지만 위의 그림과 같이 진행하게 될 경우 시계열 데이터의 시간 크기가 커지는 것에 비례하여 BPTT가 소비하는 컴퓨팅 자원이 증가하며, 시간 크기가 커지면 역전파 시의 기울기가 불안정해지는 문제가 생깁니다. 이러한 문제를 해결하기 위해 큰 시계열 데이터를 취급할 때는 흔히 신경망 연결을 적당한 길이로 끊습니다. 그리고 이 잘라낸 신경망에서 역전파를 수행하게 되는데 이를 Truncated-BPTT(Truncated-BackPropagation Through Time)라고 합니다.


3. RNN의 한계점 및 대책

RNN은 시계열 데이터의 장기 의존 관계(Long-Term  Dependency)를 학습하는 것에 한계가 있습니다. 길이가 길어짐에 따라 신경망을 하나 통과할 때마다 기울기 값이 조금씩 작아져서, 이전 시각 t까지 역전파 되기 전에 0이 되어 소멸하게 되는 기울기 소실(Gradient Vanishing) 또는 반대로 기울기가 너무 커지는 기울기 폭발(Gradient Exploding) 문제가 일어나기 때문입니다.

RNN 계층이 과거 방향으로 기울기를 전달함으로써 시간 방향의 의존 관계를 학습할 수 있는 것이지만 만약 이 기울기가 중간에 소멸하게 되면 거의 아무런 정보도 남지 않게 되며, 가중치 매개변수는 전혀 갱신되지 않게 됩니다. 반대로 기울기 폭발이 일어나게 되면 [1]오버플로(overflow)를 일으켜 NaN(Not a Number) 같은 값을 발생시키게 됩니다. RNN의 한계점인 기울기 소멸과 폭발의 대책은 다음과 같습니다.
먼저, 기울기 폭발의 대책으로는 기울기 클리핑(Gradients clipping)이라는 기법을 통해 해결할 수 있습니다. 아래는 기울기 클리핑 알고리즘을 [2]의사 코드로 쓴 것입니다.

클리핑 알고리즘 의사 코드

신경망에서 사용되는 모든 매개변수에 대한 기울기를 하나의 기호로 표현한다고 가정할 때, 이를 기호로 임곗값으로 표기했습니다. 위 식은 이 임곗값인 를 초과하면 (식3-1)의 두 번째 줄의 수식과 같이 기울기를 수정하는 것을 말합니다.

다음으로 기울기 소멸을 해결하기 위해서는 RNN 계층의 신경망 구성에 게이트를 추가하는 방법이 있습니다. 최근 게이트가 추가된 RNN으로 많은 신경망 구성이 제안되어 있으며, 그 대표로 LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)가 있습니다. 위와 같은 방법으로 한계점을 채워 나가며, RNN을 기반으로 하여 (나아가 LSTM과 GRU 등을 통해) 언어 모델링, 기계 번역, 음성 인식, 이미지 캡션 생성 등 다양한 기술을 시도해 볼 수 있습니다. 위와 같은 방법으로 한계점을 채워 나가며, RNN을 기반으로 하여 (나아가 LSTM과 GRU 등을 통해) 언어 모델링, 기계 번역, 음성 인식, 이미지 캡션 생성 등 다양한 기술을 시도해 볼 수 있습니다.

[1] 오버플로(overflow) : 데이터 형식의 범위를 넘어가는 값

[2] 의사코드 : 작동하는 논리를 표현하기 위한 언어

참고자료

1. 김인중(2014). “Deep Learning: 기계학습의 새로운 트랜드”, 『한국통신학회지 (정보와통신)』, 31(11), 52-57.

2. 밑바닥부터시작하는딥러닝1

3. 밑바닥부터시작하는딥러닝2

4. CS231n

By |2021-04-28T10:47:33+09:004월 27th, 2021|Categories: 빅데이터|0 Comments

About the Author:

Leave A Comment

Big Data Social Analytics Service

소셜 빅데이터 분석 솔루션인 스마트크런처(Smart Cruncher)는 사용자 반응 지표 데이터를 수집 및 분석하여 효과적인 디지털 마케팅 실행을 위한 시장ᆞ고객분석, 홍보·마케팅 전략수립, 신사업ᆞ신상품 개발 전략 수립, VOCᆞ위기 모니터링 등의 서비스를 제공합니다.

Google Analytics Service

국내의 대기업 및 관공서는 물론 태국, 인도네시아등 해외 구축사례의 경험은골든프래닛의 노하우를 느끼실 수 있습니다. 아래의 구글 애널리틱스 기능을 통해 고객사의 요구사항에 맞는 컨설팅 업무를 진행 합니다.

Marketing Automation

골든플래닛의 디지털 마케팅이란 고객의 니즈가 발생한 시점을 정확히 알고, 고객의 니즈를 정확히 파악하여 고객이 필요로 하는 상품을 전달하는 과정이라고 할 수 있으며, 소비자들과의 커뮤니케이션을 통해 ‘고객 경로 맵(Customer Journey Map)’을 파악하는 것이 중요합니다.