RNN(Recurrent Neural Network)

강민석·2024년 11월 14일

NLP

목록 보기
1/2

RNN

RNN은 Recurrent Neural Network의 약자로 시계열 데이터와 같은 연속적인 정보를 처리할 때 많이 사용되는 신경망이다.

  • 시계열 데이터란?
    시간 순서에 따라 관측된 데이터

RNN은 과거의 정보를 '기억'하면서 새로운 정보를 처리한다

주식 가격의 변동이나 문장 내의 단어들처럼, 순서가 중요한 데이터들을 효과적으로 처리할 수 있다.

CNN은 이미지의 공간적 특징을 추출하여 학습한다면,
RNN은 시계열 데이터의 시간적 특징을 추출하여 학습한다.

RNN의 구조

RNN의 동작

RNN이 하는 일은, 입력벡터 X를 받아서 내부적인 연산을 통해서 출력벡터 Y를 출력한다.

입력벡터 X, 출력벡터 Y는 종류가 다양하다.

  • 글자 단위 입력
  • 악보의 음표
  • 주식의 변화

=> 적절히 처리해서 시계열 데이터로만 쓸 수 있으면 X, Y로 사용이 가능하다

- 시계열 데이터를 처리한다는 것은 어떠한 유익이 있는가?

예를 들어, "bat"라는 단어를 번역할 경우 방망이, 박쥐 등으로 번역이 될 수 있지만 "baseball bat"일 경우 방망이로 번역이 된다.

RNN은 이와같은 뇌의 능력, 기억 memory를 모방하여 "baseball"을 번역할 때 내부 hidden state 'h'가 baseball을 처리한 값들로 세팅이 된다. => baseball을 야구로 번역

  • 단어 단위로 하나씩 입력시킨다 -> baseball먼저 입력

    내부 hidden state인 'h'가 baseball을 기억하여, 다시 'bat'를 번역할 때 영향을 끼친다는 점이 RNN의 핵심이다.

'bat'까지 번역하여 'baseball'과 'bat'를 합쳐놓은 형태의 내부 hidden state인 h가 업데이트되고, 'bat'는 박쥐로 번역될 확률보다, 방망이로 번역될 확률이 높아지게 된다.

RNN의 순전파

  • one-hot vector?
    모든 벡터의 값이 0이고 오직 하나의 값만 1인 벡터

    ex) n=4인 one-hot vector
    "I" = [0,0,0,1] / "love" = [0,1,0,0] / "you" = [1,0,0,0]

순전파 과정

영어 단어를 입력하면 한국어로 번역하는 모델

  • 시간적 순서에 따라 h1이 업데이트 되는 형태로 표현

    <입/출력 벡터는 n=3인 one-hot vector형태>
  • baseball = [1,0,0] / 야구 = [0,1,0]
  • bat = [0,0,1] / 배트 = [1,0,0]

<y1 계산 공식>

<y2 계산 공식>

이전에 계산한 h1값이 h2 계산에 쓰인다는 것을 알 수 있다.

  • tanh는 RNN의 활성화 함수
  • softmax는 신경망의 최종 출력 값을 확률로 바꿔주는 함수

손실값 계산(Loss)

baseball을 넣었을 때인 y1, bat를 넣었을 때인 y2값이 기대하는 출력벡터 값인 "야구 = [0,1,0]", "배트 = [1,0,0]"값과 얼마나 차이나는지 계산한다

"Cross-entorpy"손실 함수를 사용하여 손실값을 계산할 예정

  • Cross-Entropy함수는 Softmax함수와 함께 쓸 때 역전파 계산이 용이해진다

역전파 과정

backpropagation을 이용하여 가중치 업데이트

RNN에서의 backpropagation은 시간을 통한 역전파로 BPTT라고 불린다.

Back Propagation Through Time

현재 RNN 모델에는 3개의 가중치가 존재한다.

O는 softmax 계산과정을 나타내기 위한 것이지 실제 노드가 아니다.

  • h x V값에 softmax함수를 적용하는 구간을 나타낸 것

세 연결 가중치인 V, W, U만 업데이트하면 된다

  • V, W, U의 기울기들만 구하면 경사하강법을 이용하여 RNN을 학습시킬 수 있다.

V에 대한 기울기는 입력시퀀스 전체에 대한 기울기 이므로 baseball에 대한 기울기 + bat에 대한 기울기로 구해야 한다.

  • 연쇄법칙 사용
  • o1 = Vh1 / o2 = Vh2 사용

W에 대한 기울기는 입력시퀀스 전체에 대한 기울기 이므로 baseball에 대한 기울기 + bat에 대한 기울기로 구해야 한다.

  • L2에 대한 W의 기울기는 h0에서 h1로 이어지는 W와 h1에서 h2로 이어지는 W의 영향을 받는다.

    • 연쇄 법칙 사용하여 계산한 결과
    • h2 = tanh(h1W + x2U)를 h2 = tanh(z2)로 치환시켜 미분
  • L1에 대한 W의 기울기는 h0에서 h1로 이어지는 W 대한 영향만 받는다

U에 대한 기울기는 입력시퀀스 전체에 대한 기울기 이므로 baseball에 대한 기울기 + bat에 대한 기울기로 구해야 한다.

  • L2에 대한 U의 기울기 역시 W에 대한 기울기처럼 h1과 이어지는 U와 h2와 이어지는 U의 영향을 받는다.

  • L1에 대한 U의 기울기는 h2로 이어지는 U에 대한 영향만 받는다

이렇게 구한 각각의 기울기들을 경사하강법을 이용하여 점진적으로
U, W, V가중치들을 업데이트하면 학습이 이루어진다.

출처 : '신박AI' 유튜브
profile
많이 배우고 싶습니다

0개의 댓글