boost-devs / peer-session

🚀 부스트캠프 AI Tech 1기 U-Stage 4조 피어 세션 자료/질문 모음 (archived)
8 stars 2 forks source link

[펭귄] 양방향 RNN/LSTM은 어떤 식으로 학습을 하나요? #67

Closed CoodingPenguin closed 3 years ago

CoodingPenguin commented 3 years ago

🙌 질문자


❓ 질문 내용


jjerry-k commented 3 years ago

실습에 나온 Bidirectional GRU 을 기반으로 설명드립니다! ( 실습엔 GRU로 되어있습니다)

CoodingPenguin commented 3 years ago

@jjerry-k 질문이 많이 모호했군요. 죄송합니다ㅠㅠ


양방향 GRU/LSTM 모델에서 궁금했던 점을 정리하면 다음과 같습니다.

  1. 양방향 모델에 입력으로는 무엇이 들어가는가?
    • 예를 들어 RNN은 현재 time step의 입력과 이전 time step의 hidden state가 들어간다.
  2. 양방향 모델은 출력값으로 무엇을 내뱉는가?
    • 예를 들어 RNN의 경우 출력으로 현재 time step의 hidden state를 내보내고 만약 예측을 원한다면 W행렬과의 곱을 통해 y값을 출력한다.
    • 제리님이 말씀하신 것처럼 GRU 모델의 return이 맞습니다!
  3. 양방향 모델이면 기존 LSTM/GRU 모델이 2개 쌓아져 있다고 생각하면 될까요? 그렇게 되면 기존 layer의 개수보다 2배가 되는 건가요?

http://intelligence.korea.ac.kr/members/wschoi/nlp/deeplearning/Bidirectional-RNN-and-LSTM/

위의 자료를 참고하여 대답을 생각해보았는데요.

  1. 입력으로는 똑같이 현재 time step의 입력과 이전 time step의 hidden state가 들어가는 것은 동일합니다. 다만 이 경우는 순방향일 때이고 역방향일 때는 입력과 이후 time step의 hidden state가 들어갑니다.
  2. 출력은 순방향, 역방향 hidden state 2개가 나오고 이것을 concat한 것이 출력입니다. 이제 예측을 하고 싶으면 원래 모델과 동일하게 W를 거쳐 y를 출력합니다.
  3. LSTM모델이 2개가 있다고 생각하면 되고 각 모델이 2개가 있으니 Layer도 2배가 됩니다.

이렇게 생각했습니다!

근데 지금 와서 조금 궁금한 점이 이렇게 양방향으로 했을 때 왜 성능이 조금 더 잘 나오는지 궁금합니다. 단순히 역전된 형태의 입력으로 받는 모델을 생성하는 것 뿐인데 어떠한 이유로 성능이 잘 나오는 것인지 궁금합니다!

jjerry-k commented 3 years ago

이건 양방향으로 볼 필요가 있는 task 냐 아니냐를 따져보면 될 것 같습니다!

예를 들면 번역 문제가 될 수도 있겠네요!

I am a student 라는 문장이 있으면 단방향의 경우엔 I, am, a, student 라고 학습할텐데요.

양방향이라면 I, am, a, student. student, a, am, I 이렇게 두번 입력을 받는 것이죠!

단순히 생각해보면 I와 student의 관계를 양방향으로 학습할 수 있다 라고 생각하시면 될 것 같습니다!

CoodingPenguin commented 3 years ago

@jjerry-k 생각해보니 번역 문제가 그렇겠네요. 번역 문제의 경우 기존 단방향 RNN기반 모델에서는 오직 이전의 정보만 사용해서 번역을 하는데 사실 제가 번역을 해보면 단순히 앞의 정보뿐 아니라 뒤의 정보도 필요하니까요. 그 때는 단방향보다 양방향이 더 효과가 있을 것 같습니다!

답변 감사드립니다!


참고: https://wiserloner.tistory.com/1276