순환 신경망(Recurrent neural network, RNN)은 인공 신경망의 한 종류로, 유닛간의 연결이 순환적 구조를 갖는 특징을 갖고 있다. 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있게 해주므로, 순방향 신경망과 달리 내부의 메모리를 이용해 시퀀스 형태의 입력을 처리할 수 있다.[1][2][3] 따라서 순환 인공 신경망은 필기 인식이나[4]음성 인식과 같이 시변적 특징을 지니는 데이터를 처리하는데 적용할 수 있다.[5][6]
순환 신경망이라는 이름은 입력받는 신호의 길이가 한정되지 않은 동적 데이터를 처리한다는 점에서 붙여진 이름으로, 유한 임펄스 구조와 무한 임펄스 구조를 모두 일컫는다.[7] 유한 임펄스 순환 신경망은 유향 비순환 그래프이므로 적절하게 풀어서 재구성한다면 순방향 신경망으로도 표현할 수 있지만, 무한 임펄스 순환 신경망은 유향 그래프이므로 순방향 신경망으로 표현하는 것이 불가능하다.
순환 신경망은 추가적인 저장공간을 가질 수 있다. 이 저장공간이 그래프의 형태를 가짐으로써 시간 지연의 기능을 하거나 피드백 루프를 가질 수도 있다. 이와 같은 저장공간을 게이트된 상태(gated state) 또는 게이트된 메모리(gated memory)라고 하며, LSTM과 게이트 순환 유닛(GRU)이 이를 응용하는 대표적인 예시이다.
역사
RNN은 1986년 데이비드 루멜하르트의 연구에 기반을 둔다.[8] RNN의 특수한 예시인 홉필드 네트워크가 1982년 존 홉필드에 의해 발명되었고, 1993년에는 신경 기억 압축기가 "Very Deep Learning"를 구현하는데 성공했는데, 1000개 이상의 레이어로 구성된 정적 RNN이 사용되었다.[9]
2007년을 전후로, LSTM은 음성 인식 분야에서 기존의 전통적인 모델들을 아득히 능가하는 성능을 보여주었다.[11] 2009년에는 CTC(Connectionist temporal classification) 기술로 훈련시킨 LSTM이 처음으로 필기체 인식 시합에서 승리를 거둠으로써, 패턴 인식 분야에 독보적인 기능을 가지고 있음이 증명되었다.[12][13] 2014년에는 중국의 검색엔진인 바이두가 기존의 음성 인식 알고리즘은 전혀 사용하지 않고 오직 CTC로 훈련된 RNN만으로 Switchboard Hub5'00 speech recognition dataset 벤치마크를 갱신했다.[14]
또한 기계 번역,[20]언어 모델링,[21] 다국어 언어 처리 분야에서의 기록도 우수한 능력으로 연달아 갱신했다.[22]합성곱 신경망과 함께 응용되어 자동 이미지 캡셔닝 분야에서도 커다란 향상을 일으켰다.[23] LSTM을 돌리는데 필요한 막대한 계산량에 따른 하드웨어의 부담을 줄이기 위해 하드웨어 가속기를 사용해 LSTM을 가속하고자 하는 연구도 꾸준히 진행되고 있다.[24]
구조
완전순환(Fully recurrent)
RNN은 뉴런과 유사한 노드들이 이룬 레이어가 연속되어있는 구조를 가진다. 각각의 노드들은 다음 단계의 모든 레이어들과 단방향 그래프를 이루며, 시간에 따라 달라지는 실숫값의 활성화(activation)값을 가진다. 또한 각 노드들 간 연결관계는 실숫값의 가중치를 가지며 이 값은 끊임없이 바뀐다. 노드의 종류로는 신경망 외부로부터 값을 입력받는 입력 노드, 결괏값을 산출하는 출력 노드, 입력 노드에서 출력 노드 사이에 존재하는 은닉 노드가 있다.
이산 시간 데이터로 지도 학습을 하는 경우, 단위시간 한 번에 실수 벡터 하나가 입력 노드로 들어온다. 또한 매 순간 입력 노드를 제외한 모든 노드들은, 각자 연결된 노드들로부터 활성화값을 각 연결의 가중치와 함께 가중합으로 받아, 비선형 함수를 통해 활성화값을 계산한 뒤 저장한다. 지도 학습을 위해 주어진 데이터는 특정 순간마다 출력 노드 값이 이루어야 하는 값(target)을 알려준다. 매 순간마다 신경망이 생성한 출력값과, 원래 이루었어야 하는 값 사이의 편차의 합으로 오차를 정의한다. 이 오차를 줄이는 방향으로 신경망의 학습이 이루어진다. 일례로 음성 인식을 통해 발음된 숫자를 알아맞추는 프로그램을 생각해보자. 이 경우 최종 출력값은 숫자를 분류하기 위한 레이블이 될 것이다.
강화 학습의 경우, 아무도 출력 값이 어떠해야한다는 정보를 가르쳐주지 않는다. 대신 RNN의 성능을 평가하기 위한 적합성 함수(영어:fitness function)나 보상 함수가 출력값을 받아들인 뒤, 액츄에이터를 통해 환경에 영향을 줌으로써 입력값을 변화시킨다. 점수가 있는 게임을 플레이하는 인공지능을 만들 때 이런 기술을 사용할 수 있다.
단순 순환망
엘만 신경망과 조르단 신경망을 단순 순환망(Simple recurrent network, SRN)이라 부른다.
엘만 신경망은 세 개의 레이어와 문맥 유닛으로 이루어져 있으며, 문맥 유닛들은 1로 고정된 가중치와 함께 은닉 레이어와 연결되어 있다.[25] 학습이 이루어질 때마다 입력값이 순방향으로 되먹임되고, 은닉 레이어가 전 단계에 가지고 있던 값이 문맥 유닛에 저장된다. 따라서 신경망은 과거의 상태를 저장할 수 있게됨으로써 일반적인 다중계층 퍼셉트론보다 우수한 예지력을 가지게 되는 것이다.
조르단 신경망은 엘만 신경망과 비슷하나, 문맥 유닛이 은닉 레이어가 아닌 출력 레이어로부터 값을 받는다는 차이점이 있다. 이 경우 문맥 유닛은 상태 레이어라고 불리며, 그 내부에서도 순환망을 가진다.[25]
LSTM(long short-term memory, 장단기 메모리)는 기울기 소실 문제를 해결하기 위해 고안된 딥 러닝 시스템이다. LSTM은 망각 게이트(forget gate)라 부르는 게이트를 추가적으로 가진다.[28] 이 게이트를 통해 역전파시 기울기값이 급격하게 사라지거나 증가하는 문제를 방지할 수 있다.[29] 이로써 기존의 RNN은 먼 과거의 일로부터 학습하는 것이 산술적으로 거의 불가능했지만, LSTM은 수백만 단위 시간 전의 사건으로부터도 학습할 수 있음으로서 고주파 신호뿐 아니라 저주파 신호까지도 다룰 수 있게 되었고, 이는 곧 성능의 비약적 발전을 가져왔다.[30] 이로써 LSTM과 유사한 구조를 가진 신경망들도 많이 발표되고 있다.[31]
GRU(Gated recurrent units, 게이트 순환 유닛)은 2014년에 처음으로 발명된 구조다. 처음 발표된 형태로 적용되기도 하나, 간단하게 변용되는 경우도 많다.[35][36] 출력 게이트가 존재하지 않으므로, LSTM에 비해 더 적은 수의 매개변수를 가짐에도 불구하고[37]다성음악 학습이나 음성 인식 분야에서 LSTM과 유사한 성능을 가진다.[38]
양방향(Bi-directional) 순환 신경망은 길이가 정해진 데이터 순열을 통해 어떤 값이 들어오기 전과 후의 정보를 모두 학습하는 방식의 알고리즘이다. 이를 위해 순열을 왼쪽에서 오른쪽으로 읽을 RNN 하나와, 오른쪽에서 왼쪽으로 읽을 RNN 하나를 필요로 한다. 이 둘의 출력값을 조합한 뒤 지도된 결과와 비교하여 학습하는 것이다. LSTM과 병용할 때 특히 좋은 성능을 낸다는 사실이 증명되었다.[39][40]
↑Li, Xiangang; Wu, Xihong (2014년 10월 15일). “Constructing Long Short-Term Memory based Deep Recurrent Neural Networks for Large Vocabulary Speech Recognition”. arXiv:1410.4281 [cs.CL].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Fan, Bo; Wang, Lijuan; Soong, Frank K.; Xie, Lei (2015) "Photo-Real Talking Head with Deep Bidirectional LSTM", in Proceedings of ICASSP 2015
↑Jozefowicz, Rafal; Vinyals, Oriol; Schuster, Mike; Shazeer, Noam; Wu, Yonghui (2016년 2월 7일). “Exploring the Limits of Language Modeling”. arXiv:1602.02410 [cs.CL].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Gillick, Dan; Brunk, Cliff; Vinyals, Oriol; Subramanya, Amarnag (2015년 11월 30일). “Multilingual Language Processing From Bytes”. arXiv:1512.00103 [cs.CL].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Vinyals, Oriol; Toshev, Alexander; Bengio, Samy; Erhan, Dumitru (2014년 11월 17일). “Show and Tell: A Neural Image Caption Generator”. arXiv:1411.4555 [cs.CV].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑"A Survey on Hardware Accelerators and Optimization Techniques for RNNs", JSA, 2020 PDF
↑Jordan, Michael I. (1997년 1월 1일). 〈Serial Order: A Parallel Distributed Processing Approach〉. 《Neural-Network Models of Cognition - Biobehavioral Foundations》. 《Advances in Psychology》. Neural-Network Models of Cognition 121. 471–495쪽. doi:10.1016/s0166-4115(97)80111-2. ISBN9780444819314.
↑Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen (2007). “Sequence labelling in structured domains with hierarchical recurrent neural networks”. 《Proc. 20th International Joint Conference on Artificial In℡ligence, Ijcai 2007》: 774–779. CiteSeerX10.1.1.79.1887.
↑Graves, Alex; Fernández, Santiago; Gomez, Faustino J. (2006). “Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks”. 《Proceedings of the International Conference on Machine Learning》: 369–376. CiteSeerX10.1.1.75.6306.
↑Heck, Joel; Salem, Fathi M. (2017년 1월 12일). “Simplified Minimal Gated Unit Variations for Recurrent Neural Networks”. arXiv:1701.03452 [cs.NE].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Dey, Rahul; Salem, Fathi M. (2017년 1월 20일). “Gate-Variants of Gated Recurrent Unit (GRU) Neural Networks”. arXiv:1701.05923 [cs.NE].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Thireou, Trias; Reczko, Martin (July 2007). “Bidirectional Long Short-Term Memory Networks for Predicting the Subcellular Localization of Eukaryotic Proteins”. 《IEEE/ACM Transactions on Computational Biology and Bioinformatics》 4 (3): 441–446. doi:10.1109/tcbb.2007.1015. PMID17666763. S2CID11787259.
↑Mayer, Hermann; Gomez, Faustino J.; Wierstra, Daan; Nagy, Istvan; Knoll, Alois; Schmidhuber, Jürgen (October 2006). 《A System for Robotic Heart Surgery that Learns to Tie Knots Using Recurrent Neural Networks》. 《2006 IEEE/RSJ International Conference on Intelligent Robots and Systems》. 543–548쪽. CiteSeerX10.1.1.218.3399. doi:10.1109/IROS.2006.282190. ISBN978-1-4244-0258-8. S2CID12284900.
↑Petneházi, Gábor (2019년 1월 1일). “Recurrent neural networks for time series forecasting”. arXiv:1901.00069 [cs.LG].더 이상 지원되지 않는 변수를 사용함 (도움말)
↑Hewamalage, Hansika; Bergmeir, Christoph; Bandara, Kasun (2020). “Recurrent Neural Networks for Time Series Forecasting: Current Status and Future Directions”. 《International Journal of Forecasting》. arXiv:1909.00590. doi:10.1016/j.ijforecast.2020.06.008. S2CID202540863.
↑Malhotra, Pankaj; Vig, Lovekesh; Shroff, Gautam; Agarwal, Puneet (April 2015). “Long Short Term Memory Networks for Anomaly Detection in Time Series”(PDF). 《European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning — ESANN 2015》. 2020년 10월 30일에 원본 문서(PDF)에서 보존된 문서. 2020년 10월 8일에 확인함.
↑Pérez-Ortiz, Juan Antonio; Gers, Felix A.; Eck, Douglas; Schmidhuber, Jürgen (2003). “Kalman filters improve LSTM network performance in problems unsolvable by traditional recurrent nets”. 《Neural Networks》 16 (2): 241–250. CiteSeerX10.1.1.381.1992. doi:10.1016/s0893-6080(02)00219-8. PMID12628609.
↑Graves, Alex; Schmidhuber, Jürgen (2009). “Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks”. 《Advances in Neural Information Processing Systems 22, NIPS'22》 (Vancouver (BC): MIT Press): 545–552.
↑Baccouche, Moez; Mamalet, Franck; Wolf, Christian; Garcia, Christophe; Baskurt, Atilla (2011). Salah, Albert Ali; Lepri, Bruno, 편집. “Sequential Deep Learning for Human Action Recognition”. 《2nd International Workshop on Human Behavior Understanding (HBU)》. Lecture Notes in Computer Science (Amsterdam, Netherlands: Springer) 7065: 29–39. doi:10.1007/978-3-642-25446-8_4. ISBN978-3-642-25445-1.
↑Hochreiter, Sepp; Heusel, Martin; Obermayer, Klaus (2007). “Fast model-based protein homology detection without alignment”. 《Bioinformatics》 23 (14): 1728–1736. doi:10.1093/bioinformatics/btm247. PMID17488755.
↑Thireou, Trias; Reczko, Martin (July 2007). “Bidirectional Long Short-Term Memory Networks for Predicting the Subcellular Localization of Eukaryotic Proteins”. 《IEEE/ACM Transactions on Computational Biology and Bioinformatics》 4 (3): 441–446. doi:10.1109/tcbb.2007.1015. PMID17666763. S2CID11787259.
↑Tax, Niek; Verenich, Ilya; La Rosa, Marcello; Dumas, Marlon (2017). 《Predictive Business Process Monitoring with LSTM neural networks》. 《Proceedings of the International Conference on Advanced Information Systems Engineering (CAiSE)》. Lecture Notes in Computer Science. 10253. 477–492쪽. arXiv:1612.02130. doi:10.1007/978-3-319-59536-8_30. ISBN978-3-319-59535-1. S2CID2192354.
더 읽어보기
Mandic, Danilo P. & Chambers, Jonathon A. (2001). 《Recurrent Neural Networks for Prediction: Learning Algorithms, Architectures and Stability》. Wiley. ISBN978-0-471-49517-8.
외부 링크
Seq2SeqSharp LSTM/BiLSTM/Transformer recurrent neural networks framework running on CPUs and GPUs for sequence-to-sequence tasks (C#, .NET)
RNNSharp CRFs based on recurrent neural networks (C#, .NET)