일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩더매트릭스
- codingthematrix
- 선형대수
- 하둡2
- GRU
- graph
- 하이브
- 딥러닝
- Java
- 알고리즘
- hive
- collections
- tensorflow
- 그래프이론
- C언어
- scrapy
- LSTM
- hadoop2
- 주식분석
- C
- 파이썬
- HelloWorld
- python
- 텐서플로
- RNN
- yarn
- NumPy
- Sort
- effective python
- recursion
- Today
- Total
EXCELSIOR
RNN - LSTM(Long Short Term Memory networks) 본문
이번 LSTM은 Chris송호연님의 블로그와 aikorea.org를 많이(실은 거의...) 참조하였으며, 이미지 출처는 원 저작자인 Colah.github.io 입니다.
문제가 될경우 삭제 하겠습니다..ㅜㅜ
1. LSTM 배경 - 장기 의존성(Long-Term Dependency) 문제점
RNN의 장점은 이전의 정보를 공유하여 활용할 수 있다는 것이다. 하지만, 시점간의 간격(Gap)이 크지 않을 경우에 가능하며 이러한 문제의 원인은 Vanishing Gradient에서 알 수 있듯이 BPTT에서 Chain Rule에 의해 [-1, 1]
사이의 값들이 계속 곱해지다보니 앞쪽으로 갈 수록 그 값이 작아져, 결국에는 소멸해버려 Parameter
들의 업데이트가 되지 않는 문제가 발생하기 때문이다.
이러한 문제를 해결하기 위해 등장한 것이 바로 LSTM이다.
2.LSTM 네트워크
LSTM(Long Short Term Meomory networks)는 RNN의 한 종류이다. LSTM은 장기 의존성 문제를 해결할 수 있으며 Hochreiter(1997)
가 제안한 알고리즘이다.
아래의 그림을 통해 기존 RNN과 LSTM차이를 살펴보도록 하자.
기존의 RNN은 Hidden Layer에서 Hidden State(
아래의 LSTM의 Hidden Layer에서 볼 수 있듯이 Neural Network Layer
가 4개가 존재한다. 각각에 대해 자세히 알아 보도록 하자.
2.1. Cell State
LSTM의 핵심이라고 할 수 있는 이 Cell State
는 아래의 그림4에서 볼 수 있듯이, 단순한 연산(곱셉, 덧셈)을 거쳐 LSTM Unit
(초록색 박스)을 통과한다. 이러한 Cell State
를 통해 이전 정보(
Cell State
는 input, forget, output
세 개의 게이트(gate)들을 이용하여 정보의 반영 여부를 결정해 준다. 각 게이트 들은 그림4에서 볼 수 있듯이
LSTM은 Cell State
를 컨트롤하기 위해 세가지 게이트(gate)들로 이루어져있다.
LSTM의 세가지 게이트들의 핵심은
- 무엇을 쓰고 > input gate
- 무엇을 읽고 > out gate
- 무엇을 잊을 것인가 forget gate 이다.
2.2. LSTM의 단계
1) Forget Gate Layer
LSTM의 첫번째 단계는 어떠한 정보를 반영할지에 대한 결정을 하는 게이트이다. 이러한 결정은 sigmoid layer
통해 이루어진다. sigmoid
활성화 함수를 통해 0 ~ 1
사이의 값을 출력한다. 1
에 가까울 수록 정보의 반영을 많이하고, 0
에 가까울 수록 해당 정보의 반영을 적게한다는 의미이다.
2) Input Gate Layer
두번쨰 단계는 새로운 정보가 Cell State
에 저장이 될지를 결정하는 게이트이다. Input Gate
에는 두개의 Layer가 있는데, 하나는 sigmoid layer
로 (이레이어를 input gate
라고 함) 어떤 값을 업데이트 할 것인지 결정하는 레이어이다. 다른하나는 tanh layer
로 구성되어 있으며, Cell State
에 더해질 vector of new candidate values(후보값들의 벡터)를 만드는 레이어(Update gate
)이다.
3) Update Cell State(Ct−1 )
이렇게 forget gate
와 input gate
에서 출력된 값들을 Cell State
ft⋅Ct−1 계산 해준뒤it⋅Ct~ 을 더해준다. 최종Ct 의 식은 아래의 그림과 같다.
4) Output Gate Layer
마지막 단계는 출력값(Cell State
의 부분을 결정하는 sigmoid layer
를통해 계산한다(Cell State
(tanh
**를 통해 -1 ~ 1
사이로 출력된 값을 곱해준다.
3. GRU(Gated Recurrent Unit)
GRU는 LSTM의 변형된 버전이라고 할 수 있으며, Cho, et al.(2014)에 제안되었다.
LSTM과 다른점은 다음과 같다
- GRU는
Reset Gate
(rt )와Update Gate
(zt) 2개의 게이트로 이루어져있다. - LSTM에서
forget gate
와input gate
를 GRU에서는update gate
(zt )로 합쳐 주었다. - LSTM에서
forget gate
역할이rt 와zt 둘 다에 나눠졌다고 볼 수 있다. - 출력값(
ht )를 계산할 때 추가적인 비선형(nonlinearity) 함수를 적용하지 않는다.
[그림 9] GRU 구조
'DeepLearning > 알고리즘' 카테고리의 다른 글
합성곱신경망(CNN, Convolutional Neural Network) (10) | 2017.04.17 |
---|