딥러닝 프레임워크/자연어 처리

LSTM (1)

Zoo_10th 2024. 4. 19.

1. LSTM(Long Short-Term Memory)

LSTM은 장기 의존성 문제를 해결하기 위해 고안된 RNN의 한 변형으로, 바닐라 RNN의 구조적 한계를 극복한다. LSTM은 바닐라 RNN과는 달리 정보를 장기간 기억하는 능력이 뛰어나며, 이는 내부적인 게이트 구조 덕분이다. 이 게이트들은 네트워크가 장기간 정보를 저장하거나 삭제할 때 필요한 컨트롤을 제공한다.

2. LSTM 활용

2-1. LSTM의 장점

1) 장기 의존성 문제 해결

LSTM은 시퀀스가 길어짐에 따라 정보가 손실되는 것을 방지하고, 필요한 정보를 장기간 유지할 수 있다.

2) 유연한 정보 처리

삭제 게이트와 입력 게이트를 통해 정보를 유연하게 삭제하거나 추가할 수 있다. 이는 다양한 시퀀스 길이와 다이내믹한 정보 변화에 효과적으로 대응할 수 있게 한다.

2-2. LSTM의 활용 사례

LSTM의 유연성과 강력한 정보 처리 능력 덕분에, 다양한 분야에서 광범위하게 활용되고 있다.

1) 자연어 처리 (NLP)

 - 기계 번역: LSTM은 문맥을 이해하고, 소스 언어의 텍스트를 타겟 언어로 정확하게 번역하는 데 사용된다.

 - 텍스트 생성: LSTM은 주어진 데이터나 문맥에 기반하여 자연스러운 텍스트를 생성할 수 있다. 이는 스토리텔링, 자동 기사 작성, 대화형 시스템 등에 활용된다.

 - 감성 분석: 소셜 미디어 포스트, 리뷰 등에서 감정을 분석하여 긍정적, 부정적 또는 중립적인 감정을 판단할 수 있다.

2) 시계열 예측

 - 주식 시장 예측: 과거의 주가 데이터를 학습하여 미래의 주가 변동을 예측한다.

 - 수요 예측: 판매 데이터를 기반으로 향후 제품의 수요를 예측하여 재고 관리와 공급 체인 최적화를 지원한다.

 - 기상 예측: 기상 데이터를 분석하여 미래의 날씨 변화를 예측한다.

3) 음성 인식

 - 음성 인식 시스템: 사람의 음성을 실시간으로 텍스트로 변환한다. 이는 가상 비서, 자동화된 고객 지원 등에 활용된다.

4) 음악 생성

 - 음악 작곡: LSTM은 다양한 악기의 소리를 학습하여 새로운 음악 작품을 생성할 수 있다.

3. LSTM의 구조

LSTM은 기본적인 RNN의 히든 레이어 대신, 좀 더 복잡한 LSTM 셀을 사용한다. 각 LSTM 셀은 입력 게이트, 망각 게이트(또는 삭제 게이트), 출력 게이트를 포함한다. 이 게이트들은 셀 상태라고 불리는 내부 상태의 업데이트를 조정한다.

1) 입력 게이트: 이 게이트는 새로운 정보를 셀 상태에 추가할 때 사용된다. 현재 입력과 이전 시점의 은닉 상태가 얼마나 셀 상태에 영향을 미칠지를 결정한다.

2) 망각 게이트: 셀 상태에서 불필요한 정보를 제거한다. 이 게이트는 어떤 정보를 "잊어야 할지"를 결정하는 데 사용된다.

3) 출력 게이트: 셀 상태의 어떤 정보를 다음 히든 상태로 출력할지를 결정한다. 이 출력은 다음 시점의 LSTM 셀로 전달되며 다른 네트워크 부분으로도 전송될 수 있다.

3-1. 입력 게이트

이 게이트는 어떤 새로운 정보를 셀 상태에 추가할지 결정한다. 입력 게이트의 메커니즘은 크게 두 부분으로 구성된다. 하나는 새로운 정보를 얼마나 수용할 것인지 결정하는 시그모이드 함수 부분이고, 다른 하나는 새로운 후보 값을 생성하는 탄젠트 함수 부분이다.

1) 시그모이드 게이트 레이어

시그모이드 함수는 현재 입력 x_t와 이전 은닉 상태 h_(t-1)에 대한 정보를 결합하여 어떤 정보를 셀 상태에 추가할지 결정한다. 이 함수는 0과 1 사이의 값을 출력하여, 각 셀 상태의 요소가 업데이트될 비율을 결정한다. 

W_i는 입력과 관련된 가중치, b_i는 편향이며, sigma는 시그모이드 활성화 함수이다. i_t는 입력 게이트의 출력이며, 이는 새로운 셀 상태 C_t의 일부분을 얼마나 업데이트할지를 결정하는 데 사용된다.

2) 탄젠트 게이트 레이어

하이퍼볼릭 탄젠트 함수는 새로운 후보 값을 생성하는 데 사용된다. 이 값은 셀 상태에 추가될 수 있는 새로운 정보를 포함하고 있으며, 이전 상태와 입력의 혼합을 통해 계산된다. 

여기서 W_C는 새로운 후보 값을 생성하기 위한 가중치, b_C는 편향이다. tanh는 하이퍼볼릭 탄젠트 활성화 함수로, 출력 범위가 -1에서 1까지이다.

3) 셀 상태 업데이트

입력 게이트와 새로운 후보 값이 계산되고 나면, 이 두 값은 요소별 곱(entrywise product)을 통해 결합되어 셀 상태를 업데이트하는 데 기여한다. 새로운 셀 상태 C_t는 이전 셀 상태 C_{t-1}와 결합하여 업데이트된다.

여기서 f_t는 망각 게이트의 출력으로, 이전 셀 상태의 어느 부분을 잊어야 할지 결정한다. i_t는 입력 게이트의 출력으로, 새로운 후보 값 중 얼마나 많은 부분을 현재 셀 상태에 추가할지 결정한다.

입력 게이트는 LSTM 셀의 중요한 구성 요소로, 새로운 정보가 셀 상태에 통합되는 방식을 결정한다. 이 과정은 네트워크가 중요한 정보를 장기간 보존하고 필요하지 않은 정보를 제거하는 데 도움을 주어, 복잡한 시퀀스 데이터를 효과적으로 처리할 수 있게 한다.

3-2. 망각 게이트

삭제 게이트(Forget Gate)는 LSTM 네트워크의 중요한 구성 요소로, 이전의 셀 상태에서 어떤 정보를 "잊어버릴지" 결정하는 역할을 한다. 이 게이트는 현재 입력과 이전 은닉 상태를 바탕으로 어떤 정보를 셀 상태에서 유지하고 어떤 정보를 삭제할지를 조정한다.

1) 삭제 게이트의 작동 방식

 - f_t 는 시점 t 에서의 삭제 게이트의 출력이다.

 - σ는 시그모이드 함수로, 출력을 0과 1 사이의 값으로 제한한다.

 - W_f는 삭제 게이트의 가중치이다.

 - h_(t-1)는 이전 시점 t-1의 은닉 상태이다.

 - x_t는 현재 시점 t 의 입력이다.

 - b_f는 삭제 게이트의 편향이다.

2) 기능적 의미

시그모이드 함수의 출력인 f_t는 각 셀 상태의 요소가 다음 시점의 셀 상태에 얼마나 영향을 미칠지를 결정한다. 출력값 f_t 가 1에 가깝다면 이전 시점의 셀 상태 요소는 "잊혀지지 않고" 유지된다. 반면, f_t가 0에 가까우면 해당 셀 상태 요소는 "잊혀져서" 거의 영향을 미치지 않는다.

3) 삭제 게이트의 역할

LSTM에서 삭제 게이트의 역할은 매우 중요하다. 이 게이트를 통해 모델은 불필요한 정보를 제거하고 중요한 정보만을 유지함으로써 효율적인 학습과 예측을 수행할 수 있다. 예를 들어, 텍스트 데이터에서 주제가 바뀌는 지점에서 과거의 정보를 "잊어버리는" 것이 유용할 수 있다.

 

이 과정을 통해 LSTM은 오래된 정보를 어느 정도 "잊어버리고" 새로운 정보를 추가함으로써, 적절한 시점에 정보를 갱신할 수 있다. 이는 LSTM이 복잡한 시퀀스 데이터에서 장기 의존성을 효과적으로 관리하는 데 큰 도움을 준다.

3-3. 셀 상태의 업데이트 메커니즘

셀 상태 C_t는 LSTM의 핵심적인 부분으로, 네트워크의 장기 기억을 담당한다. 이 상태는 각 시점마다 업데이트되며, 삭제 게이트와 입력 게이트의 출력에 따라 조정된다.

셀 상태의 업데이트 과정은 LSTM이 시간에 따라 정보를 유지하거나 삭제하는 방법을 제어한다. 이는 LSTM이 복잡한 시퀀스 데이터에서 중요한 정보를 장기간 기억할 수 있게 하는 핵심적인 요소이다. 각 게이트의 조합은 네트워크가 필요한 정보를 보존하고 불필요한 정보를 효율적으로 제거할 수 있도록 조정한다.

1) 삭제 게이트의 작용

 - 삭제 게이트f_t는 이전 셀 상태 C_(t-1)의 각 요소에 대해 유지할 정보의 비율을 결정한다.

 -

에서 계산된 f_t는 이전 셀 상태의 정보를 얼마나 "잊을 것인가"를 결정하는 0과 1 사이의 값이다.

2) 입력 게이트와 새로운 후보값의 조합

 - 입력 게이트i_t는 새로 들어올 정보의 중요도를 평가하며, 이는 새로운 셀 상태에 얼마나 큰 영향을 미칠지를 결정한다.

 - 새로운 후보값은 현재 입력과 이전 은닉 상태를 기반으로 계산되며, 가능한 새로운 셀 상태의 값을 제공한다.

를 원소별 곱하여 새로운 정보를 셀 상태에 추가할 준비를 한다.

3) 셀 상태의 최종 업데이트

 - 셀 상태는 이전 시점의 셀 상태와 현재 시점에서의 입력 게이트를 통해 결정된 새로운 정보를 결합하여 업데이트 된다.

 - 최종 셀 상태는 다음과 같이 계산된다.

 - 이 공식에 따라, 삭제 게이트의 결과 f_t가 이전 셀 상태 C_(t-1)에 곱해져 필요 없는 정보를 제거하고, 입력 게이트와 새로운 후보값의 결과가 새로운 정보를 추가한다.

3-4. 출력 게이트

출력 게이트(Output Gate)는 LSTM에서 중요한 역할을 하며, 셀 상태의 정보 중 어느 부분을 다음 계층으로 전달할지 결정한다. 이 게이트의 작동은 셀 상태를 통제하는 데 중요한 역할을 하며, LSTM이 시퀀스 데이터를 처리하는 과정에서 핵심적인 정보를 선택적으로 유지하고 전달하는 데 도움을 준다.

1) 출력 게이트와 은닉 상태의 관계

출력 게이트는 현재 입력 x_t와 이전 은닉 상태 h_(t-1)를 입력으로 받아 시그모이드 함수를 통과한다. 이 함수는 0과 1 사이의 값을 출력하여, 셀 상태의 어떤 부분이 다음 은닉 상태로 전달될지를 결정한다.

W_o는 출력 게이트의 가중치, b_o는 편향이다.

2) 은닉 상태의 계산

은닉 상태 h_t는 출력 게이트의 결과 o_t와 셀 상태 C_t의 tanh 함수 결과의 원소별 곱(entrywise product)으로 계산된다. 이 과정은 셀 상태의 정보를 필터링하여, 중요한 정보만을 다음 단계로 전달한다.

3) 출력 게이트의 역할

 - 정보 필터링

출력 게이트는 셀 상태의 정보를 필터링하여, 다음 시점의 은닉 상태로 전달할 정보를 결정한다. 이 과정을 통해 모델은 중요한 정보를 강조하고 불필요한 정보를 억제할 수 있다.

 - 다음 계층으로의 정보 전달

은닉 상태는 LSTM 셀의 최종 출력으로, 다음 계층 또는 다음 시점의 LSTM 셀로 전달된다. 이 출력은 또한 최종 예측을 위해 다른 신경망 구조나 출력층으로 전달될 수 있다.

 - 연속적인 의사결정

출력 게이트는 각 시점에서 어떤 정보가 활성화되어야 할지를 결정함으로써, LSTM이 시간에 따른 연속적인 의사결정을 가능하게 한다.

이 게이트를 통해 LSTM은 시간에 걸쳐 중요한 정보를 효과적으로 유지하고 전달할 수 있으며, 복잡한 시퀀스 데이터를 처리하는 데 있어 우수한 성능을 발휘한다. 

4. LSTM 실습

4-1. 뉴스데이터 분류

5. 리뷰 감성 분석

5-1. BiLSTM을 텍스트 분류에 사용하기

양방향 LSTM은 두 개의 독립적인 LSTM 아키텍처를 함께 사용하는 구조다. 위 그림에서 주황색 LSTM 셀은 순차적으로 입력을 받는다. 자연어 처리라고 한다면, 마치 사람처럼 문장을 왼쪽 단어부터 순차적으로 읽는 셈이다. 양방향 LSTM은 뒤의 문맥까지 고려하기 위해서 문장을 오른쪽에서 반대로 읽는 역방향의 LSTM 셀(위 그림에서 초록색)을 함께 사용한다. 이 두 가지 정보를 고려하여 출력층에서 예측 시에 두 가지 정보를 모두 사용한다.

케라스에서는 양방향 LSTM을 사용하면서 return_sequences=False를 택할 경우에는 위의 그림과 같이 동작하고 있다. 순방향 LSTM의 경우에는 마지막 시점의 은닉 상태를 반환하고, 역방향 LSTM의 경우에는 첫번째 시점의 은닉 상태를 반환한다. 위 구조를 통해서 양방향 LSTM으로 텍스트 분류를 수행할 수 있다.

6. BiLSTM 모델을 활용한 분석

728x90

'딥러닝 프레임워크 > 자연어 처리' 카테고리의 다른 글

RNN 실습  (0) 2024.04.18
RNN 문자 생성  (0) 2024.04.18
RNN (1)  (0) 2024.04.18
자연어 처리 예제(1)  (0) 2024.04.17
자연어 처리(Text Mining)  (0) 2024.04.16

댓글