본문 바로가기

SWE/AI

RNN을 향한 꼬꼬무

728x90
반응형

RNN을 알아야 transformer 이해가 쉽기에 먼저 정리해본다.
그리고 그 전에 hidden state를 알아야.. 아! 그 전엔 sequential data를 알아야… 결국 다 알면 좋은.. 지친.. 파이팅!!!



 

1. Sequential Data

Sequential Data는 한마디로  순서 정보가 데이터다.
음성, 문장, 비디오 등 시간 또는 시간이 아니더라도 순서 정보가 중요한 데이터들이 sequential data에 해당하며 해당 데이터 기반으로 음성 인식, 음악 생성 등 다양한 문제를 해결한다.

1.1. Time Series Data

순서의 기준이 시간인 sequential data다.
특정 시간 간격으로 측정 된 데이터로, 해당 데이터는 시간 축에 따라 순차적으로 배열되모 각 데이터 포인트는 특정 시점을 의미한다.
주식, 기상 정보 등 시간 정보가 중요한 데이터들이 time series data에 해당하며 해당 데이터 기반으로 주식 가격 예측, 기상 예측 등 다양한 문제를 해결합니다.
 

1.2. Sequential data 분석

Sequential data를 분석할 때는 순차적 정보를 유지하면서 패턴인식 하는 것이 중요한다!
앞의 시퀀스를 이용해서 다음 시퀀스 예측 또는 분류한다.
 
먼저 sequential data 중 시계열 데이터는 전통적인 통계 기법과 머신러닝 이론으로 해결하는 방법이 발전했다. 그래서 결과를 이해하기 쉽고 데이터 가정이 견고하며 이론이 탄탄하지만, 이론을 충족하는 데이터 가정들이 필요하다.
시계열 외 자연어 같은 sequence data는 전통적인 방법으로 풀기 어렵다. 이를 해결하기 위한 딥러닝 모델들이 발전했는데 복잡하고 해석 불가능한 블랙박스 신경망이긴 하지만 높은 예측 성능을 보인다.
 


 

2. Hidden State

🤔 어랏. 잠깐만. 전에 배운 hidden layer랑 비슷한 개념인가? (정리중)

Hidden State는 RNN 내에서 각각의 time step에 대해 이전 time step까지의 정보를 요약한 embedding (feature)이다.
RNN은 각각의 time step 별 결과를 만들 때, 이전 시점까지의 정보가 요약 된 hidden state와 현재 시점의 입력 정보를 사용한다.
이를 통해 sequential 데이터를 사용하여 문제를 풀 때, RNN은 현재 시점에 입력 된 정보 뿐만 아니라 이전 시점의 정보들을 사용할 수 있게 되어 강력한 성능을 보여주게 된다.


 

3. Recurrent Neural Network (RNN)

드디어 RNN이다.
RNN은 sequential 정보가 존재하는 데이터를 처리하기 위한 neural network다.

FC layer는 입력된 데이터를 곱하고 바이어스 더하는 식으로 이전 시점의 정보를 반영하지 않으므로 상대적으로 약한데 반면 RNN은 본질적인 구조상 이전 시점의 데이터를 반영하기 때문에 sequential data에 동작을 잘 한다.

 

RNN은

(1) weight matrix $W_{h_i}$ : hidden state를 처리하는 weight matrix

(2) weight matrix $W_{x_i}$ : input data를 처리하는 weight matrix, 그리고

(3) bias vector $b$ : bias vector로 구성된다.

 

sequential data $x$: $[x_1, \dots, x_t]^T \in \mathbb{R}^{t \cdot x \cdot n}$, $\text{where } x_t \in \mathbb{R}^{n \cdot x \cdot 1}$

hidden state $h$: $[h_1, \dots, h_t]^T \in \mathbb{R}^{t \cdot x \cdot m}$, $\text{where } h_t \in \mathbb{R}^{m \cdot x \cdot 1}$

weight matrix $W_x \in \mathbb{R}^{m \cdot x \cdot n}$

weight matrix $W_h \in \mathbb{R}^{m \cdot x \cdot m}$

bias vector $b \in \mathbb{R}^{m \cdot x \cdot 1}$


 
RNN은 각각의 time step 별 결과를 생성할 때
1️⃣ 이전 시점까지의 정보가 요약 된 hidden state와 상응하는 weight matrix를 곱한 결과와
2️⃣ 현재 시점의 입력 정보와 상응하는 weight matrix를 곱한 결과,
3️⃣ 그리고 bias vector를 더한 후
4️⃣ non-linear activation function을 적용하여 사용한다.
 
이렇듯 명시적으로 이전 시점까지의 정보와 현재 시점의 정보를 사용하므로 순서 정보가 포함 된 데이터를 처리할 때 강력하다!

 

(이거 먹으면서 아직 작성 중..)

728x90
반응형

'SWE > AI' 카테고리의 다른 글

Attention is all you need라니까  (0) 2024.11.12
RNN을 쪼개보자  (1) 2024.11.11
Non-linear activation function  (0) 2024.11.09
내가 가장 좋아하는 Layer는  (0) 2024.11.08
FCL FCNN FCN FPN 누가 진또배기냐  (0) 2024.11.04