#11. RNN
2022. 11. 28. 17:59
Update Log
| 22.11.28 First Upload
RNN Privew
- 시간성 데이터 (시계열 데이터)
- 시간에 따라서 변화하며, 순서가 존재한다.
- 순차 데이터
- 특징이 순서를 가지는 데이터.
- 동적이면서, 가변적인 길이를 가진다.
- Ex. 심전도 신호, 주식시세, 음성신호, 문장, 유전자열
- 순환신경망과 LSTM
- 순환신경망
- 시간적인 정보를 이용해서 순차데이터를 처리하기 위한 학습모델
- LSTM
- 매우 긴 순차 데이터 (시간적 거리가 먼 데이터) 를 처리하는데 사용
- LSTM은 장기 의존성을 잘 다루기 때문이다.
- 순환신경망
순차데이터
- 응용분야
- 심전도 신호를 분석하여 심장 이상의 유무를 판정
- 주식시세를 분석하여 사고파는 시점을 결정
- 음성 인식을 통한 지능적인 인터페이스를 구축
- 기계 번역기 또는 자동 응답 장치를 제작
- 유전자 열 분석을 통한 치료 계획을 수립
- 순차데이터의 표현
- 순차데이터의 일반적인 표기
- 벡터의 벡터(벡터의 요소가 벡터인 경우)
- Ex) 온라인 숫자의 요소 : 1D vector // 심전도의 요소 : 3D vector
- 심전도 신호 : 초당 100번의 sample, 2분간 측정, 길이 T = 12000)
- 훈련집합
- 원소 각각은 시간의 순서가 정해져 있는 데이터들 (Vector) 이다. -> 즉 순차데이터
- 순차데이터의 특성
- 특징이 나타나는 순서가 중요
- 샘플마다의 길이가 다름.
- Sample이 측정된 시간이 다를 수 있다.
- 문맥 의존성
- 문장의 구조가 중요하다.
- 비순차 데이터
- 공분산이 특징 사이의 의존성을 나타냄
- 순차데이터
- 공분산 의미가 없다.
- 문맥의존성이 중요하다.
- 단어 간의 사이간격이 크다면 => 장기의존성 => LSTM으로 처리
순환신경망 RNN
- RNN이 가져할 필수기능
- 시간성
- 특징이 순서대로 한번에 하나씩 입력
- 가변길이
- 길이가 T인 샘플을 처리하기 위해, 은닉층이 T번 나타남 ( T는 가변적이다.)
- 문맥의존성
- 이전 특징내용을 기억, 적절한 순간에 활용.
- 시간성
- 순환신경망 구조
- MLP와 비슷하다.
- 입력층 - 은닉층- 입력층을 가짐.
- 은닉층이 "순환 Edge" 를 가짐
- 시간성,가변길이, 문맥의존성 모두 처리 가능
- 순환 Edge : t-1 순간에 발생한 정보 -> t 순간으로 전달
- 이를 수식으로 쓰면 다음과 같다.
- 1순간에 계산을 하고, 그 결과를 가지고 2순간에 계산을 하고, ... T 순간 까지 반복을 한다.
- t 순간에는 t-1 순간의 은닉층 값 (상태) h^(t-1) 과 t순간의 입력 x(t)를 받아서 h^(t-1)으로 전환한다.
- Θ는 순환신경망의 매개변수이다.
- MLP와 비슷하다.
- RNN 의 매개변수 (가중치 집합) 은 Θ = {𝐔, 𝐖, 𝐕, 𝐛, 𝐜} 이다.
- 𝐔 는 입력층과 은닉층을 연결하는 p*d 행렬
- 𝐖는 은닉층과 은닉층을 연결하는 p*p 행렬
- 𝐕는 은닉층과 출력층을 연결하는 q*p 행렬
- b,c 는 바이어스로서 각각 p*1 과 q*1 행렬
- RNN 학습이란 훈련집합을 최적의 성능으로 예측하는 Θ 값을 찾는일
- 매개변수 공유
- 매 순간 다른 값을 사용하지 않고 같은 값을 공유한다.
- 공유의 장점
- 추정할 매개변수 수가 획기적으로 줄어든다.
- 매개변수의 수가 특징 벡터 길이 T 에 무관하다.
- 해당하는 매개변수 (p*d 등) 으로 결정
- T에 따라서 길이도 바뀌면 매개변수 총 개수도 바뀌어서 학습하기 곤란하다
- 특징이 나타나는 순간이 뒤바뀌어도 같거나 유사한 출력을 만들 수 있다.
- 의존성에 대해서 학습을 한다.
- 하지만 각각의 시간의 특징에 대해서 주어진 Input 에 대한 출력은 유사할 필요가 있다.
- 여러가지 구조
- 입력의 개수와 출력의 개수가 같은 경우 (T = L)
- 입력의 개수와 출력의 개수가 다른 경우 (T != L)
순환신경망 동작
- RNN의 가중치
- 각각의 가중치 = 행렬로 표현
- 각각의 행렬 = 벡터로 표현
- w = 시간에 대한 순환 Edge 에서 사용되는 가중치이다.
- 은닉층의 계산
- MLP와의 다른점
- 순환 Edge에서 이전 시간의 정보(매개변수)가 들어온다.
- 은닉층 각각 노드의 이전시간 모든 정보가 넘어온다 => 파라미터 학습함으로서 시간의존도 계산이 가능하다.
- MLP와의 다른점
- 은닉층 계산이 끝난 후 출력층의 계산
- RNN의 기억기능
- x(1) 이 벼하면 상태 h(1), h(2),h(3) ... 가 바뀌고, 그에 따라서 출력 y(1), y(2) ... 가 바뀐다
- 이는 RNN이 x(1)을 기억한다고 할 수 있다.
- x(1) 은 x(2),x(3),x(4) 와 상호작용을 한다고 볼 수 있다.
- 문맥의존성
- 뒤로 갈 수록 앞의 정보가 흐려질 수 있다.
- x(1) 이 벼하면 상태 h(1), h(2),h(3) ... 가 바뀌고, 그에 따라서 출력 y(1), y(2) ... 가 바뀐다
순환신경망 BPTT 학습
파라미터 업데이트 하기 위해서 오류역전파 수정한 BPTT를 사용한다.
- BPTT
- RNN에서 순차적인 데이터 특성을 고려해서 RNN의 매개변수를 Update
- DMLP 와 RNN
- 공통점
- 들 다 입력층, 은닉층, 출력층이 존재한다.
- w 매개변수들이 계속해서 곱해진다.
- 차이점
- DMLP
- Layer 의 개수가 정해져 있다.
- 매개변수를 공유하지 않는다.
- 입,출력이 처음과 끝에 존재한다.
- w 매개변수가 계층에 따라서 진행된다.
- RNN
- 시간 T로 인해서 달라진다.
- 매개변수를 공유한다.
- 입,출력이 매번 존재한다.
- w 매개변수가 시간에 따라서 진행된다.
- DMLP
- RNN 과 DMLP의 차별성
- RNN은 샘플마다 은닉층의 수가 다르다.
- DMLP는 왼쪽에 입력, 오른쪽에 출력
- RNN은 매 순간 입출력이 존재한다.
- RNN은 가중치를 공유 (W로 표기)
- DMLP는 가중치를 W1, W2... 로 표기
- 공통점
- 목적함수의 정의
- 학습이 할일
- 오류 역전파
- 목적함수에서 가지는 오류를 가지고, 최소화하는 방향으로 그래디언트를 계산해서 해당하는 방향으로 Update
- 그래디언트 계산
양방향 RNN (BRNN)
- RNN
- 과거의 정보가 현재 지금 계속 반영되고 있다.
- BRNN
- 그 반대도 고려하게끔 반영한다. (왼쪽- > 오른쪽 & 오른쪽 -> 왼쪽)
- t 순간에 단어는 앞쪽 단어와 뒤쪽 단어 정보를 모두 보고 처리된다.
- 기계번역에도 활용된다.
LSTM (Long Short Term memory)
- 장기문맥의존성
- 관련된 요소가 멀리 떨어진 상황일때 적용한다.
- 즉, 문맥이 멀리 떨어져 있을떄, 앞에서 나온 것의 영향력이 적어지는 상황일때 사용한다.
- 문제점
- 그래디언트의 소멸 (w<1) 및 폭발 (w>1)
- 가중치의 공유때문에 같은 값을 계속 곱할때 일어나는 상황
- LSTM
- 입력게이트와 출력게이트
- 게이트가 열리면 신호가 흐른다.
- 게이트가 닫히면 신호가 차단된다.
- [0,1] 사이의 실수값으로 개폐 정도를 조절하게 된다.
- 이때 1로 계속 더하게 되면 RNN 과 같이 된다.
- 이때 사이의 실수값은, 학습으로 알아낸다.
- 입력게이트와 출력게이트
- 출력/입력 게이트를 얼마나 열것이냐를 메모리 블록에 저장되어 있는 정보들과 입력정보를 고려해 학습한다.
- 이를 통해서 얼마나 열것인지도 학습한다.
- LSTM의 동작
먼저 RNN의 동작을 다시한번 살펴보면 다음과 같다.
- 차별성
- 출력 1입력 게이트값은 가중치와 신호값에 따라 정해지며 개폐정도를 조절한다.
- 내가 저장하고 있는 메모리 블록에서는 내부의 정보가 얼마나 바뀔건지 수정
- 출력게이트의 값이 줄어들면
- 다음 노드로 전달이 잘 되지 않는다.
- 입력게이트에서는 입력되는 정보가 얼마나 반영될지 결정을 한다.
망각게이트
- 망각게이트
- 실제 메모리에서 값이 지워진다.
- RNN과 다르게 기억의 자유도가 높다.
- 망각게이트의 특징
- 각각의 게이트들이 상호작용한다.
- 각각의 입력값들이 게이트의 동작을 조절한다
- 게이트값이변함에 따라서 입력값이 메모리 블록에 얼마나 저장이 되었는지 확인
- 출력값은 내가 저장하고 있는 값이 얼마나 반영되어 다음 time으로 보내질 것이냐를 결정됨
'STUDY > 인공지능' 카테고리의 다른 글
#10. CNN (0) | 2022.11.28 |
---|---|
#9. 딥러닝 주요 최적화 방법 (0) | 2022.11.01 |
#8. Pytorch 실습 (0) | 2022.11.01 |
#7. 딥러닝과 깊은 퍼셉트론 (0) | 2022.11.01 |
#6. 다층 퍼셉트론 및 딥러닝 기초 (0) | 2022.11.01 |