RNN은 주어지는 입력 자체가 sequential 입력이다.
오디오, 말, 비디오 등 일상에서 접하는 많은 것들이 dequential data이다.
가장 큰 어려움은 우리가 얻고싶은건 하나의 label, 정보 (ex classification)이다.
sequential 데이터는 정의상 그 길이가 얼마인지 알수없어서 받아들여야하는 차원이 얼마인지 알수없다.(몇개의 단어, 몇개의 이미지인지 알수없음)
따라서 들어오는 단어, 이미지 여러개를 처리할 수 있어야 하고 이전의 데이터로 다음 데이터를 예측한다.
처음은 그거만 고려하면 되고 두번째는 첫번째 고려.. 이런식으로 과거에 고려해야하는 정보가 점점 늘어나는게 어려운점이자 이전 모델들과의 차이점이다.
MLP와의 차이점은 자기 자신으로 돌아오는 구조가 있다는 것이다.
현재 입력이 들어오고 이전 입력들이 recurrent하게 들어온다.
그걸 시간순으로 풀어준다. 그렇게되면 입력이 굉장히 많은 fully connected layer로 표현된다고 할 수 있다. time step을 fix하고 시간순으로 풀게되면 각각의 parameter가 쉐어하는 인풋의 위치가 큰 하나가 된다.
이전까지 나왔던 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에 해당한다.
요약하면 이 네 단계를 통해 이전의 어떤걸 지울지 올릴지(C틸다)를 정하고 새로운 셀스테이트를 정하고 그 중에서도 얼마를 올릴지 정해서 최종정보가 나온다.
바닐라 RNN, LSTM, GRU중 마지막!
그림을 보면 gate가 두개밖에 없다. 앞서 살펴본 LSTM은 gate가 3개였다.
LSTM은 cell state 한번 흘러들어가고 manupulate해서 output이 나왔지만 여기서는 output게이트가 필요없어졌고 히든게이트만 있다.
두개 게이트만 있어도 LSTM과 비슷한 효과를 낼 수 있다.
적은 파라미터로 동일한 결과를 내기 때문에 좋다.
GRU를 사람들이 많이 활용하는 이유이다.
근데 사실? transformer가 나오면서 RNN이 잘쓰이지 않는다고합니다