Day 28: 9-1, 9-2 RNN, RNN backpropagation 그리고 구조적 한계

2023. 3. 19. 22:51딥러닝 이론

오늘 공부한 내용은 Ch.7-8입니다:

- RNN 그리고 vectorized formula

- RNN backdrops 그리고 구조적 한계

 

Perceptron -> MLP -> CNN -> RNN. 한 달이지만 많은 내용을 공부했죠? 오늘은 마지막 chapter인 Recurrent neural network에 대해 공부해 봅시다. 아직 갈길은 멀지만 그래도 기초를 이렇게 공부하니 논문도 읽어보고 구현도 해보는 계기가 되는 것 같네요.

 

1. Recurrent neural network이란?

RNN이란 input을 sequentially feeding하는 모델입니다. 그래서 RNN의 응용은 광범위합니다. 예를 들어 언어에서 문장을 보면 글의 순서가 중요하지 않습니까? 문장들은 sequential data라 이런 RNN에 해당하는 데이터입니다. 영상도 그렇습니다. 영상은 사진들의 연속이니깐요. 그리고 주식도 sequential data니까 미래 주식의 가격을 예측하는 응용프로그램을 만들면 그것도 RNN model로 잘 활용을 할 수 있습니다.

여기서 recurrent라는 단어는 "다시 또는 반복적으로 일어나는"인 의미를 갖고 있습니다. 첫번째 input이 들어오고 MLP를 돌리고 거기서 얻은 h1(weights)을 두 번째 input이 들어올 때의 weights로 계산해 새로운 weights, h2, 를 얻고 세 번째 input이 들어오면 또다시 h2와 같이 계산해 새로운 h3 weights를 얻는 반복입니다. 이렇게 되면 5번째 input에 대한 weights는 가각 1,2,3,4의 x_i, W_i를 다 고려한 h_i 값이고, 이 h_i는 이전 정보를 담는 역할을 합니다.

 

2. RNN backpropagation 그리고 구조적 한계

"HELL_", 다음 빈칸에 들어갈 alphabet은 무엇일까요? alphabet 26개 중 하나일테니 이것도 사실은 우리가 배운 "다중분류 문제이다!"라고 할 수 있겠네요. Input x1, x2, x3, x4 = {H, E, L, L}이고 y2, y3, y4, y5는 그다음 letter인 {E, L, L, O}이다. 이렇게 sequential data에서 다음 데이터를 training 하면 google search창에 검색할 때 자동추천검색결과 같은 응용을 할 수 있다.

 

RNN backpropagation은 전에 배운 MLP하고 비슷합니다. Loss를 계산할 때 cross entropy로 activation과 weights를 거꾸로 돌아가면서 미분을 하면서 계산을 한다. 이 과정에서 우리는 h4 -> h3 -> h2 -> h1등 전 activation and weights를 모두 계산한다. 그래서 범용성은 좋지만 오래 전인 내용일수록 흐릿해지는 방식이다. 이는 ADAM과 구조적으로 비슷하다는 느낌이 든다.

 

이런 특성 때문인지 RNN은 고질적인 문제가 몇개 있다:

1. 멀수록 잊혀진다 (x5에 대한 loss를 계산할 때 x1에 대한 loss는 거의 0으로 근접한다

2. 점점 흐려진다 (tanh를 사용할 땐 vanishing gradients에도 약할 수 있다)

 

다음 시간에는 이런 문제점 완화와 실습을 하겠습니다. 수고하셨습니다!