[NLP] Why are the weights of RNN/LSTM networks shared across training time?

박경민·2023년 10월 17일
0

Why are the weights of RNN/LSTM networks shared across training time?

RNN을 공부하다 생긴 궁금증을 풀어보자.

"Why are the weights of RNN/LSTM networks shared across training time? ", RNN, LSTM 네트웍에서 training time 내에 가중치를 공유한다는 것은 무슨 뜻일까?

  • 가중치 공유란 가중치가 같다는 말과 같은가?
  • 그렇다면 정확히 무엇과 무엇이 같다는 말인가?
  • 왜 같게 하는가?

를 알아보자.

글에는 다음 내용을 참고했다. (https://medium.com/@tarek.tm/understanding-the-concept-of-weight-sharing-in-cnn-and-rnn-f48bd3f76d35)

Stackoverflow 의 답변을 참고하니, 다음과 같은 답변을 찾을 수 있었다.

parameter sharing 의 main purpose 는 모델이 학습해야할 parameter 의 감소이다. 각 스텝(시점)마다 공유되지 않은 다른 가중치를 사용한다면 (첫 계산의 output 이 다음 계산의 input) 으로 들어간다 하더라도 feed forward network 와 별반 다를 것이 없을 것이다; 예컨대 만약 time steps (NLP로 따지면 단어의 수인데) 20개라면, 20개의 다른 학습가능한 모델을 가진다는 것이다.

예를 들어 'Yesterday I ate an apple' 이란 문장과 'I ate an apple yesterday' 라는 문장을 학습한다고 해보자. 시점마다 파라미터를 공유하지 않고 input 에 대해서만 가중치가 반응한다면 5단어를 처리하는데에도 모델은 5번 초기화할 것이며, 학습 또한 5번 진행되어야 할 것이다. 따라서 학습도 올바르게 되지 못할 것이다. (위 두 문장의 결과가 매우 다를 수도 있다는 것.) 그러나 파라미터를 공유한다면 두 문장의 결과는 비슷할 것이다. (output 은 매 단계에서 낼 순 있지만 시점에 걸쳐 가중치를 공유하고 있기에 한 번만 파라미터 업데이트를 하면 된다.)

따라서 위의 궁금증들이 해결된다.

  • 가중치 공유란 가중치가 같다는 말과 같은가? 맞다. 업데이트를 시퀀스를 다 보고 진행한다는 것.
  • 그렇다면 정확히 무엇과 무엇이 같다는 말인가? 처음엔 input to hidden (U), hidden to hidden (W), hidden to output (V) 가 share across the time 된다는 말이 무슨 말인지 몰랐는데, 다음과 같이 정리할 수 있다.
    '가중치 공유란' 한 시퀀스 내에서 계산할 땐 동일한 U, V, W를 가지고 계산한다는 것이다. 따라서 U = V = W를 뜻하는 것은 아니고, U끼리, V끼리, W끼리 동일한 가중치가 사용될 것이다. 따라서 t시점에서의 U와 t+1시점에서의 U는 같을 것이다. U가 변하는 시점은 t,t+1 시점이 아니라.. 문장을 끝까지 다 보고 역전파 하는 과정일 것이다. (LSTM, RNN의 개념을 생각하면 된다)
  • 왜 같게 하는가? 가중치 업데이트를 편하게 하기 위해서이다. 앞선 예에서 보이듯 같은 문장이라도 순서를 바꿨을 때 의미는 같은데 생긴 모양만 다른 두 문장을 생각해보자. 두 문장은 최대한 비슷하게 표현되어야 하는데, 문장을 다 보지않고 단어가 들어올때마다 다른 가중치, 역전파 해버린다면 결과 표현 벡터는 매우 다른 모양을 띌 것이다. 따라서 업데이트할 가중치를 줄이고 비슷한 문장의 의미를 잘 잡아내기 위해 parameter sharing 이란 걸 한다고 생각하자.

그러나 이런 paramter sharing 에도 drawback 이 있는데, 'milk chocolate' 과 chocolate milk' 의 경우 표현이 매우 달라야하지만 2단어를 다 보고 역전파한다면 비슷한 의미로 표현될 것이다. (가중치가 공유될 경우) 따라서 순서가 바뀌었을 때 의미가 달라지려면 위와 같은 경우에는 단어 하나마다 업데이트를 해주는 것이 필요할 수도.. 있다.

그러나 이런 단점을 조금 무시하더라도 이렇게 feed forward 를 여러개 붙인 것같이 학습하는 것보다 RNN,LSTM의 특징을 잘 살리는 것이 더 좋았기에 paramter sharing 을 한다는 점을 알아두자!


정리하면, parameter sharing 은 LSTM/RNN 그 자체이다!

profile
Mathematics, Algorithm, and IDEA for AI research🦖

0개의 댓글