일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- instaloader
- Seq2Seq
- 정렬
- 회귀
- 국민대
- GIT
- 스택
- gan
- SQL
- 머신 러닝
- Stack
- programmers
- 운영체제
- OS
- LSTM
- C++
- googleapiclient
- db
- 파이썬
- machine learning
- Heap
- Python
- 국민대학교
- 프로그래머스
- 재귀
- Regression
- python3
- kmu
- PANDAS
- 데이터베이스
- Today
- Total
정리 노트
LSTM(Long Short Term Memory) 본문
이 포스트는 국민대학교 소프트웨어학부 '인공지능' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다!
LSTM은 RNN에 대한 기초적인 지식을 요구하기 때문에 RNN에 관련한 글을 읽고 이 글을 읽으시는 것을 추천드립니다. 제가 저번에 썼던 글을 읽으셔도 괜찮습니다.
2022.12.12 - [개념 정리/머신러닝 & 딥러닝 & A.I] - RNN(Recurrent Neural Network)
LSTM을 사용하는 이유
저희에게 아주 긴 문장을 RNN의 입력으로 넣는다고 합시다. 예를 들어 "글쓴이는, 어제는 친구와 PC방을 다녀왔고, 그저께는 마트에 가서 라면을 사 오고, 그 전날은 대학교 친구들과 함께 밤을 새우면서 과제를 같이 했기 때문에 오늘은 집에서 푹 쉬기로 작정하였다."라는 문장이 있다고 합시다. 이 문장에서 '글쓴이는'과 '쉬기로'는 아주 밀접한 관련을 갖고 있는 것을 알 수 있습니다. 아주 밀접한 관련을 가지고 있지만 서로 간의 위치가 멀리 있습니다. 이렇듯 관련된 요소가 멀리 떨어져 있는 상황을 장기 문맥 의존성이라고 합니다.(https://velog.io/@peterpictor/%EB%94%A5%EB%9F%AC%EB%8B%9D-RNN%EC%9E%A5%EA%B8%B0-%EB%AC%B8%EB%A7%A5-%EC%9D%98%EC%A1%B4%EC%84%B1)
그리고 RNN에서도 gradient vanishing(경사 소멸) 또는 gradient exploding(경사 폭발) 문제점이 있습니다. 특히 RNN은 긴 입력 샘플이 자주 발생하고, 가중치를 공유하고 있어서 역전파 과정에서 같은 가중치를 계속 곱하기 때문에 CNN 같은 구조보다 심각합니다.
이러한 문제점을 해결하기 위해 사용되는 것이 LSTM입니다.
LSTM의 구조
LSTM의 구조를 RNN과 비슷하게 그려보면 다음과 같이 그려볼 수 있습니다.

LSTM에서도 RNN과 동일하게 파라미터를 공유한다는 특징을 가지고 있습니다.
LSTM의 핵심적인 요소들은 크게 4가지에 집중해서 볼 수 있습니다.
- 메모리 블록(cell): hidden state 장기 기억
- 망각 개폐구(forget gate): 기억을 유지 혹은 제거(1: 유지, 0: 제거)
- 입력 개폐구(input gate): 입력 연산
- 출력 개폐구(output gate): 출력 연산
망각 개폐구(forget gate)

t 순간에서, 망각 개폐구는 t - 1 순간까지 기억하고 있던 정보(
시그모이드 함수를 통과하였으므로 값은 0에서 1 사이입니다. 1에 가까울수록 온전히 기억하게 할 수 있고, 0에 가까울수록 완전히 잊어버리게 할 수 있습니다. 따라서 forget gate를 통과한
입력 개폐구(input gate)

t 순간에서, 입력 개폐구는 t 순간에 받은 입력을 어느 만큼 cell에 저장할지 결정하는 구간입니다. 왼쪽의 파란 화살표는 forget gate에서 얻은
먼저 sigmoid 함수일 때를 보겠습니다. 입력 개폐구와 입력과 연결되는 행렬은
시그모이드 함수를 거친 결과는 0~1 이므로 0에 가까울수록 t 순간의 입력은 거의 반영되지 않을 것입니다. 이런 식으로 입력 개폐구의 개폐를 조절하는 역할을 수행하게 됩니다.
다음 tanh 함수일 때를 보겠습니다. 입력 개폐구와 입력과 연결되는 행렬은
출력 개폐구(output gate)

t 순간에서, 출력 개폐구는 t 순간에 어떤 걸 출력으로 내보낼지 결정하는 구간입니다. 오른쪽에서 시그모이드를 향한 화살표에서는 예상하시는 대로 망각 개폐구, 입력 개폐구에서 쓰였던 행렬과 또 다른 행렬을 사용합니다. 입력과 출력 개폐구와 연결되는 행렬은
시그모이드 함수를 거친 결과는 0~1 이므로 0에 가까울수록 t 순간의 출력이 거의 나오지 않을 것입니다. 이런 식으로 출력 개폐구의 개폐를 조절하는 역할을 수행하게 됩니다.
참고 사이트
https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr
Long Short-Term Memory (LSTM) 이해하기
이 글은 Christopher Olah가 2015년 8월에 쓴 글을 우리 말로 번역한 것이다. Recurrent neural network의 개념을 쉽게 설명했고, 그 중 획기적인 모델인 LSTM을 이론적으로 이해할 수 있도록 좋은 그림과 함께
dgkim5360.tistory.com
'개념 정리 > 머신러닝 & 딥러닝 & A.I' 카테고리의 다른 글
RNN(Recurrent Neural Network) (2) | 2022.12.12 |
---|---|
GAN (0) | 2022.12.11 |
확률적 경사 하강법의 변형들 (0) | 2022.12.10 |
배치 정규화(Batch Normalization) (0) | 2022.12.04 |
Computational Graph(연산 그래프) (0) | 2022.11.25 |