순환 신경망 (Recurrent Neural Network, RNN)
RNN은 hidden node가 방향을 가진 edge로 연결돼 순환구조 (directed cycle)를 이루는 인공신경망의 한 종류이다. 입력과 출력을 시퀀스 단위로 처리하는 모델이다. 순환 신경망은 시계열 데이터 처리에 알맞게 변형된 딥러닝 구조이다.
Sequence Data를 학습하여 Classification 또는 Prediction을 수행한다. 은닉 계층 안에 하나 이상의 순환 계층을 갖는다. 하나의 파라미터 쌍 (가중치와 편향)을 각 시간대 데이터 처리에 반복 사용한다. 시간대와 시간대 사이에 순환 벡터를 이용해 정보를 전달한다.
일정 시간 동안 모든 값이 계산되면, 모델을 학습하기 위해 결과값과 목표값의 차이를 loss function을 통해 계산하 역전파 (backpropagation)해야한다. 여기서 backpropagation란 델타 규칙 또는 경사 하강 법이라는 기술을 사용하여 가중치 공간에서 오류 함수의 최소값을 찾는다. 기존의 backpropagation과는 다르게 RNN은 계산에 사용된 시점의 수에 영향을 받는다. 예를 들어 시간 구간이 계산에 사용됐다면 그 시간 전체에 대해 역전파를 해야한다. 이를 BPTT (Backpropagation Through Time), 시간에 따른 역전파라고 한다.
|
순환 벡터
한 시간대에서 다음 시간대로 전달되는 정보를 말한다. 시간대별로 주어지는 시계열 데이터의 입력 슬라이스와 함께 순환 계층의 확장 입력을 구성한다. RNN은 외부 입력과 자신의 이전 상태를 입력 받아 자신의 상태를 갱신한다. 시간대별 출력과 순환 벡터가 별도로 표시되어 있지만 대개의 구현에서는 시간대별 출력을 순환 벡터로 함께 사용한다.
Cell
RNN에서는 각 층 (layer)를 cell이라고 부른다. 완전 연결 신경망 (Fully Connected Neural Network)과 달리 모든 뉴런을 표 시하지 않고 하나의 셀로 층을 표현한다.
Timestep
RNN에서는 이전 샘플에 대한 기억을 가지고 있다고 말하는데, 이렇게 샘 플을 처리하는 단계를 타임스텝이라고 한다.
Sequence
하나의 샘플을 스퀀스라고 한다. 시퀀스 안에는 여러 개의 아이템이 들어있다. ‘I am a boy’ ⁃ 스퀀스의 길이가 바로 타임스텝의 크기가 된다. RNN에서는 샘플마다 길이가 다를 수 있다.
|
순환 계층의 입출력 형태
시계열 데이터 분석 | 입력만 시계열 데이터인 경우 시계열 데이터 <x1, ..., xn>을 입력 → 단순 벡터 hn을 출력한다. 시간대별 입력은 ti의 경우에 xi와 h(i-1)을 결합하여 사용한다. 마지막 시간대의 출력 hn을 계층의 출력으로 반환한다. |
시계열 데이터 생성 | 출력만 시계열 데이터인 경우 단순 벡터 x을 입력 → 시계열 데이터 <h1, ..., hn>을 출력한다. 시간대별 입력은 ti의 경우에 x와 h(i-1)을 결합하여 사용한다 (x를 반복 사용에 유의). 시간대별 출력들을 모아 계층 출력으로 반환한다. |
시계열 데이터 변환 | 입력과 출력이 모두 시계열 데이터인 경우 시계열 데이터 <x1, ..., xn>을 입력 → 시계열 데이터 <h1, ..., hn>을 출력한다. 시간대별 입력은 ti의 경우에 xi와 h(i-1)을 결합하여 사용한다. 시간대별 출력을들 모아 계층 출력으로 반환한다. |
시계열 데이터의 기본 형태 | 미니배치 안의 각 데이터가 여러 시간대에 걸친 시간대별 벡터 정보를 담게 된다. 전체적으로 [미니배치, 시간대, 벡터정보]의 3차원 형식이 된다. |
시계열 데이터의 길이 | 미니배치 데이터 별로 유효한 정보의 시간대 길이가 다를 수 있다. 따라서, 각 데이터에 대해 시간대 길이를 표시해줄 방법이 필요하다. |
'AI-driven Methodology > ANN' 카테고리의 다른 글
[ANN] CNN in the image area (0) | 2021.12.29 |
---|---|
[ANN] 순환 신경망 (Recurrent Neural Network, RNN) (2) (0) | 2021.12.14 |
[ANN] Neural Networks (0) | 2021.12.10 |
[ANN] CNN (Convolutional Neural Network) (0) | 2021.12.10 |
[ANN] 퍼셉트론 (Perceptron) (0) | 2021.12.10 |