[이론정리] RNN 모델 정리

2023. 3. 31. 18:50AI/이론 정리

그러니까 rnn 모델을 정리를 해볼게. 먼저 문장을 구성하는 단어가 input으로 들어올 거야 이때 하나의 단어가 input으로 들어가겠지. 그 단어는 인코더를 통해 숫자로 변환되게 될거야 그게 곧 임베딩이지. 그렇게 숫자가 layer로 들어가게 되면 이전의 히든 스테이트의 값과의 연산을 통해 새로운 히든 스테이트 값이 나오게 될거야 그것은 그 다음 layer로 들어가게 되고 또한 softmax 함수를 통해 단어 예측이라든지 분류를 할 수도 있지. 이때 이러한 과정들을 배치 단위로 진행하게 되면 병렬적으로 연산이 가능해지지. 예를 들어 배치의 크기가 4라면 4배 만큼 속도가 빨라지겠지
그러니까 하나의 단어가 인풋으로 들어가게 된다면 그 단어에 대한 손실을 계산하고 배치 내 모든 단어들의 손실을 평균하여 전체 배치의 손실을 계산한다. 그런데 단어들이 너무 많아지면 그래디언트가 가면 갈수록 전달이 잘 안되게 되는거지

RNN의 각 레이어에서는 크게 2가지 일이 일어납니다.

첫째, 현재 시점의 입력과 이전 시점의 은닉 상태(hidden state)를 조합하여 현재 시점의 새로운 은닉 상태를 계산합니다. 이 계산은 주로 행렬 연산을 통해 이루어지며, 이전 시점의 은닉 상태와 입력값에 대한 가중치 행렬을 곱한 다음, 바이어스를 더해준 뒤, 비선형 함수를 적용하여 새로운 은닉 상태를 계산합니다.

둘째, 현재 시점의 은닉 상태를 이용하여 출력값을 계산합니다. 이 때, 출력값을 계산하는 방법은 다양하게 존재합니다. 예를 들어, 감성 분류 문제의 경우, 출력값은 긍정 또는 부정으로 이진 분류가 될 수 있고, 언어 모델링 문제의 경우, 출력값은 단어 사전의 각 단어에 대한 확률값으로 다중 분류가 될 수 있습니다.

(https://chat.openai.com/chat)

model의 id는 0부터 시작해 vocab_size - 1까지이다.

 

model의 init 파트는 모델에 들어가는 파라미터를 정의해 놓는 단계(ex. dropout, embedding, 미리 정의된 rnn model, fully-connected-layer)

forward는 정의된 파라미터를 이용해 계산하는 과정(함수 사용)

 

softmax는 입력된 값들을 정규화(normalize)하여 출력하는 함수 중 하나입니다. softmax 함수는 일반적으로 다중 클래스 분류 문제에서 출력층의 활성화 함수로 사용됩니다.

softmax 함수는 입력된 벡터에서 가장 큰 값을 찾고, 해당 값으로 모든 원소를 뺀 벡터를 exponentiation하고, 이를 모든 원소의 합으로 나누어 정규화합니다. 이렇게 정규화된 벡터의 각 원소는 0과 1 사이에 있으며, 모든 원소의 합은 1입니다.

예를 들어, [1, 2, 3, 4]라는 벡터를 softmax 함수에 입력하면 [0.032, 0.087, 0.236, 0.644]와 같은 출력이 나오게 됩니다. 이 출력 벡터는 각 클래스(이 경우에는 4개의 클래스)에 속할 확률로 해석될 수 있습니다.

(https://chat.openai.com/chat)

그러니까 hidden state에서 선형 변환을 해준게 output이네

Transformer와 같은 self-attention 기반 모델은 모든 레이어를 거쳐서 한 번에 forward propagation을 마친 후에 loss를 계산하고 backward propagation을 수행하는 방식으로 학습합니다. 이러한 방식을 "batch learning" 또는 "batch training"이라고도 부릅니다.

반면에, Recurrent Neural Network(RNN)과 같은 sequential 모델은 시퀀스의 각 시간 단계마다 forward propagation과 backward propagation을 수행합니다. 이러한 방식을 "online learning" 또는 "online training"이라고 부릅니다.

각 모델의 학습 방식은 모델의 구조와 데이터셋의 특성에 따라 다르며, 어떤 방식이 더 나은 성능을 보이는지는 문제에 따라 다를 수 있습니다.

(https://chat.openai.com/chat)