참고 자료
https://wikidocs.net/60690
https://wikidocs.net/60762
이미지 출처
wikidocs - pytorch로 시작하는 딥러닝 입문
순환 신경망(RNN, Recurrent Neural Network)
RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내지만, 다시 은닉층의 노드로 보내 다음 계산의 입력으로 활용하는 특징을 가지고 있다.
그림으로 표현하여 살펴보면 입력 벡터가 출력벡터를 향해 가기 위해 은닉층 cell을 통과하는데 이 cell에서는 이전의 값을 기억하려고 한다. 이를 메모리 셀이라고 표현한다.
해당 메모리 셀은, 다음 입력의 연산에 사용되는 구조를 가지고 있다. 이를 그림을 통해 정리하면 다음과 같다.
RNN의 수식 표현
장단기 메모리 LSTM (Long Short-Term Memory)
RNN의 한계
위에서 살펴본 RNN의 경우 시점이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못한다는 단점이 발생된다. 문장 완성의 문제를 예로 들어보면 맨 앞의 단어를 오랫동안 기억하여, 마지막 단어를 완성해야 하는 경우도 있을 것이다. RNN의 기억력이 충분치 않다면, 다음 단어를 올바르게 예측하지 못할 것이다.
LSTM의 구조
LSTM의 메모리 층에는 입력 게이트, 망각 게이트, 출력 게이트가 추가되어 있다. 이를 통해 불필요한 기억을 지우고 기억해야 하는 정보를 기억할 수 있게 된다.
입력 게이트 : 현재 정보의 기억을 위함
삭제 게이트 : 기억을 삭제하기 위함. 시그모이드 함수를 지마면서, 삭제 과정을 가친 정보의 양을 얻는다.
출력 게이트 : 현재 시점의 x값과, 이전 시점의 은닉 상태가 시그모이드 함수를 지난 값으로 현재의 은닉 상태를 결정한다.
Example - 단어 단위 임베딩
github code로 대체한다.
https://github.com/SeongwonTak/TIL_swtak/blob/master/210821Word_RNN.ipynb
'ML & DL' 카테고리의 다른 글
(극복Proj-2) RNN 구현 이해하기 (0) | 2021.12.24 |
---|---|
(극복Proj-1)[Pytorch] DataLoader란? (0) | 2021.12.23 |
[DL] 컨볼루션 신경망, CNN 이해하기 (0) | 2021.06.24 |
[DL] Pytorch로 Layer 만들기 (0) | 2021.06.23 |
[DL] Multi Layer Perceptron, Back Propagation 감잡기 (0) | 2021.06.22 |