원 논문: Hochreiter, S. & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735-1780.
RNN(Recurrent Neural Network)은 현재 입력과 이전 상태를 함께 사용하므로, 문장·음성·시계열처럼 순서가 있는 데이터를 처리할 수 있다. 그러나 현재 시점의 오류를 오래전 입력까지 전달해야 할 때 학습이 매우 느려지거나 실패할 수 있다.
논문은 그 원인을 불충분하고 점차 감소하는 오차 역전파(error backflow)에서 찾는다. 먼 과거로 갈수록 학습 신호가 약해져, 과거 정보가 현재 결과에 미치는 영향을 모델이 배우기 어렵다는 뜻이다.
시점 1: 중요한 정보 X
시점 2~999: 잡음 또는 관련 없는 입력
시점 1000: X를 활용해야 정답을 낼 수 있는 출력
이 상황에서 모델은 X를 오래 기억해야 할 뿐 아니라, 현재 오류가 시점 1의 파라미터까지 전달되도록 학습해야 한다.
2절에서 저자들은 당시의 순환 신경망 학습 방법을 검토한다.
| 접근법 | 기본 아이디어 | 긴 시간 지연에서의 한계 |
|---|---|---|
| BPTT | 시간을 펼친 뒤 역전파 | 그래디언트 소실·폭주가 누적됨 |
| RTRL | 순환 가중치의 영향을 실시간 계산 | 계산 비용이 크고 긴 지연에 취약함 |
| Elman Network | 이전 은닉 상태를 문맥으로 사용 | 중요한 과거 정보의 학습 신호가 약해짐 |
| 고정 시간 상수 기반 구조 | 일정 기간 상태를 유지 | 정보 저장·검색을 상황에 맞게 제어하기 어려움 |
논문의 핵심 주장은 단순하다. 기존 방법은 짧은 시간 간격에서는 동작할 수 있지만, 최소 시간 간격이 긴 문제에서는 과거 입력까지 충분한 학습 신호를 전달하기 어렵다.
원 논문은 시간 t에서 유닛 j로 역전파되는 지역 오차를 다음처럼 표현한다.
| 기호 | 의미 |
|---|---|
시간 t에서 유닛 j에 전달되는 오차 신호 | |
유닛 j의 순입력 | |
| 활성화 함수의 미분값 | |
유닛 j에서 다음 유닛 k로 향하는 가중치 | |
| 다음 시간 단계의 연결에서 돌아오는 오차의 합 |
시간을 거꾸로 이동할수록 미분값과 가중치가 계속 곱해진다. 이 곱이 평균적으로 1보다 작으면 오차는 지수적으로 감소하고, 1보다 크면 폭주한다.
현재 출력 오류
→ 현재 은닉 상태
→ 이전 은닉 상태
→ 더 이전 은닉 상태
→ 먼 과거의 입력
따라서 긴 시퀀스에서는 “과거 정보가 중요하다”는 사실을 알더라도, 그 정보를 저장해야 하는 가중치까지 학습 신호가 닿지 않을 수 있다.
저자들은 자기 연결을 가진 선형 유닛 j를 생각한다. 시간 t에서 오차 흐름이 일정하려면 다음 조건이 필요하다.
가장 단순한 방법은 항등 함수와 자기 연결 가중치 1.0을 사용하는 것이다.
이때 상태는 다음처럼 유지된다.
논문은 이 자기 연결 구조를 CEC(Constant Error Carousel)라고 부른다.
| 문제 | 왜 문제가 되는가 | 필요한 해결책 |
|---|---|---|
| 입력 가중치 충돌 | 중요한 입력은 저장해야 하지만, 이후 잡음은 기존 기억을 덮어쓰지 못하게 해야 함 | 입력을 선택하는 장치 |
| 출력 가중치 충돌 | 기억은 필요할 때 사용해야 하지만, 필요 없을 때 다른 유닛을 방해하면 안 됨 | 출력을 선택하는 장치 |
이 두 문제를 해결하기 위해 4절에서 입력 게이트와 출력 게이트가 등장한다.
원 논문의 LSTM 메모리 셀은 다음 요소로 구성된다.
게이트의 순입력은 이전 시점 네트워크 유닛의 출력으로부터 계산된다.
여기서 는 입력 유닛, 게이트 유닛, 메모리 셀, 일반 은닉 유닛 등이 될 수 있다.
원 논문에서 메모리 셀의 내부 상태는 다음처럼 갱신된다.
메모리 셀의 외부 출력은 다음과 같다.
이전 셀 상태 s(t-1)
+
입력 게이트가 허용한 새 정보
↓
현재 셀 상태 s(t)
↓
출력 게이트가 허용한 만큼만 외부로 전달
↓
셀 출력 y(t)
| 구성 요소 | 역할 |
|---|---|
| CEC | 긴 시간 동안 내부 상태와 오차 흐름을 유지하는 통로 |
| 입력 게이트 | 새 입력을 기억에 기록할지 결정 |
| 출력 게이트 | 저장된 기억을 현재 다른 유닛에 공개할지 결정 |
| 셀에 들어갈 후보 정보를 압축하는 미분 가능한 함수 | |
| 셀 상태를 외부 출력에 적합한 값으로 조절하는 함수 |
입력 게이트는 관련 없는 입력이 CEC 내부 기억을 덮어쓰지 못하게 한다. 출력 게이트는 현재 필요하지 않은 기억이 다른 유닛을 교란하지 못하게 한다.
입력 게이트가 닫힘
→ 기존 기억 보호
출력 게이트가 닫힘
→ 기억은 유지하지만 현재 계산에는 노출하지 않음
이로써 LSTM은 다음을 분리한다.
무엇을 기록할지 → 입력 게이트
어떻게 오래 유지할지 → CEC
언제 사용할지 → 출력 게이트
1997년 원 논문에는 Forget Gate가 없다. 현대 LSTM은 이후 Forget Gate를 추가해 이전 셀 상태를 얼마나 유지할지 직접 조절한다.
| 구분 | 1997년 원 논문 | 현대 표준 LSTM |
|---|---|---|
| 핵심 구조 | CEC, 입력 게이트, 출력 게이트 | 셀 상태와 입력·망각·출력 게이트 |
| 기존 기억 처리 | CEC를 유지하고 입력 게이트로 덮어쓰기를 억제 | Forget Gate가 이전 상태 유지 비율을 직접 결정 |
| Forget Gate | 없음 | 있음 |
현대 표준 LSTM의 대표적인 셀 상태 수식은 다음과 같다.
이 수식은 현대 구현을 설명할 때 사용해야 하며, 1997년 원 논문의 수식과 혼동하지 않아야 한다.
논문은 실험 과제를 난도 순으로 배치한다.
| 실험 | 검증하려는 능력 | 핵심 입력 형태 |
|---|---|---|
| 5.1 Embedded Reber Grammar | 출력 게이트의 효과, 기존 기법과의 비교 | 이산 기호 문법 |
| 5.2 Noise-Free and Noisy Sequences | 긴 지연과 대량의 방해 기호 | 이산 기호 + 잡음 |
| 5.3 Noise and Signal on Same Channel | 신호와 잡음이 한 채널에 섞인 경우 | 연속값 단일 채널 |
| 5.4 Adding Problem | 긴 시간 동안 연속값 저장·덧셈 | 실수값 + 마커 |
| 5.5 Multiplication Problem | 비적분적 연산 | 실수값 + 마커 |
| 5.6 Temporal Order | 멀리 떨어진 기호의 순서 기억 | 이산 기호 분류 |
| 5.7 Summary | 실험 조건의 종합 비교 | 표 정리 |
Embedded Reber Grammar는 정해진 문법 규칙으로 생성되는 기호열을 한 글자씩 입력받고, 다음 기호를 예측하는 벤치마크다.
입력: B → T → ... → P → ...
목표: 매 시점마다 다음에 올 수 있는 기호 예측
문자열의 마지막 직전 기호를 올바르게 예측하려면 초반의 두 번째 기호 T 또는 P를 기억해야 한다.
원 논문 표 1의 대표 결과를 블로그용으로 다시 정리하면 다음과 같다.
| 방법 | 가중치 수 | 성공률 | 성공까지 필요한 시퀀스 수 |
|---|---|---|---|
| RTRL | 약 170 | 일부 성공 | 173,000 |
| Elman Network | 약 435 | 0% | 200,000 초과 |
| Recurrent Cascade-Correlation | 약 119-198 | 50% | 182,000 |
| LSTM, 학습률 0.1 | 264 | 100% | 39,740 |
| LSTM, 학습률 0.5 | 276 | 100% | 8,440 |
LSTM은 단순히 문법을 외우는 것이 아니라, 필요한 초기 기호는 저장하되 그 기억이 이후의 쉬운 문법 전이 계산을 방해하지 않게 해야 한다. 이때 출력 게이트가 기억의 공개 시점을 조절한다.
입력은 다음 두 시퀀스 중 하나다.
모델은 매 시점 다음 기호를 예측한다. 마지막 기호 x 또는 y를 맞히려면 맨 처음의 x 또는 y를 p 단계 동안 기억해야 한다.
중간 기호가 규칙적으로 정렬되지 않고, x 또는 y와 무관한 기호가 무작위로 등장한다. 마지막의 예측 가능한 x 또는 y를 맞히기 위해, 모델은 초반의 핵심 기호를 유지해야 한다.
가장 어려운 과제다. 시퀀스는 시작 표식 b, 핵심 기호 x 또는 y, 다수의 무작위 방해 기호, 트리거 e, 최종 답 x 또는 y로 구성된다.
b → x 또는 y → 방해 기호 다수 → e(트리거) → x 또는 y
모델은 트리거 e가 등장했을 때 초반의 핵심 기호가 무엇이었는지 출력해야 한다. 방해 기호는 임의 위치에 들어가며, 긴 경우 최소 시간 지연이 1,000단계에 이른다.
시간 지연 q+1 | 방해 기호 종류 p | 방해 기호당 기대 등장 횟수 q/p | 가중치 수 | 성공까지 시퀀스 수 |
|---|---|---|---|---|
| 51 | 50 | 1 | 364 | 30,000 |
| 101 | 100 | 1 | 664 | 31,000 |
| 201 | 200 | 1 | 1,264 | 33,000 |
| 501 | 500 | 1 | 3,064 | 38,000 |
| 1,001 | 1,000 | 1 | 6,064 | 49,000 |
| 1,001 | 100 | 10 | 664 | 135,000 |
| 1,001 | 50 | 20 | 364 | 203,000 |
시간 지연이 길어지는 것 자체보다, 같은 종류의 방해 기호가 자주 반복되어 기억을 흔드는 상황에서 학습 시간이 더 증가한다. 그럼에도 논문은 최소 시간 지연 1,000단계 설정을 해결했다고 보고한다.
하나의 실수 입력 채널만 사용한다. 두 클래스 중 하나가 동일 확률로 선택되며, 첫 N개 값이 클래스 정보를 갖는다.
클래스 1: 처음 N개 값 = +1.0
클래스 2: 처음 N개 값 = -1.0
이후 값: 평균 0, 분산 0.2의 가우시안 잡음
시퀀스 마지막에서 클래스 1은 1.0, 클래스 2는 0.0을 출력해야 한다.
3a와 달리 클래스 정보를 담은 첫 N개 값에도 잡음이 섞인다. 즉, 모델은 명확한 +1과 -1을 읽는 것이 아니라, 잡음이 섞인 값에서 클래스 신호를 추출해야 한다.
3c는 단순 추측으로 풀기 어려운 형태로 수정된다.
클래스 1의 잡음 없는 목표값: 0.2
클래스 2의 잡음 없는 목표값: 0.8
실제 학습 목표: 목표값에 가우시안 잡음을 더한 값
모델은 잡음이 섞인 목표값을 그대로 외우는 대신, 입력이 주어졌을 때의 조건부 기대값을 학습해야 한다.
최소 시퀀스 길이 T | 핵심 신호 개수 N | 가중치 수 | 오분류 비율 | 기대값과의 평균 차이 |
|---|---|---|---|---|
| 100 | 3 | 102 | 0.00558 | 0.014 |
| 100 | 1 | 102 | 0.00441 | 0.012 |
이 실험은 신호와 잡음이 같은 채널에 있어도 LSTM이 장기 기억을 형성할 수 있는지, 그리고 단순한 분류를 넘어 연속적인 기대값을 예측할 수 있는지 확인한다.
각 입력 요소는 두 성분의 쌍이다.
| 성분 | 설정 |
|---|---|
| 에서 무작위로 뽑은 실수 | |
1.0, 0.0, -1.0 중 하나인 마커 |
시퀀스마다 정확히 두 위치가 M_t=1.0으로 표시된다. 모델은 그 두 위치의 실수 , 를 오랫동안 기억한 뒤, 시퀀스 마지막에서 아래 목표를 출력해야 한다.
-1.0 마커는 시퀀스의 시작과 끝을 표시하며, 나머지 대부분의 위치는 0.0이다.
최소 길이 T | 최소 지연 | 가중치 수 | 2,560개 테스트 중 오답 | 성공까지 시퀀스 수 |
|---|---|---|---|---|
| 100 | 50 | 93 | 1 | 74,000 |
| 500 | 250 | 93 | 0 | 209,000 |
| 1,000 | 500 | 93 | 1 | 853,000 |
논문은 LSTM이 긴 시간 동안 연속값을 큰 손실 없이 저장하고, 분산 표현과 수치 연산이 필요한 과제를 해결할 수 있음을 보인다.
입력 구성과 두 개의 마커 위치는 Adding Problem과 유사하다. 차이는 마지막 목표값이 덧셈이 아니라 곱셈이라는 점이다.
CEC는 이전 상태에 새 값을 더하는 구조이므로, “덧셈 과제는 CEC의 누적 특성 때문에 쉽게 풀린 것 아니냐”는 의문이 생길 수 있다.
곱셈은 단순 누적으로 바로 해결할 수 없는 비적분적 연산이다. 이 과제는 LSTM이 단순 누적기가 아니라, 장기 기억을 바탕으로 더 복잡한 연산도 학습할 수 있는지 검증한다.
시퀀스는 E로 시작하고 B라는 트리거 기호로 끝난다. 그 사이에는 주로 {a,b,c,d}에서 무작위로 선택된 방해 기호가 나타난다. 다만 두 위치에는 X 또는 Y가 등장한다.
| 위치 | 범위 |
|---|---|
| 전체 시퀀스 길이 | 100~110 |
| 첫 번째 중요 기호 | 10~20 |
| 두 번째 중요 기호 | 50~60 |
정답 클래스는 X, Y의 시간 순서로 결정된다.
| 중요 기호 순서 | 클래스 |
|---|---|
| X, X | Q |
| X, Y | R |
| Y, X | S |
| Y, Y | U |
6b에서는 중요 기호가 세 개가 되며, 가능한 순서 조합은 8개다.
| 위치 | 범위 |
|---|---|
| 첫 번째 중요 기호 | 10~20 |
| 두 번째 중요 기호 | 33~43 |
| 세 번째 중요 기호 | 66~76 |
예를 들어 X,Y,X와 Y,X,X는 서로 다른 클래스로 분류해야 한다. 오류 신호는 시퀀스 마지막에만 제공된다.
| 과제 | 가중치 수 | 2,560개 테스트 중 오답 | 성공까지 시퀀스 수 |
|---|---|---|---|
| Task 6a: 중요 기호 2개 | 156 | 1 | 31,390 |
| Task 6b: 중요 기호 3개 | 308 | 2 | 571,100 |
이 실험은 LSTM이 단순히 어떤 기호가 등장했는지를 기억하는 수준을 넘어, 멀리 떨어진 여러 입력의 시간적 순서까지 추출할 수 있음을 검증한다.
5.7절은 앞선 실험의 조건을 원 논문 표 10, 표 11로 종합한다. 세부 표에는 과제 번호, 최소 길이, 지연, 셀 블록 수, 입력·출력 수, 가중치 수, 게이트 편향, 함수, 학습률 등이 기록되어 있다.
블로그 관점에서 중요한 비교 기준은 다음과 같다.
| 실험군 | 핵심 난이도 | 검증한 LSTM 능력 |
|---|---|---|
| 1 | 짧은 지연 문법 | 출력 게이트의 필요성 |
| 2 | 매우 긴 지연, 다수의 방해 기호 | 장기 기억과 잡음 억제 |
| 3 | 신호·잡음이 같은 채널 | 신호 추출과 기대값 예측 |
| 4 | 연속값 2개 저장과 덧셈 | 연속값 장기 보존 |
| 5 | 연속값 2개 저장과 곱셈 | 비적분적 연산 |
| 6 | 여러 기호의 시간 순서 | 다중 장기 의존성 |
멀리 떨어진 두 입력의 XOR를 계산하는 문제는 두 정보 중 하나만 기억해서는 오차를 줄일 수 없다. 따라서 쉬운 하위 문제부터 점진적으로 해결하기 어려운 비분해적 문제다.
메모리 셀 블록마다 입력 게이트와 출력 게이트가 추가된다. 원 논문은 완전 연결 구조에서 가중치 수가 증가할 수 있음을 인정하지만, 실험에서는 비교 모델과 비슷한 가중치 수를 사용하려 했다.
99단계 전과 100단계 전을 반드시 구분해야 하는 문제에는 별도의 카운팅 장치가 필요할 수 있다. 반면 3단계 전과 11단계 전처럼 비교적 큰 시간 차이를 구분하는 것은 가능하다고 설명한다.
논문은 메모리 셀 내부의 CEC가 일정한 오차 흐름을 제공하고, 이것이 긴 시간 간격을 연결하는 기반이라고 결론 내린다.
CEC
→ 정보와 오차 흐름을 장기간 유지
입력 게이트
→ 관련 없는 입력이 기억을 덮어쓰지 못하게 보호
출력 게이트
→ 현재 필요하지 않은 기억이 다른 유닛을 방해하지 않도록 보호
LSTM의 핵심은 “모든 것을 오래 기억한다”가 아니다. 필요한 정보를 선택적으로 기록하고, 보존하고, 필요한 시점에만 출력하는 구조라는 점이다.
1997년 LSTM 논문은 긴 시퀀스에서 RNN이 실패하는 원인을 그래디언트 흐름 관점에서 분석하고, 이를 CEC와 게이트라는 구조로 해결하려 한 연구다.
기존 RNN의 그래디언트 소실·폭주
↓
CEC로 일정한 오차 흐름 확보
↓
입력 게이트로 기록 제어
↓
출력 게이트로 사용 제어
↓
긴 지연·잡음·연속값·시간 순서 실험으로 검증
현대 LSTM은 Forget Gate 등을 추가하며 발전했지만, 긴 시간 간격의 정보를 학습하기 위해 기억 경로와 게이트 제어를 분리한다는 원 논문의 핵심 아이디어는 그대로 이어지고 있다.