순환신경망
순환신경망(RNN, Recurrent Neural Network)는 유닛간의 연결이 순환적 구조를 갖는 인공신경망의 한 종류이다. 알엔엔(RNN)이라고 읽는다.
개요[편집]
순환신경망은 시퀀스 데이터를 모델링 하기 위해 등장했다. 순환 신경망이 기존의 뉴럴 네트워크와 다른 점은 '기억'을 갖고 있다는 점인데, 네트워크의 기억은 지금까지의 입력 데이터를 요약한 정보라고 볼 수 있다. 새로운 입력이 들어올때마다 네트워크는 자신의 기억을 조금씩 수정한다. 결국 입력을 모두 처리하고 난 후 네트워크에게 남겨진 기억은 시퀀스 전체를 요약하는 정보가 된다. 이는 사람이 시퀀스를 처리하는 방식과 비슷하다. 이 글을 읽을 때도 우리는 이전까지의 단어에 대한 기억을 바탕으로 새로운 단어를 이해한다. 이 과정은 새로운 단어마다 계속해서 반복되기 때문에 순환 신경망에는 Recurrent, 즉 순환적이라는 이름이 붙는다. 순환신경망은 이런 반복을 통해 아무리 긴 시퀀스라도 처리할 수 있는 것이다.[1]
활용[편집]
언어 모델링과 텍스트 생성[편집]
언어 모델은 주어진 문장에서 이전 단어들을 보고 다음 단어가 나올 확률을 계산해주는 모델이다. 언어 모델은 어떤 문장이 실제로 존재할 확률이 얼마나 되는지 계산해주기 때문에, 자동 번역의 출력값으로 어떤 문장을 내보내는 것이 더 좋은지 알려줄 수 있다. 문장에서 다음 단어가 나타날 확률을 계산해주는 주 목적 외의 부수적인 효과로 생성 모델을 얻을 수 있는데, 출력 확률 분포에서 샘플링을 통해 문장의 다음 단어가 무엇이 되면 좋을지 정한다면 기존에 없던 새로운 문장을 생성할 수 있고, 또한 학습 데이터에 따라 다양하고 재밌는 여러 가지를 만들어낼 수도 있다.언어 모델에서의 입력값은 단어들의 시퀀스이고, 출력은 추측된 단어들의 시퀀스이다.[2]
기계 번역[편집]
기계 번역 문제는 입력이 단어들의 시퀀스라는 점에서 언어 모델링과 비슷하지만, 출력값이 다른 언어로 되어있는 단어들의 시퀀스라는 점에서 차이가 있다. 네트워크 상에서 중요한 차이점은, 입력값을 전부 다 받아들인 다음에서야 네트워크가 출력값을 내보낸다는 점에 있는데, 번역 문제에서는 어순이 다른 문제 등이 있기 때문에 대상 언어의 문장의 첫 단어를 알기 위해선 번역할 문장 전체를 봐야 할 수도 있기 때문이다.[2]
음성 인식[편집]
사운드 웨이브의 음향 신호를 입력으로 받아들이고, 출력으로는 음소들의 시퀀스와 각각의 음소별 확률 분포를 추측할 수 있다.[2]
이미지 캡션 생성[편집]
컴퓨터 비전에서 활발하게 사용된 합성곱 신경망(CNN, Convolutional Neural Network)과 순환신경망을 함께 사용한다면, 임의의 이미지를 텍스트로 설명해주는 시스템을 만드는 것이 가능해진다. 합성곱 신경망과 순환신경망을 합친 모델은 이미지로부터 얻어낸 주요 단어들과 이미지의 각 부분을 매칭해줄 수도 있다.[2]
각주[편집]
참고자료[편집]
- Dreamgonfly, 〈Recurrent Neural Network 이해하기〉, 《DISQUS》, 2017-09-04
- Team AI Korea, 〈Recurrent Neural Network 튜토리얼 - 파트1〉, 《DISQUS》, 2015-09-17
같이 보기[편집]