출처 : AIT-2
시작에 앞서..
PyTorch로 시작하는 딥러닝 입문
이 책에서도 RNN, LSTM, GRU 등의 순환신경망에 대해 설명을 아주 자새히.. 그리고 굉장히 공학적으로(?) 설명하고 있다.
심화학습을 원한다면 아래의 책 정독 필쑤🙌🏻
또는 이 블로그 글에서도 RNN, LSTM, GRU에 대해 도식과 함께 잘 설명하고 있으니 참고.
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
본론
RNN (Recurrent Neural Networks 순환신경망)
인공신경망의 한 종류로, 유닛간의 연결이 순환적 구조를 갖는 특징을 갖고 있다. 이러한 구조는 시변적(시간에 따라 변하는) 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있게 해준다.
https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D
RNN의 작동 원리
RNN의 경우 학습했던 데이터를 그 다음 순서에 정답데이터로 사용해 (누적 학습의 개념) 학습을 이어간다. 그래서 시계열 + 동적인 특성을 갖는 데이터에게 적합하다. 보통 최적화 함수로는 확률(probability)여야 하므로 'Tangent Hyperbolic', 'Sigmoid'를 주로 사용한다.
RNN 문제점
다음과 같이 곰을 판독하기 전에 나무와 다람쥐 데이터가 들어왔다고 가정하자. 이 두 가지 데이터로는 새로운 이미지가 개인지 늑대인지 (다음 버전에 늑대를 개와 판별하기 때문에) 알 수 없다. 명확히 나무나 다람쥐는 둘 중에 그 어떤 것과도 비슷하지 않기 때문에, 분류 결과에 늑대나 개일 확률 데이터는 발생하지 않는다.
이렇게 상관 없는 데이터가 인풋으로 들어온 이후, 숲에 있는 동물에 대한 이 학습모델은 다시 역전파(Backpropagation) 과정을 통해 처음 데이터로 돌아간다. (So the information about being in the forest comes all the way back from the bear.)
설상가상으로, 매 데이터를 지날때 마다 시그모이드 함수를 지나면 학습한 내용은 점점 왜곡되는 경향이 있다. 신경망 학습과정에서 역전파 를 사용해 다시 처음 학습포인트인 곰으로 돌아가면 "Vanishing Gradients" 현상이 발생한다.
RNN은 이러한 학습 특성 상 단기 메모리를 가지고 학습하므로 Vanishing 현상이 발생할 수 밖에 없고, 그래서 LSTM (Long Short Term Memory) 방식이 대체안으로 등장한다.
LSTM (Long Short Term Memory)
딥러닝 분야에서 사용되는 RNN 아키텍처다. 표준의 Feed-Forward 신경망과 달리 LSTM은 피드백연결을 가지고 있다. 장기 메모리와 단기 메모리에 들어갈 정보를 나눠 학습한다.
https://en.wikipedia.org/wiki/Long_short-term_memory
기존의 RNN은 단기 메모리만을 가지고 recurrently 학습을 했다면, LSTM은 단기 메모리와 장기 메모리를 나눠 학습 후, 두 메모리를 병합해 이벤트 확률을 예측한다. 그래서 과거의 정보를 훨씬 잘 반영한다는 장점이 있다.
LSTM의 작동방식
LSTM은 본격적인 연산 전에 장기 / 단기 정보를 담은 메모리를 분류하고, 이 메모리와 이벤트를 기반으로 각각 Long term memory, Short term memory에 적합한 내용을 따로따로 학습시킨다. 아래의 그림에서 더욱 쉽게 이해할 수 있다.
LSTM Gates
LSTM 모델 내에는 4가지 게이트가 존재한다.
1. Forget Gate : 장기메모리에서 학습에 크게 고려하지 않아도 될 정보를 삭제(forget) 한다.
2. Learn Gate : 단기메모리와 이벤트가 함께 들어가 최근에 학습한 정보 반영 + 불필요 정보 삭제
3. Remember Gate : 1,2 단계를 거친 메모리들과 이벤트를 모아서 장기메모리가 기억하도록 만든다.
4, Use Gate : 1,2의 메모리를 사용해 어떤 정보를 사용 + 과거에 알고 있던 정보 + 지금 배운 정보를 조합해 예측결과를 도출한다. 이때 예측결과물은 새로운 단기 메모리가 된다.
Gates에 대한 자세한 설명은 아래 게시물에 더 자세히 게시했다. 참고 바람!
https://pleasurehwang.tistory.com/20
GRU (Gated Recurrent Unit)
Forget Gate + Learn Gate 를 합친 Update Gate와 Update Gate의 결과물과,
Working Memory를 결합하는 Combine Gate로 이루어진 모델이다.
이 모델은 오직 하나의 워킹 메모리만 입출력으로 받으며, 앞서 본 LSTM보다 훨씬 간단한 구조를 갖고 있다.
추후 이 부분은 여러 자료 조사를 통해 정리.
https://blog.naver.com/winddori2002/221992543837
Peephole Connections
기존 Forget Gate의 구조도. 여기서 STM + Events를 충분히 반영해서 ft를 구했다.
반면 LTM은 Forget Factor가 곱해지면서 불필요한 의미가 삭제되는데, 이 과정에서 LTM에 있는 정보가 과소 반영되는 경향이 있다. 왜냐하면 ft를 도출하는 데 하나도 반영되지 않은데다, 이 과정을 통해 forgotten되기 때문이다.
그래서 ft를 도출할 때 LTM을 신경망이 반영할 수 있도록 디자인 할 수 있는데, 이를 "Peephole Connection" 이라 부른다.
LTM은 Peephole Connection을 통해 더 많은 학습과정 결정에 access 할 수 있다.
모든 Forget gate (with Sigmoid)에 Peephole Connection 을 반영하면, LTM의 정보를 더 많이 반영한 학습이 가능하다.
'데이터사이언스 > ML & DL' 카테고리의 다른 글
[딥러닝] LSTM의 4가지 Gate (0) | 2020.08.21 |
---|---|
[Deep Learning ] About Neural Networks, 딥러닝 기초개념 (0) | 2020.08.15 |