Posts List

[컴퓨터비전] 13. RNN

Recurrent Neural Network

Language model은 나열된 단어들에 확률을 부과하는 모델이다. 

하지만 전체 문장에 대한 확률을 구하기 어렵기 때문에 위와 같이 최근 몇개의 단어를 이용해 다음 단어의 확률을 구하는 것이 N-gram 모델이다. 위 모델은 확률을 구하기 가장 쉬운 방법인 count-based N-gram 모델을 보여준다. (전체 단어를 세어 놓고, 다음 단어가 왔었던 횟수로 확률을 구함) 

이 때 N-gram모델에 neural network를 활용해서 성능을 비약적으로 향상킬 수 있따. 위 그림은 2개의 단어를 사용해서 다음 단어를 예측하는 neural 3-gram 모델이다.

위 모델이 잘 학습됐다면 각각의 단어에 대한 조건부 확률 p를 구할 수 있는데,

그럼 위와 같이 각 단어의 one-hot vector를 입력해줬을 때 확률이 높은 단어를 sampling하는 방식으로 다음 단어를 연속적으로 예측할 수 있다. 

이렇게 학습된 neural net 기반의 모델은 count-based n-gram보다 훨씬 작은 메모리를 사용하면서도 generalization 성능이 높다.

반면, 지금까지 3-gram 예제를 살펴봤는데, N이 클수록 즉, 많은 단어를 커버할 수록 파라미터의 수가 기하급수적으로 늘어난다. 

그래서 고안된 것이 바로 RNN(Recurrent Neural Network)이다. RNN은 현재상태를 구하기 위해 이전 상태를 반영하는데, 이전상태는 더 이전상태를 반영함으로 재귀적(recursive)으로 현재 상태를 구할 수 있게 된다.

위 그림을 직관적으로 쭉 펼쳐보면 보다 이해하기 쉽다.

이런 구조는 h에 과거 단어들의 history를 담고 있기 때문에, N-gram모델에 비해서 긴 문장을 예측하는데 월등한 성능을 보여준다. 물론 N-gram에 비해 메모리 측면에서 효율도 훨씬 좋다.

단점이라면 training이 좀 어려운 편이고, N-gram보다 잘 예측할 뿐이지 사실 긴 문장의 예측 성능이 높진 않다는 것이다. 

그래도 위와 같이 다양한 형태의 input / output을 적용시킬 수 있는 장점이 있어 현재까지도 널리 쓰이고 있다. 

지금까지 설명한 RNN의 원리를 영상에도 적용시킬 수 있다.

위 논문은 동영상을 학습한 Conv net.를 이용해서 deblurred image L을 출력하는 예제를 보여준다.








댓글 쓰기

0 댓글