핵심 인사이트 (3줄 요약)
- 본질: RNN(Recurrent Neural Network)은 문장이나 주식 차트처럼 '시간의 흐름(순서)'이 있는 데이터를 처리하기 위해, 방금 자신이 내뱉은 출력값을 다음번 입력값과 함께 다시 자기 자신에게 집어넣어 과거의 기억(Hidden State)을 유지하는 순환 고리 구조의 신경망이다.
- 가치: 기존 신경망(MLP, CNN)은 어제 데이터와 오늘 데이터를 아예 별개의 사건으로 취급(무기억성)했지만, RNN은 "어제의 날씨가 오늘의 날씨에 영향을 준다"는 시계열의 철학을 네트워크 내부에 무한 루프로 엮어내어 기계에게 처음으로 '문맥(Context)'을 이해시켰다.
- 판단 포인트: RNN이 오차를 수정하려면 시간의 고리를 거꾸로 거슬러 올라가며 미분을 곱해야 하는 **BPTT(시간을 거슬러 올라가는 역전파)**를 써야 하는데, 이 과정에서 기울기가 0으로 증발해버려 사실상 10스텝 이전의 먼 과거는 전혀 기억하지 못하는 치명적 단기 기억 상실증을 앓고 있다.
Ⅰ. 개요 및 필요성
"나는 어제 맛있는 피자를 ___." 이 문장의 빈칸을 채우려면 기계는 앞의 단어들('나는', '어제', '맛있는')을 차례대로 읽고 그 뉘앙스를 기억하고 있어야 한다. 기존의 다층 퍼셉트론(MLP)이나 CNN은 고양이 사진을 백 장 보여줘도, 1번 사진과 2번 사진은 아무런 상관이 없다고 생각하는 단기 기억 상실증 환자였다. 문장을 주면 첫 단어인 "나는"을 보고 출력을 낸 뒤, 그 기억을 완전히 지워버리고 두 번째 단어인 "어제"를 새롭게 분석했다. 문맥이 이어질 리 없었다.
"방금 분석한 첫 단어의 기억(결과물)을 지우지 말고, 두 번째 단어를 분석할 때 참고하라고 같이 던져주면 안 될까?" 이 아이디어에서 출발하여, 자기 자신의 과거 출력값을 현재의 입력값과 섞어서 계속 뱅글뱅글 맴돌게 만드는(Recurrent) 시계열 딥러닝의 위대한 조상, RNN이 탄생했다.
📢 섹션 요약 비유: 기존 AI가 어제 일어난 일을 매일 까먹는 영화 <메멘토>의 주인공이라면, RNN은 오늘 밤 잠들기 전 "오늘 이런 일이 있었지"라고 수첩(Hidden State)에 적어두고, 내일 아침 그 수첩을 읽고 하루를 시작하는 일기 쓰기 장인이다.
Ⅱ. 아키텍처 및 핵심 원리
RNN은 하나의 은닉층 뉴런(Cell)을 시간의 흐름(Time Step)에 따라 끝없이 펼쳐놓은 아키텍처다.
┌────────────────────────────────────────────────────────┐
│ [ RNN (순환 신경망)의 시간의 고리 파이프라인 ] │
├────────────────────────────────────────────────────────┤
│ 1. 은닉 상태 (Hidden State, h_t) │
│ - 과거의 기억을 압축해서 담고 있는 텐서(메모장) │
│ - 현재 입력(x_t)과 이전 시간의 기억(h_{t-1})을 가중치와 곱함│
│ - 수식: h_t = Tanh( W_x * x_t + W_h * h_{t-1} ) │
│ │
│ 2. 가중치 공유 (Weight Sharing) │
│ - 시간이 100초 흘러도(100스텝), RNN이 쓰는 가중치(W)는 오직 │
│ 단 1세트뿐임! (똑같은 W로 100번을 돌림 -> 메모리 절약) │
│ │
│ 3. BPTT (Backpropagation Through Time) │
│ - 정답을 틀렸을 때 오차를 수정하려면, 과거로 거슬러 올라가야 함│
│ - 10스텝을 거슬러 올라간다는 건, 같은 가중치 W를 10번 미분해서 │
│ 연쇄 법칙으로 계속 곱해나간다는 뜻 (기울기 소실의 원흉!) │
└────────────────────────────────────────────────────────┘
- 시간 펼치기 (Unfolding in Time): RNN 그림을 보면 화살표가 뱅글뱅글 도는 하나의 노드지만, 수학적으로 연산할 때는 시간순으로 옆으로 길게 쫙 펼쳐서(Unfold) 일반 딥러닝처럼 계산한다. 10개의 단어를 읽었다면 10층짜리 딥러닝이 되는 것이다.
- 다양한 I/O 형태 지원:
- One-to-Many: 사진 1장을 보고 "강아지가 뛰어논다"라는 여러 단어(캡션) 뱉기.
- Many-to-One: 영화 리뷰 문장 100단어를 쭉 읽고 긍정/부정 1개로 분류하기.
- Many-to-Many: "I love you" (3개) -> "나는 너를 사랑해" (4개) 번역하기 (Seq2Seq).
📢 섹션 요약 비유: 컨베이어 벨트 앞에서 물건을 조립하는 작업자(RNN 셀)다. 1번 부품을 조립하고 그걸 2번 부품과 합치고, 그걸 다시 3번 부품과 합친다. 작업자는 1명이지만(가중치 공유), 시간이 흐름에 따라 물건은 점점 거대하고 완벽한 문맥의 덩어리로 합쳐진다.
Ⅲ. 비교 및 연결
기울기 소실(Vanishing Gradient) 문제를 해결하기 위한 시계열 모델들의 진화를 비교해 본다.
| 비교 항목 | Vanilla RNN (순수 RNN) | LSTM (장단기 메모리) | Transformer (트랜스포머) |
|---|---|---|---|
| 기억력 한계 | 대략 10~20 스텝 이전 데이터는 완전히 까먹음 | 100~200 스텝 이전 데이터도 꽤 잘 기억함 | 수만 스텝 전의 데이터도 무한정 기억함 |
| 기울기 소실 원인 | BPTT 중 가중치(W)가 반복 곱셈되며 소실됨 | 덧셈(+) 기반의 **셀 상태(Cell State)**로 방어함 | 시간 개념을 없애고 한 번에 봐서 소실 없음 |
| 병렬 처리(속도) | 최악 (순서대로 1칸씩 읽어야 함) | 최악 (순서대로 1칸씩 읽어야 함) | 최상 (문장을 통째로 한 번에 읽음) |
| 활용도 | 장난감, 튜토리얼용으로 전락 | 소규모 시계열 (센서, 로그) 베이스라인 | 자연어 처리(LLM)의 절대 제왕 |
순수 RNN은 10단어만 전에 있던 주어(Subject)도 까먹어버린다. 그래서 "소년이... (중략) ... 달린다"라는 문장을 만들 때, 주어가 소년인지 소녀인지 잊어버리고 "소년이 달린다 그녀는" 이라며 외계어를 뱉는다. 이 치명적인 건망증을 완벽한 구조적 수술로 고쳐낸 것이 바로 뒤이어 배울 LSTM이다.
📢 섹션 요약 비유: 순수 RNN은 암기력이 붕어 수준이라 앞장에서 읽은 내용을 뒷장으로 넘어가면 다 까먹는다. LSTM은 중요한 내용을 형광펜으로 칠해두는 똑똑한 학생이고, 트랜스포머는 아예 책의 모든 페이지를 벽에 다닥다닥 붙여놓고 한눈에 쳐다보는 천재다.
Ⅳ. 실무 적용 및 기술사 판단
실무 적용 시나리오:
온도, 습도, 풍속 등 10년 치 날씨 데이터로 내일의 온도를 예측한다(다변량 시계열 회귀). 데이터 과학자는 파이토치로 nn.RNN을 짜본다. 모델은 최근 10일 치 날씨의 변동(짧은 파동)은 기가 막히게 따라가지만, "여름 다음엔 가을이 온다"는 365일(장기 주기성)의 거대한 흐름을 전혀 학습하지 못하고 Loss가 요동친다. BPTT 과정에서 365번을 거슬러 올라가며 기울기(에러)가 0으로 산화되었기 때문이다. 기술사는 즉시 이 멍청한 바닐라 RNN을 폐기하고 파이프라인을 LSTM이나 **TCN(시간 합성곱 네트워크)**으로 전면 교체하여 장기 기억의 숨통을 틔워준다.
기술사 판단 포인트 (Trade-off): 시계열 아키텍처 설계 시 기술사는 'Truncated BPTT'와 'Hidden State 초기화' 딜레마를 관리해야 한다.
- 문장이 1만 단어(스텝)짜리 소설이라면, 역전파를 할 때 1만 번을 곱해야 하므로 연산 시간이 우주로 가고 기울기 폭발(Exploding)이 일어난다.
- 기술사는
seq_len=50정도로 잘라서, **앞에서부터 50단어씩만 읽고 강제로 역전파(Truncated BPTT)**를 시키는 안전장치를 걸어야 한다. - 이때 주의할 점은, 역전파는 50번에서 뚝 끊더라도, 앞 50단어를 읽으면서 쌓아둔 메모리(Hidden State)는 초기화(Zero)하지 않고 다음 51번째 단어 배치를 읽을 때 스윽 물려주어(Stateful RNN) 문맥이 1만 단어 끝까지 이어지도록 하드코딩해야 한다는 점이다.
📢 섹션 요약 비유: 1만 킬로미터를 뛰는 마라톤(역전파)은 불가능하다. 그래서 50km마다 구간을 잘라서 뛰게 하되(Truncated BPTT), 다음 구간 주자에게 반드시 앞서 뛴 주자의 "기록과 전략이 담긴 바통(Hidden State)"을 넘겨주어 전체 코스의 흐름이 끊기지 않게 하는 이어달리기 전략이다.
Ⅴ. 기대효과 및 결론
RNN(순환 신경망)은 인공지능 역사상 처음으로 기계에게 "시간(Time)"이라는 4차원의 개념을 이해시킨 위대한 건축물이다. 기계가 개별적인 단어를 넘어 문장 전체의 '뉘앙스와 문맥'이라는 보이지 않는 흐름을 포착하게 된 것은 오직 이 뱅글뱅글 도는 순환 고리(Recurrence) 덕분이었다.
결론적으로 순수 RNN(Vanilla RNN)은 너무 짧은 기억력 탓에 박물관으로 직행했지만, 그 "과거의 기억을 현재로 넘겨준다"는 철학은 LSTM, GRU를 거쳐 현재 AI 기술의 근간이 되었다. 기술사는 RNN을 낡은 기술로 치부할 것이 아니라, 과거 데이터가 1초 단위로 쌓이는 메모리 제한적인 엣지(Edge IoT) 환경에서는 무거운 트랜스포머 대신 이 가벼운 RNN의 변종(GRU 등)을 튜닝하여 배치하는 실용적인 안목을 지녀야 한다.
📢 섹션 요약 비유: 바닐라 RNN은 1분 전의 일만 기억하는 붕어 지능의 모델이라 지금은 아무도 쓰지 않지만, 인공지능에게 처음으로 "과거를 기억하며 글을 읽는 법"을 가르쳐준 위대한 훈민정음과 같은 존재다.
📌 관련 개념 맵
- 상위 개념: 딥러닝 시계열 처리 (Time-Series Deep Learning)
- 하위 개념: 은닉 상태 (Hidden State), 순환 고리 (Recurrent), BPTT (Backpropagation Through Time)
- 연결 개념: LSTM (장단기 메모리), 기울기 소실 (Vanishing Gradient), 트랜스포머 (Transformer)
👶 어린이를 위한 3줄 비유 설명
- "우리 학교..." 다음에는 "급식이 맛있어"가 나올 수도 있고 "운동장이 넓어"가 나올 수도 있어요.
- 옛날 로봇은 첫 단어인 "우리"를 읽고 나면, 두 번째 단어인 "학교"를 읽을 때 앞의 단어를 홀라당 까먹어버렸어요.
- RNN 마법사는 로봇에게 "비밀 수첩"을 줘서, 방금 읽은 단어의 느낌을 적어두고 다음 단어를 읽을 때 수첩을 참고해서 이어지는 멋진 문장을 만들게 도와줬답니다!