[NLP]Recurrent Neural Networks

김보현·2024년 7월 31일
0

1.Sequential Model

RNN은 주어지는 입력 자체가 sequential 입력이다.
오디오, 말, 비디오 등 일상에서 접하는 많은 것들이 dequential data이다.
가장 큰 어려움은 우리가 얻고싶은건 하나의 label, 정보 (ex classification)이다.
sequential 데이터는 정의상 그 길이가 얼마인지 알수없어서 받아들여야하는 차원이 얼마인지 알수없다.(몇개의 단어, 몇개의 이미지인지 알수없음)
따라서 들어오는 단어, 이미지 여러개를 처리할 수 있어야 하고 이전의 데이터로 다음 데이터를 예측한다.
처음은 그거만 고려하면 되고 두번째는 첫번째 고려.. 이런식으로 과거에 고려해야하는 정보가 점점 늘어나는게 어려운점이자 이전 모델들과의 차이점이다.

  • Fix the past timespan
    과거 몇개의 모델만 보기때문에 계산이 쉬워진다.
  • Markov model(first-order autoregressive model)
    현실에서 말이 안된다.
    사실 과거가 다 누적되어서 내일이 만들어지는건데, 오늘 내가 한 행동만 보고 내일의 공무원시험 결과가 나온다고나 할까나.. 많은 정보를 버리게 된다.
    가장 큰 장점은 joint distribution을 표현하는게 쉬워진다.
  • Latent autoregressive model
    중간에 hidden state가 들어가있고 그게 과거의 정보들을 요약하고있다.

2.Recurrent Neural Networks

MLP와의 차이점은 자기 자신으로 돌아오는 구조가 있다는 것이다.
현재 입력이 들어오고 이전 입력들이 recurrent하게 들어온다.
그걸 시간순으로 풀어준다. 그렇게되면 입력이 굉장히 많은 fully connected layer로 표현된다고 할 수 있다. time step을 fix하고 시간순으로 풀게되면 각각의 parameter가 쉐어하는 인풋의 위치가 큰 하나가 된다.

  • short-term dependencies
    가장 큰 어려움이다. 과거의 정보들을 취합해서 미래에 고려해야하는데, 먼 과거의 정보가 미래까지 살아남기가 힘들다.
    몇 스텝 전의 정보는 현재에 잘 고려가 되는데 한참 먼 스텝의 정보는 고려되지 않는다.
    내가 문장이 길어져도 이전에 중요하다고 생각되는 정보를 기억했다가 필요할 때 써야한다. 그런데 5초 전의 말을 기억을 못하면 대답하기가 힘들것이다.
  • long-term dependencies
    중첩되는 구조가 들어있다. 굉장히 많은 똑같은 w를 곱하고 nonlinear을 곱한다.
    예를 들어서 sigmoid. 0에서 1로 줄인다. (vanishing gradient)
    ReLU. w가 양수면 계속 곱해서 크게 반영되게 된다. 학습할 때 폭발해서 학습이 어렵다. (exploding gradient)

3.Long Short Term Memory

이전까지 나왔던 RNN을 vanilla RNN이라고한다.
LSTM이 복잡해보인다.
LSTM 각각의 component 동작과 long term dependencies를 잡는 방법을 알아보자.
x가 language model이면 단어가된다.
output이 위로 흘러가기도 하지만 아래로 돌아가기도 한다.
t번째 입력은 네트워크만 봤을때 들어오는거 세개 나가는거 세개지만 실제로 나가는건 output밖에없다.
로우라고되어있는게 세개가 있다. LSTM을 이해할 때 gate를 위주로 이해하면 좋다.
forget,input,output게이트 세개가있다.
LSTM의 가장 큰 아이디어는 중간을 흘러가는 cell state이다.
컨베이너벨트라고 보면된다. 매번 타임스텝 t마다 컨베이너벨트에 물건이 올라온다. 그럼 이 정보들을 manipulate해서 어떤 정보가 유용하고 그렇지않은지 넣고빼고 해준다.
그게 gate에 해당한다.

  • forget gate
    어떤 정보를 버릴지 결정한다. 현재입력과 이전의 입력이 들어간다. 이전의 cell state 정보중에 어떤걸 버리고 살릴지 결정하는데 previous hidden state에서 넘어오는 정보중에 버릴걸 결정한다
  • input gate
    현재 어떤 box가 들어오면 이걸 무조건 cell state에 올리는게 아니라 이 정보 중에 어떤걸 올릴지말지 결정한다. 이전의 cell state와 메차쿠차해서 c틸다를 만든다.(머리위에물결) 이전까지의 정보와 candidate를 잘 섞어서 새로 업데이트 한다.
  • update cell
    버릴거 버리고 쓸거쓰고 합쳐서 새로운 셀 스테이트 만든다. 지금까지의 타임 시퀀스를 summarize하는..(취합)
  • output gate
    LSTM에서는 한번 더 조작을 해서 output gate를 만들고 그 gate만큼 곱해서 현재 아웃풋을 만들고 next hidden state로 흘러들어간다.

요약하면 이 네 단계를 통해 이전의 어떤걸 지울지 올릴지(C틸다)를 정하고 새로운 셀스테이트를 정하고 그 중에서도 얼마를 올릴지 정해서 최종정보가 나온다.

4.Gated Recurrent Unit

바닐라 RNN, LSTM, GRU중 마지막!
그림을 보면 gate가 두개밖에 없다. 앞서 살펴본 LSTM은 gate가 3개였다.
LSTM은 cell state 한번 흘러들어가고 manupulate해서 output이 나왔지만 여기서는 output게이트가 필요없어졌고 히든게이트만 있다.
두개 게이트만 있어도 LSTM과 비슷한 효과를 낼 수 있다.
적은 파라미터로 동일한 결과를 내기 때문에 좋다.
GRU를 사람들이 많이 활용하는 이유이다.

근데 사실? transformer가 나오면서 RNN이 잘쓰이지 않는다고합니다

profile
Fall in love with Computer Vision

0개의 댓글