본문으로 건너뛰기
실습하기

순서를 기억하는 신경망, RNN

RNN(Recurrent Neural Network)은 데이터의 순서를 중점적으로 고려해 입출력을 처리하는 신경망입니다.

일반적인 신경망은 입력 하나하나를 독립적으로 다루지만, RNN은 이전 입력의 정보를 기억하면서 현재 입력을 함께 처리합니다.


언제 RNN을 사용할까요?

각 요소 간의 순서가 중요한 데이터를 순차 데이터(Sequential Data)라고 하며, 특히 시간 순서에 따라 나열된 값들의 집합을 시계열 데이터(Time Series Data) 라고 합니다.

RNN은 입력 순서가 중요한 순차 데이터를 처리할 때 주로 사용됩니다.

예를 들면 다음과 같습니다.

  • 문장: 글자나 단어가 순서대로 이어질 때 문장의 의미가 완성됩니다.

  • 음성: 소리의 순서를 고려해야 음성의 의미를 파악할 수 있습니다.

  • 주가 분석: 시간에 따라 변화하는 주가를 예측할 때, 이전 시점의 데이터를 활용합니다.

이처럼 시간 흐름이나 맥락이 중요한 데이터에 RNN은 강점을 가집니다.


RNN은 어떻게 작동하나요?

RNN은 입력을 한 번에 모두 처리하지 않고, 하나씩 순서대로 입력받아 처리합니다.

동시에 그때까지 받은 정보를 내부에 저장하고, 다음 입력을 처리할 때 그 정보를 함께 사용합니다.

예를 들어 "나는 학교에 가고 있다"라는 문장을 RNN이 처리한다고 가정해보겠습니다.

'학교에'라는 단어를 해석할 때, 앞에 나온 '나는'을 기억하고 있는 것이 문장을 더 정확히 이해하는 것에 도움이 됩니다.

RNN은 이런 흐름을 반영할 수 있는 구조로 설계되어 있습니다.

RNN의 순차적 처리 예시
입력: 나는 → 학교에 → 가고 → 있다

RNN은 '나는'을 기억한 상태로 '학교에'를 처리하고
'나는', '학교에'를 기억한 상태로 '가고'를 처리합니다.

RNN은 어떤 한계점이 있나요?

RNN은 순서를 고려할 수 있다는 장점이 있지만, 오래된 정보는 잘 기억하지 못한다는 한계가 있습니다.

예를 들어 문장이 길어지거나 오랜 시간이 지나면 앞에서 받은 정보를 잊고, 예측을 제대로 수행하지 못할 수 있습니다.

이러한 문제를 보완하기 위해 RNN을 개선한 구조인 LSTM(Long Short-Term Memory)GRU(Gated Recurrent Unit)가 등장했습니다.

이러한 구조들은 오래된 정보를 효과적으로 기억할 수 있도록 설계되었습니다.


다음 수업에서는 RNN이 어떠한 구조로 이루어져 있는지, 어떤 원리로 순서를 기억하고 정보를 처리하는지 자세히 알아보겠습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!