Sequence data
우리가 말하는것은 다 Sequence data이다.
예를들어 우리가 말할때 말하는 한 순간의 그 단어만 듣고 전체 말의 맥락을 이해하는것이 아니라, 전후의 말의 맥락을 이해해야지 대화가 된다. Sequenced data라고한다.
이전의 상태가 현재의 상태에 영향을 미치는것.RNN이라고한다.
NN/CNN만으로는 구현할수가없다.

위 그림과 같이 이전시점의 영향이 현재 시점에 영향을 미치는것을 CNN이라고한다.

수식으로 나타내면 위그림과 같다. CNN에는 state라는 개념이 있어서, 예전상태와 x값을 입력으로받고, 특정함수를 거쳐서 new state가 탄생한다는 개념이다.
하지만 저기서 모든 RNN노드에서 사용하는 function은 같은것을 가진다.

위그림과같이 Input layer에서 받은 값을 w값을 곱해서 hidden layer로 만들고, 다음 input layer에서 받은값을 w와 또곱하고, 전상태의 값도 덧셈을 한다.
초기state가 없을때는 0으로 계산한다.
그렇게 하면, 결국엔 전의 값이 현재값에 계속 영향을 미치는 구조가 되게 된다.(저기서 나온 숫자는 임의의 값이다)

그림설명을 하자면 처음 인풋값인 h가 들어가면 output에서는 두번째 인덱스인 e가 나와야 정상인데 4번째 인덱스값인 4.1이 가장크게 나와서 에러가 나오고,
두번째 인풋값인 e가 들어가면 3번째 인덱스값이 -1.0이 나온다 하지만 가장큰값을 얻는게 결과를 도출하는것이므로 결과 값이 1.2인 4번째 값이 나온다. 그정도의 에러가 나오는데 softmax함수를 구현해서 에러율을 줄여야 한다.
이렇게 4번째 까지 가서 결과를 가져온다.
train을 시키다보면 결국에는 h라는 글자만 인식해도 hello라는 단어로 인식하게 된다.
굉장히 활용성이 높다.
연관검색, 음성인식, 번역, 대화형모델, 퀴즈/응답 , 이미지나 비디오에 캡션달기 등에 활용이 가능하다.

첫번째 그림은 vanilla Neural Networks. 하나의 입력을 받고, 하나의 결과를 도출해내는 가장 기본적인 모델이고
두번째 그림은 Image Captionion의 예이다. image-> sequence of words로 나타낸다.
세번째 그림은 Sentiment Classification.여러가지 문장들을 입력받고 문장의 분위기등을 파악한다.
네번째 그림은 Machine Translation의 예로, 번역할때 쓰인다.
다섯번째 그림은 Video classification onframe level이다. 영상을 입력받고 영상에대한 설명을 출력하는 모델 예이다.
RNN도 굉장히 다양하게 변형이 가능하다.
RNN도 깊이가 점점 깊어질수록 학습시키기가 굉장히 어려워진다.
그래서 만든 모델이 LSTM(long short term memory), GRU모델 등이 있다.
덧글