- 중요한 신경망의 개념 중 하나. 

- NN은 다음과 같이 

- Input값이 Hidden layer에서 선형 함수를 거친 다음 Activation Function(tanh)를 거치고 Output으로 바로 전환디는 과정을 거침.  

NN

- 그러나 RNN은 Hidden layer에서 선형함수를 거친 다음Activation Function(tanh)가 바로 Output으로 전달되지 않고, 다시 Input 값으로서 전달 됨. 그 다음 다시 해당 값이 선형 함수를 거치고 Actication Function을 거친 다음 다음 Input 값으로 전달 됨. (반복) => Recurrent Neural Network => 순서가 있는 데이터를 처리하는데 강점을 가짐. 

RNN

- 순서가 있는 데이터?

: 내부 요소들이 동일하다고 하더라도 순서가 바뀌면 통합적으로 완전히 다른 의미가 되는 것. 

예) 텍스트 데이터. 

I work at google(나는 구글에 근무한다)

I google at work(나는 회사에서 구글링한다)

: 내부 요소는 동일하지만 순서가 바뀌니까 다른 의미가 되었다. 

그렇다면 우리가 RNN으로 잘 알고 있는 주식 데이터를 살펴보자. (종가만)

1일   2일    3일    4일   

1000 1050  900   1060

1일    3일   2일    4일

1000  900   1050  1060

- 내부 요소는 같지만 내가 의도하는 바는 전혀 다르다. 나는 시계열로 일별 종가를 필요로 하였는데 전혀 다른 값이 왔다. 이런 데이터는 RNN으로 손쉽게 처리 할 수 있다. 

- RNN은 순서가 있는 데이터를 온전히 파악하기 위하여 은닉측 내에 순환적 구조(Recurrent structure)를 이용하여 과거의 데이터를 기억(Remember)해 두고 있다가 새롭게 입력으로 주어지는 데이터와 은닉층에서 기억하고 있는 과거 데이터를 연결 - (New Input+Recurrent Output)시켜서 그 의미를 알아내는 기능을 수행. 

=> 데이터 분석 결과가 데이터 분석 결과에 영향을 미칠 경우 RNN을 사용하자!

[RNN의 동작 원리]

가장 간단한 텍스트 데이터(I work at google)를 분석하면서 동작 원리를 알아 보자. 

1. 먼저 문장을 각 요소별로 분리한다. (데이터 전처리 = 형태소 분리) 

: I/work/at/google

2. 신경망 구조 설계

: 입력 - 은닉 - 출력

: 은닉층으로는 tanh를 사용한다. 그리고 최종 분류로는 softmax를 사용한다. 

: 출력층은 명사, 대명사, 동사, 전치사 4가지 Class를 분류한다. 

3. 먼저  I가 입력층으로 들어감. I는 선형회귀를 서친 다음 tanh를 거침. 이전에 아무 값도 들어오지 않았으므로 I를 그대로 분석함. 이후 출력층에서는 다시 한 번 선형회귀를 거치고 softmax를 통해서 해당 단어(I)가 어떤 class에 속하는 지 분류해 냄. 여기서는 대명사.

4. 다음으로 Work를 입력. 

같은 신경망에 Work가 들어감. 기본에 I가 잔존해 있어서 이 값이 영향을 줌. 하지만 분류는 위 3의 과정과 같이 똑같이 해낼 수 있음. 즉, 동사로 분류

(이하 상동)

 

 

+ Recent posts