[청강] 딥러닝 6 - Recurrent Neural Network (RNN)

방선생·2026년 1월 18일

청강

목록 보기
6/19

한양대학교 박서연 교수님 - github.io

(한양대학교 박서연 교수님의 딥러닝 수업을 청강 하면서 정리한 내용을 바탕으로 교수님의 허락을 받고 작성하였습니다.)


Recurrent Neural Network (RNN)

RNN Code - GitHub


  • RNN의 issue : Gradient 소실문제 > LSTM
  • RNN, LSTM, GRU > 어떤 모델을 썼느냐에 따른 차이

  • FFNN : 일반적인 Deep Learning Model 구조

  • RNN : 입력이 한방향으로 흐르는것이 아닌 자기자신을 스스로 update하는 과정이 생김
    • Time-series data 대한 Processing이 가능
    • 이전에 가지고 있던 time step에 대한 상황을 update할 수 있음 → 순차적으로 들어오는 data에 대한 개념을 적용할 수 있게됨


  • 각 time step에 대해 Weight Matrix가 들어감
    • 각 step에 대한 Gradient를 구하고 저장해 둠 → 다음 time step의 Weight Matrix를 계산할 때 사용함
    • Many-to-Many : 각 time step별로 Loss를 구한 후 마지막에 Final Loss를 계산


Many-to-One

  • 각 state 별 output Prediction을 계산하는것이 아닌 끝까지 처리 후 마지막 time step에서만 Prediction을 진행함

One-to-Many :

  • 하나의 input이 주어지고 각 time step별로 output이 나오게도 가능함

Many-to-Many

  • Many-to-Many는 Many-to-One와 One-to-Many를 합쳐서 사용할 수 있음
  • 이런 구조를 Sequence to Sequence라고함

  • Many-to-One를 Encoder, One-to-Many를 Decoder로 부름
    • transformer 이전 Text generation에서 가장 많이 쓰였던 구조


  • output은 vocabulary size와 동일하게 Scoring해야함

  • 각 W_hh, W_hy, W_xh는 동일함 → sharing됨

  • Output Matrix에서 가장 큰 값(argmax)을 next word로 Prediction함
    • 여기선 greedy하게 고르지만, 다양한 방법론이 존재

  • 기존의 Backpropagation과정은 한 sample마다 진행함
    • 전체 sequence를 전달하여 Loss를 계산한 후의 전체 sequence에 대한 Backpropagation를 진행하면 매우 느리고, 메모리를 많이 잡아먹게됨 → Truncated Backpropagation (즉, 잘라서 진행)

  • 기존의 Backpropagation은 1번만 진행하지만, Truncated Backpropagation는 나눈 만큼 진행하게됨







profile
AI & Robotics

0개의 댓글