• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

순환신경망 모델에서 fully connected layer 차이

22.07.31 21:47 작성 조회수 330

1

안녕하세요.

RNN은 forward 부분에서 fully connected layer에  nn.linear의 결과를 다시 sigmoid 함수에 넣어주는데 LSTM, GRU 는 그렇지 않은 이유가 무엇인지 궁금합니다.

RNN의 경우

self.fc = nn.Sequential(nn.Linear(hidden_size*sequence_length, 1), nn.Sigmoid())

LSTM 및 GRU의 경우

self.fc = nn.Linear(hidden_size*sequence_length, 1)

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

좋은 질문 감사 드립니다!

주가 예측 같은 regression 문제에는 마지막 레이어에 활성화 함수를 일반적으로 사용하지 않습니다.

하지만 우리 예시에서는 MinMax 스케일을 한 데이터를 사용해서 모든 타겟값이 0이상 1이하의 값이라는 것을 알고 있습니다. 따라서 sigmoid를 사용하여 [0,1]로만 예측값을 나오게 하여 수렴성을 좋게 할 수 있습니다.

문제에 따라 효과가 다를  수 있지만 우리 예시의 경우 sigmoid를 적용하여 수렴 속도 및 학습 성능을 개선할 수 있습니다. 물론 sigmoid를 사용하지 않고 학습률(learning rate)을 조절하여 수렴성을 개선할 수도 있습니다 :) 

 

아래는 LSTM에서 sigmoid 유무에 따른 학습 손실함수 그래프입니다! (x축: epochs, y축: 손실함수 값)