장기 단기 기억
장기 기억과 단기 기억LSTM(Long Short-Term Memory, 영어: LSTM)은 1997년에 처음 발표된 시간 순환 신경망(RNN)입니다. 고유한 설계 구조로 인해 LSTM은 매우 긴 간격과 지연이 있는 시계열의 중요한 이벤트를 처리하고 예측하는 데 적합합니다.
LSTM은 예를 들어 분할되지 않은 연속 필기 인식 분야에서 시간 재귀 신경망과 은닉 마르코프 모델(HMM)보다 더 나은 성능을 보이는 경우가 많습니다. 2009년에는 LSTM을 이용해 구축한 인공신경망 모델이 ICDAR 필기 인식 대회에서 우승했습니다. LSTM은 자율 음성 인식에도 널리 사용되고 있으며, 2013년에는 TIMIT 자연어 데이터베이스를 이용하여 17.7% 오류율이라는 기록을 달성했습니다. 비선형 모델인 LSTM은 복잡한 비선형 단위로 사용되어 더 큰 딥 신경망을 구성할 수 있습니다.
장기 기억과 단기 기억LSTM(Long Short-Term Memory, 영어: LSTM)은 1997년에 처음 발표된 시간 순환 신경망(RNN)입니다. 고유한 설계 구조로 인해 LSTM은 매우 긴 간격과 지연이 있는 시계열의 중요한 이벤트를 처리하고 예측하는 데 적합합니다.
LSTM은 예를 들어 분할되지 않은 연속 필기 인식 분야에서 시간 재귀 신경망과 은닉 마르코프 모델(HMM)보다 더 나은 성능을 보이는 경우가 많습니다. 2009년에는 LSTM을 이용해 구축한 인공신경망 모델이 ICDAR 필기 인식 대회에서 우승했습니다. LSTM은 자율 음성 인식에도 널리 사용되고 있으며, 2013년에는 TIMIT 자연어 데이터베이스를 이용하여 17.7% 오류율이라는 기록을 달성했습니다. 비선형 모델인 LSTM은 복잡한 비선형 단위로 사용되어 더 큰 딥 신경망을 구성할 수 있습니다.
LSTM 네트워크 이해
순환 신경망
인간은 항상 처음부터 생각하는 것은 아니다. 이 글을 읽고 있다면, 이전 단어를 바탕으로 각 단어를 이해하고 있는 것이므로, 모든 것을 버리고 처음부터 생각할 필요는 없습니다. 당신의 생각에는 연속성이 있습니다.
기존의 신경망은 이를 구현할 수 없으며, 이는 큰 단점이 됩니다. 예를 들어, 영화에서 일어나는 사건에 대한 판단을 내려야 한다고 상상해 보세요. 기존 신경망이 이전 이벤트를 기반으로 미래의 이벤트를 추론하는 방법은 명확하지 않습니다.
순환 신경망은 이 문제를 해결하기 위해 설계되었습니다. 순환 신경망 내부에는 정보의 연속성을 유지하기 위한 루프가 있습니다.

위 그림에는 로컬 신경망 ????A, 입력 값 ?????????xt, 출력 값 ℎ????ht가 있습니다. 루프는 정보가 네트워크를 통해 단계적으로 전달되도록 보장합니다.
이러한 루프 때문에 순환 신경망을 이해하기 어렵습니다. 하지만 생각해 보면, 이는 일반적인 신경망과 다르지 않습니다. 순환 신경망은 각각이 다음 네트워크로 정보를 전달하는 동일한 네트워크의 그룹으로 생각할 수 있습니다. 루프를 펼치면 다음과 같습니다.

이러한 체인 구조는 순환 신경망이 시퀀스와 목록과 밀접한 관련이 있음을 자연스럽게 보여줍니다. 이는 신경망이 시퀀스 데이터를 처리하는 데 있어 자연스러운 아키텍처입니다.
물론 가능합니다. 최근 몇 년 동안 RNN은 음성 인식, 언어 모델링, 번역, 이미지 설명 등 여러 분야에서 놀라운 성공을 거두었습니다. RNN의 성과에 대한 논의는 Andrej Karpathy의 블로그에서 다루겠습니다. RNN은 정말 놀랍습니다!
이러한 성공의 핵심은 바로 "LSTM"입니다. LSTM은 많은 문제에서 표준 RNN 버전보다 훨씬 더 뛰어난 성능을 보이는 특수한 종류의 순환 신경망입니다. 순환 신경망으로 달성한 뛰어난 성과는 거의 모두 LSTM을 사용한 데서 비롯되었습니다. 이 문서는 LSTM에 관한 것입니다.
장기 의존성 문제
RNN의 매력 중 하나는 이전 정보를 현재 문제에 연결할 수 있는 능력입니다. 예를 들어, 이전 비디오 프레임을 사용하여 현재 프레임에 대한 이해에 영감을 줄 수 있습니다. RNN이 이런 일을 할 수 있다면 매우 유용할 것입니다. 하지만 그럴 수 있을까? 음, 조건부죠.
때로는 현재의 문제를 해결하기 위해 최근 정보만 살펴봐야 할 때도 있습니다. 예를 들어, 언어 모델은 이전 단어를 기반으로 다음 단어를 예측하려고 합니다. 우리가 "구름이"라고 예측하려고 하면 하늘"더 이상의 맥락은 필요 없으며 다음 단어가 다음과 같다는 것은 분명합니다. 하늘 . 이 경우 관련 정보와 실제 위치 사이의 거리가 짧고, RNN은 과거 정보를 사용하는 법을 학습할 수 있습니다.

하지만 더 많은 맥락이 필요한 경우도 있습니다. "나는 프랑스에서 자랐습니다. 나는 유창하게 말합니다."라고 예측해 보세요. 프랑스 국민.” 가장 가까운 정보를 보면 다음 단어는 아마도 언어의 이름일 가능성이 높지만, 구체적으로 어떤 언어인지 알고 싶다면 더 멀리 있는 문맥, 즉 프랑스의 문맥이 필요합니다. 따라서 관련 정보와 그 정보가 있는 곳 사이의 거리가 매우 멀 수 있습니다.
불행히도 거리가 늘어날수록 RNN은 정보를 연결하는 데 실패하기 시작합니다.

이론상으로는 RNN은 확실히 이런 종류의 "장기 종속성"을 처리할 수 있습니다. 인간은 매개변수를 신중하게 선택함으로써 이러한 형태의 "장난감 문제"를 해결할 수 있습니다. 안타깝게도 실제로 RNN은 이를 학습할 수 없는 듯합니다. 이 문제는 Hochreiter와 Bengio et al.에 의해 심도 있게 탐구되었습니다. 그는 문제의 근본 원인을 발견했습니다.
다행히도 LSTM에는 이런 문제가 없습니다!
LSTM 네트워크
LSTM(장기 단기 메모리 네트워크)은 장기 종속성을 학습할 수 있는 특수한 유형의 RNN입니다. Hochreiter와 Schmidhuber(1997)가 제안하였고, 이후 많은 사람들이 이를 개선하고 확장하였습니다. LSTM은 다양한 문제에서 매우 좋은 성능을 보이며 현재 널리 사용되고 있습니다.
LSTM은 장기 종속성 문제를 피하기 위해 명시적으로 설계되었습니다. 장기간에 걸쳐 정보를 기억하는 것은 실제로 LSTM의 기본 동작이며, 힘들게 배울 필요가 없습니다!
모든 순환 신경망은 사슬 모양의 반복되는 신경망 모듈을 가지고 있습니다. 표준 RNN에서 이 반복 모듈은 단 하나의 tanh 레이어와 같이 매우 간단한 구조를 갖습니다.

LSTM도 이와 유사한 체인 구조를 가지고 있지만, 반복되는 모듈은 다른 구조를 가지고 있습니다. 신경망 계층은 하나가 아니라 네 개가 있으며, 각 계층은 매우 특별한 방식으로 상호 작용합니다.

세부 사항은 걱정하지 마세요. LSTM의 다이어그램은 나중에 살펴보겠습니다. 이제 우리가 사용할 표기법에 익숙해지도록 합시다.

위의 다이어그램에서 각 행은 한 노드의 출력에서 다른 노드의 입력으로 이어지는 완전한 벡터를 포함합니다. 분홍색 원은 벡터 덧셈과 같은 점별 연산을 나타내고, 노란색 상자는 학습된 신경망 계층을 나타냅니다. 행 병합은 연결을 나타내는 반면, 분기는 내용이 복사되어 복사본이 다른 위치로 이동함을 나타냅니다.
LSTM의 핵심 아이디어
LSTM의 핵심은 셀 상태인데, 이는 그림의 위쪽 수평선입니다.
셀 상태는 컨베이어 벨트와 비슷합니다. 이는 일부 사소한 선형적 상호 작용만 있을 뿐, 전체 체인에 걸쳐 실행됩니다. 정보는 변함없이 쉽게 흐릅니다.

LSTM은 "게이트"라고 불리는 정교한 구조를 통해 셀 상태에 정보를 추가하거나 제거할 수 있습니다.
게이트는 선택적으로 정보를 통과시킬 수 있습니다. 이는 시그모이드 신경망 계층과 점별 곱셈 연산으로 구성됩니다.

S자형 네트워크의 출력은 0과 1 사이의 값으로, 정보의 어느 정도 비율이 통과하는지를 나타냅니다. 값 0은 "정보가 전달되지 않음"을 의미하고, 값 1은 "모든 정보가 전달됨"을 의미합니다.
LSTM에는 셀 상태를 유지하고 제어하는 데 사용되는 세 개의 게이트가 있습니다.
LSTM 프로세스의 단계별 분석
LSTM의 첫 번째 단계는 셀 상태에서 어떤 정보를 삭제할지 결정하는 것입니다. 이러한 결정은 "포겟 게이트 계층"이라고 불리는 S자 모양의 네트워크 계층에 의해 내려집니다. ℎ????−1ht−1과 ????????xt를 입력받아 셀 상태 ????????−1Ct−1의 모든 숫자에 대해 0과 1 사이의 값을 출력합니다. 1은 "완전히 수용한다"는 뜻이고, 0은 "완전히 무시한다"는 뜻입니다.
이전 단어를 바탕으로 다음 단어를 예측하려는 언어 모델의 예로 돌아가 보겠습니다. 이 문제에서는 셀 상태에 현재 주어의 품사가 포함될 수 있으므로 올바른 대명사를 사용할 수 있습니다. 새로운 주어를 볼 때, 이전 주어의 품사는 잊어야 합니다.

다음 단계는 셀 상태에 어떤 새로운 정보를 저장해야 하는지 결정하는 것입니다. 여기에는 두 부분이 있습니다. 첫 번째 부분에서는 "입력 게이트 계층"이라고 하는 S자 모양의 네트워크 계층이 어떤 정보를 업데이트해야 하는지 결정합니다. 두 번째 부분에서는 tanh 레이어가 후보 값의 새로운 벡터인 ????̃ ????C~t를 생성하는데, 이 벡터는 셀 상태에 추가될 수 있습니다. 다음 단계에서는 위의 두 부분을 결합하여 상태를 업데이트합니다.
우리의 언어 모델에서는 잊혀져야 할 이전 주어를 대체하여 새로운 주어의 품사를 상태에 추가해야 합니다.

이제 이전 셀 상태 ????????−1Ct−1을 ????????Ct로 업데이트합니다. 이전 단계에서 무엇을 해야 할지 이미 결정되었으므로, 실행하기만 하면 됩니다.
우리는 잊기로 한 것을 잊기 위해 오래된 상태를 ?????????ft로 곱합니다. 그런 다음 각 상태에 대해 결정한 업데이트 값에 따라 크기가 조정된 새로운 후보 값인 ?????????∗???̃ ????it∗C~t를 추가합니다.
언어 모델의 경우, 이는 이전 주어의 품사를 버리고 이전 단계를 기반으로 새 주어의 품사를 추가하는 것입니다.

마지막으로 출력 값을 결정해야 합니다. 출력은 셀 상태에 따라 달라지지만 "필터링된" 버전이 됩니다. 먼저, 셀 상태의 어떤 부분을 출력할 수 있는지 결정하는 시그모이드 계층을 실행합니다. 그런 다음 셀 상태를 tanhtanh에 공급하고(값을 -1-1과 11 사이로 조정) 시그모이드 계층의 출력과 곱하여 원하는 출력을 출력할 수 있습니다.
언어 모델을 예로 들면, 주어가 등장하면, 주어에 대한 정보는 나중에 등장하는 동사에 영향을 미칩니다. 예를 들어, 주어가 단수인지 복수인지 아는 것은 뒤에 오는 동사의 형태를 알려 줍니다.

장기 단기 기억의 변형
지금까지 제가 설명한 것은 매우 일반적인 LSTM 네트워크일 뿐입니다. 하지만 모든 LSTM 네트워크가 위에서 설명한 대로 동일하게 만들어진 것은 아닙니다. 실제로 거의 모든 논문은 특정 버전을 얻기 위해 LSTM 네트워크를 개선합니다. 차이점은 사소하지만, 변형에 대해 알고 있는 것이 필요합니다.
Gers와 Schmidhuber가 제안한 인기 있는 LSTM 변형은 LSTM에 "peephole connection"을 추가했는데, 이는 게이트 네트워크 계층이 셀 상태를 입력할 수 있다는 것을 의미합니다.

위의 이미지에서는 모든 문에 엿볼 수 있는 구멍을 추가했지만, 많은 논문에서는 일부 문에만 엿볼 수 있는 구멍을 추가합니다.
또 다른 변형은 망각과 입력 게이트를 결합한 것입니다. 잊혀질 정보와 추가될 새로운 정보는 따로 결정되는 것이 아니라 동시에 결정됩니다. 뭔가를 입력하면 잊어버리죠. 오래된 정보를 잊어버리면 새로운 데이터를 입력하게 됩니다.

LSTM의 더 흥미로운 변형은 Cho 등이 제안한 Gated Recurrent Unit(GRU)이라고 합니다. GRU는 망각 게이트와 입력 게이트를 하나의 "업데이트 게이트"로 결합하고, 셀 상태를 숨겨진 상태와 결합하며, 다른 변경 사항도 있습니다. 이로 인해 GRU는 표준 LSTM 모델보다 간단해져서 점점 인기를 얻고 있습니다.

다음은 잘 알려진 LSTM 변형 중 일부입니다. Yao 등이 제안한 Depth Gated RNN과 같은 다른 변형도 있습니다. 장기 종속성을 처리하는 데에는 Koutnik 등이 제안한 Clockwork RNN과 같은 완전히 다른 접근 방식도 있습니다.
다음 중 어떤 변형이 가장 좋은가요? 둘 사이의 차이가 중요한가요? 그레프 등 인기 있는 변형을 주의 깊게 비교하는 연구를 수행한 결과, 그것들이 거의 동일하다는 것을 발견했습니다. 요제포비츠 등 10,000개가 넘는 RNN 아키텍처를 테스트한 결과, 일부 아키텍처가 특정 문제에서 LSTM보다 더 나은 성능을 보인다는 것을 발견했습니다.
결론적으로
초기에는 일부 사람들이 RNN을 사용하여 놀라운 결과를 얻고 있다는 것을 알아챘는데, 그들은 거의 항상 LSTM 네트워크를 사용하고 있었습니다. 대부분의 문제에는 LSTM이 훨씬 더 좋습니다!
여러 가지 공식을 나열해 보면 LSTM은 어려워 보입니다. 다행히도, 이 기사에 나와 있는 단계별 분석 덕분에 받아들이기가 더 쉬워졌습니다.
LSTM은 RNN보다 크게 발전된 기술입니다. 더 개선할 여지가 있는지 묻는 것은 당연한 일입니다. 연구자들의 일반적인 대답은 '그렇다!'입니다. 아직 개선의 여지가 있는데, 바로 주의입니다! 주의의 아이디어는 RNN의 각 단계에서 정보가 더 풍부한 곳에서 정보를 추출하도록 하는 것입니다. 예를 들어, RNN을 사용하여 그림에 대한 설명을 생성하려면 그림의 일부를 추출하여 출력 텍스트를 생성해야 합니다. 실제로, 이것이 바로 Xu et al.의 연구 내용입니다. did, 주의에 대해 알아보고 싶다면 꽤 좋은 시작점이 될 겁니다. 주의를 활용한 뛰어난 업적은 그 외에도 많이 있으며, 앞으로 주의는 더욱 강력해질 것입니다...
주의는 RNN 연구에서 유일하게 흥미로운 아이디어는 아닙니다. Kalchbrenner 등이 제안한 Grid LSTM 매우 유망해 보입니다. Gregor et al., Chung et al., Bayer와 Osendorfer가 생성 모델에 RNN을 사용한다는 아이디어도 매우 흥미롭습니다. 지난 몇 년은 순환 신경망에 있어서 엄청난 성과였으며, 앞으로 나올 새로운 결과들은 더욱 희망적일 것입니다.