티스토리 뷰

NLP (Natural Language Processing)

LSTM (Long Short Term Memory)

기내식은수박바 2019. 11. 15. 23:01
반응형

원본

 

The Problem of Long-Term Dependencies

  • RNN의 매력 중 하나는 RNN이 이전 정보를 이전 비디오 프레임을 사용하는 것이 현재 프레임을 이해하는데 도움을 줄 수도 있는 것 같은 현재 작업에 연결할 수 있다는 아이디어임.
  • RNN이 이러한 것을 할 수 있었다면, 엄청나게 유용했을지도 모름. 하지만, 상황에 따라 다름.
  • 가끔, 우리는 현재 작업을 수행하기 위해 최근 정보만을 볼 필요가 있음.
  • 예를 들어, 언어 모델이 이전 단어를 기반으로 다음 단어를 예측하기 위해 시도하는 것을 생각해보겠음.
  • 만약 우리가 "the clouds are in the sky," 의 마지막 단어를 예측하려고 한다면, 우리는 더이상의 맥락은 필요가 없음. 다음 단어가 sky가 될 것이라는 것은 꽤 명백함.
  • 그러한 케이스들에서, 관련 정보와 장소 사이의 갭이 작은 경우, RNN은 과거 정보를 사용하여 학습할 수 있음.

  • 하지만, 문맥이 더 필요한 사례들이 있음. 텍스트 "I grew up in France... I speak fluent French." 에서 마지막 단어를 예측한다고 생각해보겠음.
  • 최근 정보는 다음 단어가 아마도 언어 이름이라고 암시할 수 있지만, 우리가 어느 언어인지 좁히려면, 더 먼 곳에서 부터 프랑스의 문맥이 더 필요함.
  • 불행히도, 갭이 커질수록, RNN은 정보를 연결하는 것을 학습하지 못하게 됨.

  • 이론적으로, RNN은 절대적으로 그러한 "long-term dependencies"를 다룰 수 있음.
  • 사람은 이러한 형태의 장난감 문제들을 해결하기 위해 RNN의 파라미터를 조심스럽게 선택할 수 있음.
  • 실제로는, RNN이 그러한 문제들을 학습할 수 없는 것처럼 보임.
  • RNN은 시간을 따라 해석하는 BPTT(Back-Propagation Through Time) 방식을 취함.
  • 일반적인 신경망에서도 망이 깊어지면 Vanishing / Exploding Gradient 문제로 학습시키고 어려웠고, RNN 또한 마찬가지로 Chain Rule에 의해 연결의 길이가 매우 길어지게 되므로 같은 문제가 발생함.

  • 다행히도 LSTM은 이러한 문제를 가지고 있지 않음.

 

LSTM Networks

  • 보통 "LSTM" 이라 불리는 Long Short Term Memory 네트워크는 특별한 종류의 RNN이며, Long-Term Dependencies를 학습할 수 있음.
  • LSTM은 매우 다양한 문제들에서 잘 작동하며, 현재 널리 사용되고 있음.
  • LSTM은 Long-Term Dependency 문제를 피하기 위해 명확하게 설계됨.
  • 오랫동안 정보를 기억하는 것은 사실상 LSTM의 기본 행동이며, 그들이 배우려고 노력하는 것이 아님.
  • 모든 RNN은 신경망 모듈의 반복적인 체인 형식을 가짐.
  • 표준 RNN의 경우, 이러한 반복적인 모듈은 단일 tanh 계층 같은 매우 간단한 구조를 가지게 될 것임.

  • LSTM도 마찬가지로 체인 같은 구조를 가지지만, 반복적인 모듈은 다른 구조를 가짐.
  • 단일 신경망 계층을 가지는 것 대신에, 매우 특별한 방법으로 상호작용하는 4개의 계층이 있음.

  • 위 다이어그램에서, 각 라인은 하나의 출력 노드에서 다른 입력 노드로 전체 벡터를 옮김.
  • 핑크색 동그라미는 벡터 덧셈 같은 Pointwise 작동을 나타내고, 노란색 사각형은 신경망 계층을 나타냄.
  • 라인을 병합하는 것은 연쇄 (Concatenate) 를 나타내고, 라인을 분기하는 것은 내용을 복사하고 복사본이 다른 곳으로 가는 것을 나타냄.

 

The Core Idea Behind LSTMs

  • RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀 (Cell) 이라고 함.
  • 이 Cell은 이전의 값을 기억하려고 하는 일종의 메모리 역할을 수행하므로, 이를 Memory Cell 또는 RNN Cell이라고 표현함.
  • LSTM의 핵심은 Cell State이며, 다이어그램 상단을 지나가는 수평선임.
  • Cell State는 컨베이어 벨트와 같은 종류임. 이는 전체 사슬을 곧장 내려가며 약간의 선형 상호작용만 함.
  • 정보가 변하지 않고 흘러 가는 것은 매우 쉬움.

  • LSTM은 Gates라 불리는 구조에 의해 조심스럽게 규제된 Cell State 에서 정보를 추가하거나 제거 하는 활동을 가짐.
  • Gates는 선택적으로 정보를 전달하는 방법임. 이들은 시그모이드 신경망 계층과 Pointwise 곱셈 작동으로 구성됨.

  • 시그모이드 계층은 0과 1사이의 값을 출력하며, 이는 각 구성요소가 얼마나 전달되는지를 묘사함.
  • 0 값은 "아무것도 전달하지 않음"을 의미하는 반면, 1 값은 "전체를 전달함'을 의미함.

 

Step-by-Step LSTM Walk Through

  • LSTM의 첫 번째 단계는 우리가 Cell State에 어떤 정보를 전달할 것인지 결정하는 것임.
  • 이 결정은 "Forget Gate Layer" 라 불리는 시그모이드 계층에 의해 만들어짐.
  • h_(t-1) 과 x_t가 있고, Cell State C_(t-1) 에서 각 숫자에 대해 0과 1사이의 값으로 출력함.
  • 1은 "완전히 이것을 유지하라"를, 0은 "완전히 이것을 없애라"를 나타냄.
  • 이전 모든 단어들을 기반으로 다음 단어를 예측하는 언어 모델의 예시로 돌아가보겠음.
  • 그러한 문제에서, Cell State는 현재 Subject의 Gender를 포함할 수 있으며, 이는 정확한 대명사를 사용할 수 있도록 하기 위함임.
  • 우리가 새로운 Subject를 볼 때, 구 Subject의 Gender를 잊어버리고 싶음.

  • 다음 단계는 Cell State에 어떤 새로운 정보를 저장할 지 결정하는 것임.
  • 이 단계는 두 파트로 나뉨.
    1. 입력 게이트 계층 (Input Gate Layer) 라 불리는 시그모이드 계층에서 어떤 값들을 갱신할지 결정함.
    2. tanh 계층은 C~_t 으로 표시되는 새로운 후보 값 벡터를 만들어 내며, 이는 State에 추가될 수도 있음.
  • 다음 단계에서, 우리는 갱신한 State를 만들기 위해 이러한 두 가지 파트를 결합할 것임.
  • 언어 모델 예제에서, 우리는 Cell State의 새로운 Subject Gender를 추가하기를 원하며, 우리가 잊고 있는 구 Subject Gender를 대신함.

  • 이제 구 Cell State C_(t-1) 를 새로운 Cell State C_t로 갱신할 시간임. 
  • 이전 단계에서 이미 무엇을 해야 하는지 결정했으며, 우리는 그 방법을 그냥 실행하면 됨.
  • 우리는 이전에 잊기로 결정한 것들을 잊어버린 채로 구 State를 f_t로 곱하고, 그런 다음 i_t * C~_t를 더함.
  • 각 State 값을 얼마나 갱신할지 결정했던 것에 의해 Scaled된 새로운 후보 값들임.
  • 언어 모델 사례에서, 이전 단계에서 결정한 바와 같이, 우리는 실제로 구 Subject의 Gender에 대한 정보를 삭제하고 새로운 정보를 추가함.

  • 마지막으로, 우리는 무엇을 출력할지 결정해야함. 이 출력은 Cell State가 바탕이 될 것이지만, 필터링된 버전이 될 것임.
  • 첫 번째로, Cell State의 어떤 부분을 출력할 지 결정하는 시그모이드 계층을 실행함.
  • 그런 다음, Cell State를 tanh (-1 과 1사이의 값으로 만드는) 에 넣고, 이를 시그모이드 게이트의 출력과 곱하여, 우리가 결정한 부분만 출력함.
  • 언어 모델 예시의 경우, 방금 Subject를 봤기 때문에, 다음에 오는 것이 동사와 관련된 정보를 출력하고 싶을지도 모름.
  • 예를 들어, Subejct가 단수인지 복수인지 출력할 수 있음. 그래서 우리는 동사가 다음에 어떤 형태로 결합되어야 하는지를 알 수 있음.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함