Source: 송호연님, Excelsior-JH님

RNN

RNN(순환신경망, Recurrent Neural Network)는 이런 문제를 지적합니다. RNN은 루프가 들어있고, 과거의 데이터가 미래에 영향을 줄 수 있는 구조를 가지고 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7b4e0b58-ef0f-425b-9265-9a2583d0cb3a/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/145e2294-0b0c-49d4-843f-0c9f02e0ee77/Untitled.png

이런 RNN을 활용한 엄청난 성공 사례들에 대해선 Andrej Kapathy의 탁월한 블로그 포스트로 대체하겠습니다. The Unreasonable Effectiveness of Recurrent Neural Networks.

이러한 성공의 핵심은 "LSTM의 활용"에 있습니다. 아주 특별한 종류의 RNN 알고리즘입니다. 일반 RNN 알고리즘에 비해 아주아주 뛰어나고 다양한 분야에서 쓰일 수 있습니다. RNN 알고리즘의 성과 중에 대부분을 LSTM 알고리즘이 이루어냈습니다. 그리고 이 글에서는 이 LSTM을 설명드릴 것입니다.

Long term dependency

RNN의 장점 중 하나는 이전의 정보를 현재의 문제 해결에 활용할 수 있다는 점입니다. 예를 들어 바로 전의 비디오 프레임은 현재 프레임을 해석하는 데 도움을 줄 수 있죠. 만약에 RNN이 이런 작업을 할 수 있다면 이 알고리즘은 엄청나게 유용할 것입니다. 그런데 진짜 이런 일이 가능한 걸까요? 상황에 따라 다릅니다.

가끔, 우리는 최근 데이터를 가지고 현재의 문제를 해결해야하는 상황에 직면하게 됩니다. 예를 들어서, 이전 단어 선택을 활용하여 다음에 입력될 단어를 예측하는 언어 모델을 생각해봅시다. 만약에 우리가 "the clouds are in the sky,"라는 문장에서 "the clouds are in the"라는 입력값을 받고 마지막 단어를 예측해야 한다면, 우리는 더 이상 문맥이 필요하지 않습니다. 명확하게 다음에 입력될 단어는 "sky"가 될 확률이 높습니다. 이러한 경우에 제공된 데이터와 배워야 할 정보의 입력 위치 차이(Gap)가 크지 않다면, RNN은 과거의 데이터를 기반으로 학습을 할 수 있게 됩니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ffeafe55-9dd8-464f-93e2-f871ca604ddc/Untitled.png

하지만, 우리는 더 많은 문맥이 필요할 때가 있습니다. 예를 들어 "I grew up in France... I speak fluent French.(나는 프랑스에서 자라났어... 나는 프랑스어를 유창하게 해)"라는 문장에서 마지막 단어 French(프랑스어)를 예측하는 문제를 생각해보겠습니다. 최근 정보를 기반으로 예측 모델은 다음 단어가 아마도 언어의 한 종류라고 예측될 것입니다. 그렇다면, 이 예측 모델은 "I grew up in France(나는 프랑스에서 자라났다)"에서 프랑스라는 문맥이 필요하게 됩니다. 실제로 "I grew up in France(프랑스에서 자라났다)"는 표현과 "I speak fluent *** (나는 *** 언어를 유창하게 한다)"라는 표현의 위치가 멀어지는 문제는 아주 빈번하게 발생합니다.

불행히도, 이런 문장표현의 순서상 갭이 커질수록, RNN은 두 정보의 문맥을 연결하기 힘들어집니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/380aeaaf-63c5-4296-a8dc-cfba0a96d69b/Untitled.png

이론상으로, RNN은 장기 의존성 문제를 해결할 능력이 있습니다. 사람은 이러한 장기 의존성 문제를 풀 수 있도록 신중하게 파라미터를 선택하면 가능은 합니다만, 슬프게도 실제적으로 RNN은 이러한 문맥을 배울 수 없다는 것이 밝혀졌습니다. 이러한 내용은 Hochreiter (1991) [German] 와 Bengio, et al. (1994) 가 다루었습니다. 이 분들은 왜 RNN이 장기 의존성 문제를 해결 할 수 없는지에 대한 논리를 대었습니다.

LSTM

RNN

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b4aace8a-b9c5-41c0-b643-f8c733c48cd0/Untitled.png

LSTM

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b736d7fe-4d4b-44c3-bc6b-760f78f27515/Untitled.png