LSTM (Long Short Term Memory) 반복 신경망의 직관은 무엇입니까?


11

RNN (Recurrent Neural Network)의 기본 개념은 분명합니다. 나는 다음과 같은 방식으로 이해합니다 :
우리는 일련의 관측치 ( o1,o2,,on ) (즉, 다변량 시계열)가 있습니다. 각 단일 관측치 oiN 차원 숫자 형 벡터입니다. RNN 모델 내에서 다음 관측치 oi+1 은 이전 관측치의 함수 oi 및 이전 "숨겨진 상태" hi여기서 숨겨진 상태는 숫자 형 벡터로 표시됩니다 (관찰 된 상태와 숨겨진 상태의 차원이 다를 수 있음). 숨겨진 상태 자체는 또한 이전 관측치와 숨겨진 상태에 의존하는 것으로 가정합니다.

oi,hi=F(oi1,hi1)

마지막으로 RNN 모델에서 함수 F 는 신경망 인 것으로 가정합니다. 우리는 이용 가능한 데이터 (일련의 관측치)를 사용하여 신경망을 훈련 (적합)합니다. 교육에서 우리의 목표는 이전 관측치를 사용하여 다음 관측을 가능한 정확하게 예측할 수 있도록하는 것입니다.

이제 LSTM 네트워크는 RNN 네트워크의 수정입니다. 내가 이해하는 한 LSTM의 동기는 RNN 특유의 짧은 메모리 문제를 해결하는 것입니다.

LSTM 네트워크의 작동 방식을 이해합니다. 내가 찾은 LSTM에 대한 가장 좋은 설명은 다음과 같습니다 . 기본 아이디어는 다음과 같습니다.

ci

ci+1=ω1(oi,hi)ci+ω2(oi,hi)cint(oi,hi),

ω1ω2cint

ci+1=ω1ci+ω2cint

cici1cint

ω2ω1ω1ω1ω2

oihihint

hi+1=hintS(ci+1),

S

그래서 제 질문은이 아키텍처가 왜 문제를 해결합니까 (또는 정확히)?

특히 나는 다음을 이해하지 못한다.

  1. 신경망을 사용하여 "오래된"메모리 (또는 셀 상태)와 혼합되어 "새로운"메모리 (셀 상태)를 얻는 "중간"메모리 (셀 상태 벡터)를 생성합니다. 혼합에 대한 가중치는 신경망에 의해 계산됩니다. 그러나 왜 하나의 신경망을 사용하여 "새로운"셀 상태 (또는 메모리)를 계산할 수 없습니까? 다시 말해, 왜 우리는 "새로운"메모리를 계산하는 신경망에 대한 입력으로 관측 된 상태, 숨겨진 상태 및 오래된 메모리를 사용할 수 없습니까?
  2. 결국 우리는 관찰 및 숨겨진 상태를 사용하여 새로운 숨겨진 상태를 계산 한 다음 "새"셀 상태 (또는 (장기) 메모리)를 사용하여 새로 계산 된 숨겨진 상태의 구성 요소를 수정합니다. 즉, 셀 상태의 구성 요소는 계산 된 숨겨진 상태의 해당 구성 요소를 줄이는 가중치로 사용됩니다. 그러나 왜 세포 상태 벡터가이 특별한 방식으로 사용됩니까? 셀 상태 벡터 (장기 메모리)를 신경망의 입력 (관측 및 숨겨진 상태를 입력으로 사용)에 입력하여 새로운 숨겨진 상태를 계산할 수없는 이유는 무엇입니까?

추가 :

다음은 다른 게이트 ( "keep", "write"및 "read")가 어떻게 구성되어 있는지 명확히 하는 데 도움 이되는 비디오입니다 .


1
LSTM을 나보다 잘 이해하는 것 같습니다. 실제로 답변하지 않을 것입니다. 왜냐하면 LSTM 게이트 (주로 잊어 버린 게이트)를 통해 활성화 및 그라디언트를 오랫동안 유지할 수 있습니다. 필요에 따라. 따라서, 시간 t에서의 정보는 시간 t + n까지 임의적으로 큰 n에 대해 유효하게 유지 될 수있다.
rcpinto

@rcpinto, 나는 또한 제안 된 "아키텍처"의 기본 아이디어는 오랫동안 정보를 유지할 수 있도록하는 것이라고 생각합니다 (많은 시간 단계). 그러나 나는 그것이 정확히 무엇을 가능하게하는지 이해하지 못합니다. 두 게이트 네트워크 ( "keep"및 "write")는 keep-weights가 커야하고 write-weights가 작아야한다는 것을 알 수 있습니다 (그런 다음 오랫동안 메모리를 유지함). 그러나 하나의 네트워크만으로는 달성 할 수 없습니까? 신경망 (숨겨진 상태 (메모리) 및 관찰 가능한 상태를 입력으로 사용)은 숨겨진 상태가 변경없이 유지되어야한다는 것을 배울 수 없습니까?
로마

실제로 반복 가중치 행렬을 ID로 설정하면 항상 마지막 활성화가 유지 됩니다 . 문제는 항상 부분입니다. 즉, 새로운 입력이 신경 활성화를 축적하고 빠르게 포화시키는 것을 의미합니다. 따라서 이전 메모리를 지우거나 새 메모리의 형성을 차단하는 기능이 중요합니다.
rcpinto

@rcpinto, 그러나 "이전 메모리를 지우거나 새로운 메모리의 형성을 차단하는 능력"이 단일 신경망 내에서 달성 될 수 없습니까? 신경망은 메모리 벡터 (또는 숨겨진 상태 벡터)와 관측 된 상태 벡터를 입력으로받습니다. 이러한 네트워크가 관측 된 상태 벡터의 구성 요소 값을 기반으로 숨겨진 상태 (메모리)의 일부 구성 요소를 유지하거나 대체 할 수 있습니까?
로마

전류 입력 및 상태에 따라 게이트가 열리거나 닫히기 때문에 LSTM이이를 수행 할 수 있습니다. 간단한 RNN에는 그러한 개념이 없습니다. 이 경우 상태 자체는 항상 직접 입력 / 상태에 직접 반응하여 새 정보를 저장할지 여부를 "선택"할 수 없습니다. 또한 저장된 메모리를 지우는 메커니즘이 없으며 뉴런에 대한 입력 가중치에 따라 항상 누적되며 훈련 후에는 가중치를 변경할 수 없습니다. LSTM 게이트는 곱하기 때문에 추론 중 무게 변화를 시뮬레이션하여 전류 입력 / 상태에 반응합니다.
rcpinto

답변:


1

당신의 질문을 이해하는 것처럼, 당신이 그림은 기본적으로 입력, 이전 숨겨진 상태 및 이전 셀 상태를 연결하고 하나 또는 여러 개의 완전히 연결된 계층을 통과하여 독립적으로 계산하는 대신 "숨겨진 상태 및 셀 상태를 계산하여 출력 숨겨진 상태 및 셀 상태를 계산하는 것입니다. 셀 상태와 산술적으로 상호 작용하는 업데이트. 이것은 기본적으로 숨겨진 상태의 일부만 출력하는 일반 RNN을 만듭니다.

이것을하지 않는 주된 이유는 LSTM의 셀 상태 계산 구조가 긴 시퀀스를 통해 일정한 오류 흐름을 보장하기 때문 입니다. 셀 상태를 직접 계산하기 위해 가중치를 사용한 경우 각 단계마다 가중치를 역 전파해야합니다! 이러한 작업을 피하면 RNN을 괴롭히는 소멸 / 폭발 그라디언트가 크게 해결됩니다.

또한 더 긴 시간에 걸쳐 정보를 쉽게 유지하는 기능은 좋은 보너스입니다. 직관적으로, 더 긴 시간에 걸쳐 셀 상태를 보존하기 위해 네트워크를 처음부터 배우기가 훨씬 더 어려울 것입니다.

LSTM에 대한 가장 일반적인 대안 인 GRU 는 숨겨진 상태 자체에서 직접 작동하는 가중치를 학습하지 않고 숨겨진 상태 업데이트를 유사하게 계산 한다는 점에 주목할 가치가 있습니다.


0

내가 정확하게 이해했다면 두 가지 질문이 이것으로 요약됩니다. 정보 처리를 위해 tanh와 sigmoid를 모두 사용하는 두 곳. 그 대신 모든 정보를 받아들이는 하나의 단일 신경망을 사용해야합니다.

하나의 신경망을 사용하는 데 따른 단점을 모릅니다. 내 생각에 우리는 적절하게 사용될 벡터를 올바르게 배우는 S 자형 비선형 성을 가진 단일 신경망을 사용할 수 있습니다 (첫 번째 경우 셀 상태에 추가되거나 두 번째 경우 숨겨진 상태로 전달됨).

그러나 지금 우리가하고있는 방식은 두 부분으로 과제를 나누고 있습니다. 하나는 시그 모이 드 비선형 성을 사용하여 보관할 데이터의 양을 배우는 부분입니다. tanh를 비선형 성으로 사용하는 다른 부분은 중요한 정보를 배우는 작업을 수행하는 것입니다.

간단히 말하면, 시그 모이 드는 저장하는 양을 배우고 tanh는 저장해야 할 것을 배우고 두 부분으로 나누면 훈련이 쉬워집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.