본문 바로가기
AI

딥러닝 -03 Recurrent Neural Network

by Wonryeol 2020. 4. 4.

 

Rnn 은 대표적인 ai 분야중 하나이다.

Cnn 은 이미지 처리 등, 복잡한 grid 데이터를 하나의 flat으로 펼치는 것에 집중화 되어 있다면, Rnn 은 순차적인 데이터, 즉 시간과 연관이 있는 데이터를 처리하기에 알맞은 데이터 처리 이다.

 

 비디오, 주식, 에세이 등 데이터와 데이터간이 시간적으로 연관되는 데이터에 rnn 알고리즘을 사용한다.

 

Rnn 의 특징중 하나는 과거의 데이터를 기억하고 있다는 점이다. 네트워크의 기억은 지금까지의 입력 데이터를 요약한 정보라고 볼 수 있는데, 새로운 입력이 들어 올 때마다 기억하고 있는 바를 조금씩 바꿔준다. 결국 입력된 정보를 모두 처리 하고 난 뒤는 neural network 에 남아 있는 요소들은 데이터들의 특징을 추출한 어느 수치라는 것을 알 수 있다. 

 

간단히 예를 들어 이야기 하자면 사람이 소설 하나를 읽을때, 단어와 단어들이 중첩되어 하나의 이야기를 만들어 가는 과정을 기계적으로 나타낸 것이라고 볼 수 있다. 

 

 

한번에 그림으로 표현하자면 아래와 같은 과정을 거친다.

 

퍼가도 됩니다.

 

함수, f(x)는 x 가 입력될 때 마다 실행이 된다.  H_t-1 은 이때까지 학습시켰던 기억( 이전 x데이터 까지 뽑아낸 H_t-1) 이다. 이를 저러한 함수 식을 통해 H_t 를 뽑아 낼 수 있다. 

 

또한 H(t) 만은 Y value 가 될 수 없기 때문에, g(x) 라는 함수에 input value 로 넣어 Y _value 를 뽑아낸다. 

 

 

이를 조금 더 단순화 하여 표현한것이 좌측의 그림이다.

 

빨간색 사각형은 입력값, 즉 X 이다.

 

노란색 사각형은 처리 되는함수이며 F(x) 이다. 

 

파란색 사각형 은 출력값이라고 볼 수 있는데, 이를 출력하기 위해서는 g(x) 를 한번 거쳐서 새로운 Y value 를 제공한다.

 

 

 

 

그렇다면 w를 수정하기 위한 cost 와 최적화를 알아보자.

 

이 방식은 soft max classification 의 에러를 뽑아 내는 방식과 유사하다.

 

 

먼저 y output 의 값들을 출력한후, 예상치가 맞았는지 비교를 한다. 그리고 오류가 떳다면 - value 를 제출한다.

 

그림을 보면, l 이 나와야 하지만 l의 one_hot_encoding 자리에 minus value 가 있는것으로 보아 에러라고 확인할 수 있다.

 

이러한 에러를 종합적으로 취합해, cost를 줄이는 optimizer 를 실시한다.

 



 

 

 

 

이러한 RNN 은 여러가지 구성으로 만들 수 있는데, 

 

조합에 따라 다양한 모습을 가진다. 

댓글