Vanilla RNN에서 hidden vector로 예측값을 만드는 과정

hidden vector의 차원은 hyperparameter이다. 여기서는 2차원이라고 가정해보자.

 

3차원의 입력벡터 $X_{t}$가 들어가고 2차원의 hidden state vector인 $h_{t-1}$이 RNN의 입력으로 들어간다고 해보자.

 

 

처음에는 $X_{t}$와  $h_{t-1}$이 concatenation되어 hidden layer에 fully connected 된다.

 

당연하지만 $h_{t-1}$이 2차원이기때문에  $h_{t}$를 뽑아내는 layer의 차원도 2차원이다.

 

 

hidden layer의 선형변환 W와 입력벡터의 곱 WX에 nonlinear activation인 tanh(WX)로 $h_{t}$가 뽑힌다.

 

Vanilla RNN이 실제로 tanh()를 activate function으로 썼다고 한다.

 

hidden layer의 계산을 조금 더 자세히 살펴본다면

 

5*1벡터가 입력으로 들어가 2*1벡터를 뽑아내므로 W의 차원이 2*5가 되어야 WX가 2*1이 된다.

 

W에서 A,B,C,D부분으로 나눌 수 있다

 

A와 $X_{t}$의 내적에 B와 $h_{t-1}$의 내적의 합으로  선형변환의 첫번째 성분이 구해지고

 

비슷한 방식으로 C와 $X_{t}$의 내적에 D와 $h_{t-1}$의 내적의 합으로 두번째 성분이 구해진다.

 

바꿔말하면 A,C는 $X_{t}$를 바꾸고 B,D는 $h_{t-1}$을 바꾼다.

 

그래서 A와 C의 합을 $W_{xh}$라 하고 B와 D의 합을 $W_{hh}$라고 표시하여

 

선형변환의 결과는 $WX = W_{xh}X_{t} + W_{hh}h_{t-1}$라고 표시할 수 있다.

 

$W_{xh}$는 $X_{t}$를 $h_{t}$로 바꾼다는 의미에서 쓴 것이고

 

$W_{hh}$는 $h_{t-1}$을 $h_{t}$로 바꾼다는 의미에서 notation을 쓴 것이다.

 

선형변환 결과의 activation function인 tanh를 취한 값이 RNN의 hidden state vector $h_{t} = tanh(W_{xh}X_{t} + W_{hh}h_{t-1})$가 된다.

 

저번에 배운 projection layer에 이어 hidden layer의 의미로 활성화함수를 써야 의미가 있다. 잊어서는 안된다.

 

다시 강조하지만  $h_{t}$는 RNN의 최종 예측값이 아니다.

 

이것으로 task의 예측을 수행하고자 할 때 output layer에 이 값을 보내 선형변환 시켜 예측을 수행하는 것이다.

 

output layer는 또 하나의 선형변환 layer이다.

 

$h_{t}$에 선형변환 $W_{hy}$를 곱하여 y로 변화시킨다. 그런 의미에서 $W_{hy}$라는 notation을 쓴 것이다.

 

output layer의 결과로 나온 $W_{hy}h_{t}$에 대해 classification을 수행하고 싶다면

 

softmax(multi-label)나 sigmoid(binary label)를 취하여 확률벡터로 해석하게 할 수 있다.

 

--------------------------------------------------------------------------------------------------------------------------

 

****softmax가 layer의 활성화함수가 아닌 이유

 

예전에 했지만 softmax가 layer의 활성화함수로 안볼수 있는 것이 softmax는 취하지 않아도 비례하는 증가함수라서

 

$W_{hy}h_{t}$에서 최댓값이 one hot vector의 1이 된다는 사실을 기억, 단순히 확률해석을 위해서 사용하는 느낌이 크다.

 

--------------------------------------------------------------------------------------------------------------------------

 

 

 

$y_{t}$는 RNN의 현 step에서  task 예측값

 

$softmax(W_{hy}h_{t})$나 $W_{hy}h_{t}$에서 one hot vector로 만든 것이 $y_{t}$일수도 있지만

 

때로는 선형변환한 결과만 사용할 수도 있으니 <그런 task는 얼마든지 있다>

 

$y_{t} = W_{hy}h_{t}$일 수도 있다.

TAGS.

Comments