#11. RNN

2022. 11. 28. 17:59
Update Log
| 22.11.28 First Upload
RNN Privew
  • 시간성 데이터 (시계열 데이터)
    • 시간에 따라서 변화하며, 순서가 존재한다.
    • 순차 데이터
      • 특징이 순서를 가지는 데이터.
      • 동적이면서, 가변적인 길이를 가진다.
      • Ex. 심전도 신호, 주식시세, 음성신호, 문장, 유전자열
  • 순환신경망과 LSTM
    • 순환신경망
      • 시간적인 정보를 이용해서 순차데이터를 처리하기 위한 학습모델
    • LSTM
      • 매우 긴 순차 데이터 (시간적 거리가 먼 데이터) 를 처리하는데 사용
      • LSTM은 장기 의존성을 잘 다루기 때문이다.

순차데이터
  • 응용분야
    • 심전도 신호를 분석하여 심장 이상의 유무를 판정
    • 주식시세를 분석하여 사고파는 시점을 결정
    • 음성 인식을 통한 지능적인 인터페이스를 구축
    • 기계 번역기 또는 자동 응답 장치를 제작
    • 유전자 열 분석을 통한 치료 계획을 수립
  • 순차데이터의 표현

그려지는 방향을 숫자로 표현함/ (b) 3개의 채널이 존재 -> Sampling을 통하여 표현

 

  • 순차데이터의 일반적인 표기
      • 벡터의 벡터(벡터의 요소가 벡터인 경우)
    • 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)으로 전환한다.
    • Θ는 순환신경망의 매개변수이다.
  • RNN 의 매개변수 (가중치 집합) 은 Θ = {𝐔, 𝐖, 𝐕, 𝐛, 𝐜} 이다.
    • 𝐔 는 입력층과 은닉층을 연결하는 p*d 행렬
    • 𝐖는 은닉층과 은닉층을 연결하는 p*p 행렬
    • 𝐕는 은닉층과 출력층을 연결하는 q*p 행렬
    • b,c 는  바이어스로서 각각 p*1 과 q*1 행렬
    • RNN 학습이란 훈련집합을 최적의 성능으로 예측하는 Θ 값을 찾는일
  • 매개변수 공유
    • 매 순간 다른 값을 사용하지 않고 같은 값을 공유한다.
    • 공유의 장점
      • 추정할 매개변수 수가 획기적으로 줄어든다.
      • 매개변수의 수가 특징 벡터 길이 T 에 무관하다.
        • 해당하는 매개변수 (p*d 등) 으로 결정
        • T에 따라서 길이도 바뀌면 매개변수 총 개수도 바뀌어서 학습하기 곤란하다
      • 특징이 나타나는 순간이 뒤바뀌어도 같거나 유사한 출력을 만들 수 있다.
        • 의존성에 대해서 학습을 한다.
        • 하지만 각각의 시간의 특징에 대해서 주어진 Input 에 대한 출력은 유사할 필요가 있다.
  • 여러가지 구조
    • 입력의 개수와 출력의 개수가 같은 경우 (T = L)
    • 입력의 개수와 출력의 개수가 다른 경우 (T != L)

순환신경망 동작
  • RNN의 가중치
    • 각각의 가중치  = 행렬로 표현
    • 각각의 행렬 = 벡터로 표현

RNN

  • w =  시간에 대한 순환 Edge 에서 사용되는 가중치이다.

 

  • 은닉층의 계산
    • MLP와의 다른점
      • 순환 Edge에서 이전 시간의 정보(매개변수)가 들어온다.
    • 은닉층 각각 노드의 이전시간 모든 정보가 넘어온다 => 파라미터 학습함으로서 시간의존도 계산이 가능하다.
  • 은닉층 계산이 끝난 후 출력층의 계산

 

  • RNN의 기억기능
    • x(1) 이 벼하면 상태 h(1), h(2),h(3) ... 가 바뀌고, 그에 따라서 출력 y(1), y(2) ... 가 바뀐다
      • 이는 RNN이 x(1)을 기억한다고 할 수 있다.
    • x(1) 은 x(2),x(3),x(4) 와 상호작용을 한다고 볼 수 있다.
      • 문맥의존성
    • 뒤로 갈 수록 앞의 정보가 흐려질 수 있다.

순환신경망 BPTT 학습

파라미터 업데이트 하기 위해서 오류역전파 수정한 BPTT를 사용한다.

  • BPTT
    • RNN에서 순차적인 데이터 특성을 고려해서 RNN의 매개변수를 Update
  • DMLP 와 RNN
    • 공통점
      • 들 다 입력층, 은닉층, 출력층이 존재한다.
      • w 매개변수들이 계속해서 곱해진다.
    • 차이점
      • DMLP
        • Layer 의 개수가 정해져 있다.
        • 매개변수를 공유하지 않는다.
        • 입,출력이 처음과 끝에 존재한다.
        • w 매개변수가 계층에 따라서 진행된다.
      • RNN
        • 시간 T로 인해서 달라진다.
        • 매개변수를 공유한다.
        • 입,출력이 매번 존재한다.
        • w 매개변수가 시간에 따라서 진행된다.
    • 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의 동작을 다시한번 살펴보면 다음과 같다.

RNN의 동작

  • 차별성
    • 출력 1입력 게이트값은 가중치와 신호값에 따라 정해지며 개폐정도를 조절한다.

LSTM의 동작

  • 내가 저장하고 있는 메모리 블록에서는 내부의 정보가 얼마나 바뀔건지 수정
  • 출력게이트의 값이 줄어들면
    • 다음 노드로 전달이 잘 되지 않는다.
    • 입력게이트에서는 입력되는 정보가 얼마나 반영될지 결정을 한다.

망각게이트
  • 망각게이트
    • 실제 메모리에서 값이 지워진다.
    • 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

BELATED ARTICLES

more