티스토리 뷰
RNN(Recurrent Neural Network)은 2024.06.27 - [딥러닝] - [3] LSTM(Long Short-Term Memory)에서 언급된 LSTM의 기반이 된 딥러닝 시계열 모델입니다. RNN의 구조와 동작원리, 어떤 문제가 존재하기에 LSTM으로 발전되었는지에 대해 포스트 하겠습니다.
RNN의 대상이 되는 시계열 데이터는 시간의 흐름에 의해 관측되며, 현재 상태가 과거 상태에 영향을 받습니다. 이 특징을 활용하여 RNN은 이전 시점의 정보와 현재 입력되는 정보를 반영하여 현재 상태를 갱신하는 구조입니다.
이전 시점의 정보를 반영하는 방법은 은닉층에 이전 시점의 은닉층의 상태와 입력층의 상태를 연산하는 것입니다. 이때 각 layer에서 전달되는 상태를 표현하는 가중치가 필요합니다.
1. Why : 은닉층에서 출력층으로의 가중치
2. Wxh : 입력층에서 은닉층으로의 가중치
3. Whh : 이전 시점 은닉층에서 현재 시점 은닉층으로의 가중치
각 가중치는 여러 시점에서 동일한 값을 가지고 비용함수가 최소가 되는 값을 가집니다. 본격적으로 연산을 통해 RNN에서 어떻게 정보가 전달되는지 알아보겠습니다.
현재 시점의 은닉층은 입력층의 정보와 이전 시점 은닉층의 상태가 합성된 정보를 출력층으로 전달합니다. 펼쳐진 구조를 확인해 보면 이전 시점 은닉층의 상태가 누적되면서 현재 시점까지 전달되고 목표 시점의 출력층까지 반영되는 것을 알 수 있습니다. 현재 시점 은닉층에 이전 시점 은닉층의 상태를 합성하는 것은 이전 시점 은닉층에 가중치 Whh을 곱하는 것입니다.
가중치에 대한 업데이트는 다른 딥러닝 신경망 모델과 마찬가지로 경사하강법을 이용하여 Loss 값을 최소화하는 것입니다. 다만 언급된 3가지의 가중치는 어느 시점의 영향을 받는지를 고려해야 합니다. 첫 번째로 업데이트 과정을 알아볼 Why는 정보를 은닉층에서 출력층으로 전달할 때만 사용되므로 하나의 시점에만 영향을 받습니다.
Whh와 Wxh는 여러 시점에 포함되므로 각 시점마다 영향을 받는 Gradient 값을 포함해서 업데이트를 해줘야 합니다. 예를 들어, 시점 3까지의 영향을 받는 Gradient 값을 구하기 위해서는 시점 3의 영향, 시점 3,2의 영향, 시점 3과 2,1의 영향을 함께 고려해야 합니다.
Gradient 값을 구하는 과정에서 알 수 있듯이 RNN은 시점이 길어질수록 Gradient 값이 소실되는 문제가 발생합니다. 현재 시점의 은닉층에 대한 미분을 진행하면 tanh 함수를 미분한 값은 0~1의 값을 가지기 때문에 이 값을 여러 번 곱하면 0에 수렴하게 됩니다. 결국 오차역전파에 대한 학습을 더 이상 진행할 수 없는 상태가 됩니다. 이 문제를 해결하기 위해 전에 언급했던 LSTM을 통해 이전 시점의 정보를 기억할지 여부를 전하는 구조가 나타나는 것입니다.
'딥러닝' 카테고리의 다른 글
오차역전파법(Backpropagation) (2) | 2024.07.16 |
---|---|
적대적 생성 신경망(GAN) (0) | 2024.07.11 |
[3] LSTM(Long Short-Term Memory) (0) | 2024.06.27 |
[2] 합성곱 신경망 (CNN) PART2 (0) | 2024.06.24 |
[1] 합성곱 신경망 (CNN) PART 1 (0) | 2024.06.23 |
- #attention #deeplearning
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- nlp #토큰화 #nltk #konply
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- 머신러닝 #lightgbm #goss #ebf
- #tf idf
- 파이썬 #시각화 #matplotlib
- #opencv #이미지 연산 #합성
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐
- seaborn #데이터시각화 #타이타닉
- subquery #sql 코딩테스트
- gan #생성자 #판별자 #적대적 신경 신경망 #딥러닝 #computer vision
- rnn #딥러닝 #시계열 데이터 #장기의존성 문제
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- 머신러닝 #xgboost #
- html #javascript #구구단 출력
- #seq2seq #encoder #decoder #teacher forcing
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- 딥러닝 #오차역전파 #연쇄법칙 #계산그래프 #최적화
- ridge #lasso #정규화모델 #머신러닝
- python #프로그래머스 #겹치는선분의길이
- python #프로그래머스 #리스트 #인덱싱
- 머신러닝 #project #classification #dacon
- 잘라서 배열로 저장하기 #2차원으로 만들기