Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- RESNET
- 스택
- rnn
- 딥러닝
- pytorch
- 큐
- 다이나믹 프로그래밍
- 이진 탐색
- 정렬
- 계수정렬
- 최단 경로
- 퀵정렬
- GRU
- AI
- LSTM
- 재귀함수
- BFS
- 선택정렬
- 그리디
- 알고리즘
- 선형대수
- 인공지능
- Machine Learning
- DFS
- 삽입정렬
- 캐치카페신촌점 #캐치카페 #카페대관 #대학생 #진학사 #취준생
- 머신러닝
Archives
- Today
- Total
hyeonzzz's Tech Blog
[딥러닝 파이토치 교과서] 7장. 시계열 분석 -(2) 본문
7.6 게이트 순환 신경망(GRU)
GRU(Gated Recurrent Unit) : 게이트 메커니즘이 적용된 RNN 프레임워크의 한 종류. LSTM보다 구조가 간단하다
7.6.1 GRU 구조
- GRU는 LSTM에서 사용하는 망각 게이트와 입력 게이트를 하나로 합친 것이다
- 별도의 업데이트 게이트로 구성되어 있다
- 하나의 게이트 컨트롤러가 망각 게이트와 입력 게이트를 모두 제어한다.
- 게이트 컨트롤러가 1이면 망각 게이트는 열리고 입력 게이튼는 닫힌다
- 게이트 컨트롤러가 0이면 망각 게이트는 닫히고 입력 게이튼는 열린다
- 즉, 이전 기억이 저장될 때마다 단계별 입력은 삭제된다
- GRU는 출력 게이트가 없어 전체 상태 벡터가 매 단계마다 출력되며, 이전 상태의 어느 부분이 출력될지 제어하는 새로운 게이트 컨트롤러가 별도로 존재한다.
1. 망각 게이트(reset gate)
: 과거 정보를 적당히 초기화(reset)시키려는 목적
- 시그모이드 함수를 출력으로 이용하여 (0,1) 값을 이전 은닉층에 곱한다
- 이전 시점의 은닉층 값에 현시점의 정보에 대한 가중치를 곱한 것이다
2. 업데이트 게이트(update gate)
: 과거와 현재 정보의 최신화 비율을 결정하는 역할
- 시그모이드로 출력된 결과(zt)는 현시점의 정보량을 결정하고 1에서 뺀 값(1-zt)을 직전 시점의 은닉층 정보와 곱한다.
3. 후보군(candidate)
: 현시점의 정보에 대한 후보군을 계산
- 과거 은닉층의 정보를 그대로 이용하지 않고 망각 게이트의 결과를 이용하여 후보군을 계산한다
4. 은닉층 계산
: 업데이트 게이트 결과와 후보군 결과를 결합하여 현시점의 은닉층을 계산한다
- (시그모이드 함수)의 결과는 현시점에서 결과에 대한 정보량을 결정한다
- (1-시그모이드 함수)의 결과는 과거의 정보량을 결정한다
GRU 내부 구조
※ LSTM vs GRU
7.7 양방향 RNN
- RNN은 이전 시점의 데이터들을 참고해서 정답을 예측하지만 실제 문제에서는 과거 시점이 아닌 미래 시점의 데이터에 힌트가 있는 경우도 많다.
- 따라서 이전 시점의 데이터뿐만 아니라, 이후 시점의 데이터도 함께 활용하여 출력 값을 예측하고자 하는 것이 양방향 RNN이다.
7.7.1 양방향 RNN 구조
- 양방향 RNN은 하나의 출력 값을 예측하는 데 메모리 셀 두 개를 사용한다.
- 첫 번째 메모리 셀은 이전 시점의 은닉 상태를 전달받아 현재의 은닉 상태(forward states)를 계산한다. (초록색 메모리 셀)
- 두 번째 메모리 셀은 다음 시점의 은닉 상태를 전달받아 현재의 은닉 상태(backward states)를 계산한다. (노란색 메모리 셀)
- 2개 값을 모두 출력층에서 출력 값을 예측하는 데 사용한다.
양방향 RNN에 대한 개념은 RNN뿐만 아니라 LSTM이나 GRU에도 적용된다.
LSTM과 양방향 LSTM의 차이
- 입력 데이터가 전방향과 역방향 학습에 모두 전달되며 그 결과들도 모두 출력에 반영된다
- 즉, 한 번 학습하는 데 2개의 계층이 필요하다
- 따라서 은닉 상태, 셀 상태에 2를 곱하고 출력층에도 2를 곱해야 한다
'Deep Learning > Pytorch' 카테고리의 다른 글
[딥러닝 파이토치 교과서] 9장. 자연어 전처리 (0) | 2024.05.16 |
---|---|
[딥러닝 파이토치 교과서] 8장. 성능 최적화 (0) | 2024.05.15 |
[딥러닝 파이토치 교과서] 7장. 시계열 분석 -(1) (0) | 2024.05.10 |
[딥러닝 파이토치 교과서] 6장. 합성곱 신경망 Ⅱ -(2) (1) | 2024.05.03 |
[딥러닝 파이토치 교과서] 6장. 합성곱 신경망 Ⅱ -(1) (0) | 2024.04.12 |