RNN이란? 순서와 기억을 처리하는 순환 신경망의 원리
지난 글에서는 CNN이 이미지에서 특징을 찾고 분류 결과를 만드는 전체 구조를 살펴봤습니다. CNN이 한 장의 이미지 안에 있는 공간적 특징을 잘 다룬다면, 단어가 이어지는 문장이나 시간에 따라 변하는 데이터는 어떻게 처리할까요?
이처럼 순서가 중요한 데이터를 다루기 위해 등장한 대표적인 신경망이 RNN(Recurrent Neural Network, 순환 신경망)입니다. 이번 글에서는 RNN이 이전 정보를 어떻게 다음 단계로 전달하는지, 어디에 활용할 수 있는지, 그리고 어떤 한계가 있는지 쉽게 알아보겠습니다.
순서가 중요한 데이터란?
문장은 같은 단어를 사용하더라도 순서에 따라 뜻이 달라질 수 있습니다. “고양이가 강아지를 쫓는다”와 “강아지가 고양이를 쫓는다”는 등장하는 단어는 비슷하지만 의미는 다릅니다.
주가, 기온, 심박수 같은 시계열 데이터도 이전 값과 현재 값의 흐름이 중요합니다. 이런 데이터를 각 항목이 서로 관계없는 것처럼 따로 처리하면 전체 맥락을 놓치기 쉽습니다.
RNN은 데이터를 한 단계씩 순서대로 읽으면서 앞에서 얻은 정보를 다음 단계에 함께 전달합니다.
RNN의 핵심은 순환하는 기억입니다
일반적인 신경망은 입력을 받아 출력을 만든 뒤 그 계산을 끝냅니다. 반면 RNN은 현재 입력을 처리한 결과의 일부를 다음 입력을 계산할 때 다시 사용합니다. 구조 안에서 정보가 순환한다고 해서 순환 신경망이라는 이름이 붙었습니다.
이때 이전 단계의 정보를 요약해 담는 값을 은닉 상태(Hidden State)라고 합니다. 은닉 상태는 RNN의 짧은 메모장과 비슷합니다.
- 현재 입력: 지금 읽고 있는 단어나 현재 시점의 값
- 이전 은닉 상태: 앞부분에서 얻은 정보를 요약한 값
- 새 은닉 상태: 현재 입력과 이전 정보를 함께 반영한 결과
- 출력: 현재 단계에서 필요한 예측값
시간축으로 펼쳐 보면 더 쉽게 보입니다
RNN 그림에서는 하나의 신경망에 화살표가 되돌아오는 모습으로 표현되지만, 시간축으로 펼치면 같은 계산 장치가 여러 단계에서 반복되는 구조로 볼 수 있습니다.
- 첫 번째 입력과 초기 은닉 상태를 이용해 첫 결과를 계산합니다.
- 새로 만든 은닉 상태를 두 번째 단계로 전달합니다.
- 두 번째 입력과 전달받은 은닉 상태를 함께 계산합니다.
- 이 과정을 데이터의 마지막 순서까지 반복합니다.
각 단계에서 같은 가중치를 공유하기 때문에 문장의 길이나 시계열의 단계가 달라져도 같은 처리 규칙을 반복해서 적용할 수 있습니다.
문장을 읽는 RNN의 예
“오늘 날씨가 매우”라는 문장을 순서대로 읽는다고 생각해보겠습니다. RNN은 “오늘”을 읽은 상태를 다음 단계로 넘기고, “날씨가”를 읽으면서 이전 정보를 갱신합니다. 이어서 “매우”까지 읽으면 앞의 문맥을 반영해 다음에 “좋다”, “춥다” 같은 단어가 올 가능성을 계산할 수 있습니다.
중요한 점은 RNN이 앞의 문장을 그대로 저장하는 것이 아니라, 학습을 통해 필요하다고 판단한 정보를 은닉 상태라는 숫자 묶음에 요약한다는 것입니다.
RNN은 어디에 사용될까?
RNN은 순서가 있는 여러 문제에 활용되어 왔습니다.
- 자연어 처리: 문장 분류, 다음 단어 예측, 번역
- 음성 처리: 시간에 따라 이어지는 소리 분석
- 시계열 예측: 센서값, 수요, 기온 등 시간 흐름 분석
- 이상 탐지: 평소와 다른 순서 패턴 발견
다만 오늘날의 실제 시스템에서는 기본 RNN만 사용하는 대신 LSTM, GRU 또는 Transformer 같은 다른 구조를 선택하는 경우도 많습니다. 어떤 구조가 적합한지는 데이터 길이, 필요한 정확도, 계산 비용과 목적에 따라 달라집니다.
RNN의 가장 큰 한계
오래전 정보를 기억하기 어렵습니다
기본 RNN은 가까운 앞부분의 정보는 활용할 수 있지만, 문장이 길어질수록 오래전 정보가 약해질 수 있습니다. 예를 들어 문장 첫 부분의 주어를 한참 뒤의 동사와 연결해야 한다면 중요한 정보가 중간 계산을 거치며 희미해질 수 있습니다.
학습 과정에서는 기울기가 지나치게 작아지는 기울기 소실이나 반대로 너무 커지는 기울기 폭주가 발생할 수도 있습니다. 이 때문에 멀리 떨어진 정보 사이의 관계를 배우는 장기 의존성 문제가 생깁니다.
순차 계산은 병렬 처리에 불리합니다
두 번째 단계는 첫 번째 단계의 은닉 상태를 받아야 하고, 세 번째 단계는 두 번째 단계의 결과를 기다려야 합니다. 따라서 모든 위치를 동시에 계산하기 어렵고 긴 데이터를 처리할수록 시간이 늘어날 수 있습니다.
RNN과 CNN은 무엇이 다를까?
- CNN: 이미지처럼 공간에 배치된 특징을 찾는 데 강점이 있습니다.
- RNN: 문장이나 시계열처럼 순서에 따라 이어지는 관계를 처리하도록 설계되었습니다.
둘 중 하나가 항상 더 좋은 것은 아닙니다. 데이터의 구조가 다르기 때문에 문제에 맞는 방식을 선택해야 하며, 실제 모델에서는 두 구조를 결합하기도 합니다.
한눈에 정리하기
- RNN은 순서가 있는 데이터를 한 단계씩 처리하는 신경망입니다.
- 은닉 상태를 통해 이전 정보를 요약해 다음 단계로 전달합니다.
- 문장, 음성, 센서와 같은 연속 데이터에 활용할 수 있습니다.
- 기본 RNN은 오래전 정보를 유지하기 어렵고 순차 계산으로 인해 병렬 처리에 제약이 있습니다.
- 이러한 장기 기억 문제를 개선하기 위해 LSTM 같은 구조가 등장했습니다.
RNN은 신경망이 과거의 정보를 다음 계산에 활용한다는 중요한 아이디어를 보여줍니다. 다음 글에서는 RNN의 기억 문제를 보완하기 위해 만들어진 LSTM(Long Short-Term Memory)이 어떤 장치로 정보를 기억하고 잊는지 알아보겠습니다.

댓글
댓글 쓰기