[weekly NLP] Week 10

·2023년 9월 7일
0

위클리 NLP

목록 보기
10/13

CNN은 input 길이 너무 길거나 여러 input간 길이간 차이가 다양하면 효율적으로 처리하기 어렵다는 단점 가진다

사람이 읽는 것처럼 문장의 단어들 순차적으로 처리한다면?
이런 방식에 아주 적합한 다른 neural network모델은
recurrent neural network (RNN)이다.

Time Series Modelling의 강자 RNN

RNN은 NLP 이외에 time series modelling에 굉장이 많이 쓰인다.
Time series 시간이 지나면서 변화하는 변수를 말한다.
매 초마다의 주식 거래량, 매 시간의 기온, 매일의 도시의 교통량,매달의 강수량 등 각 시간마다 바뀌는 값이 있는 데이터를 time series라고 한다.

RNN은 기억을 저장하는 네트워크다.
많은 ML 모델들은 첫번째 input 들어가고 두번째 input 들어갔을 시 두 input간의 상관관계를 전혀 고려하지 않는다.
하지만 time series data는 이러한 정보 꽤나 중요하다
예를 들어 오늘 기온 예측한다면 어제 기온이 27도 였다고 하는 사실이 중요하다
이러한 정보 있으면 갑자기 오늘 기온이 -10도 될 것이라는 예측 틀릴 확률이 높다.


RNN은 input 여러개 (x) 순차적으로 들어가고, o(output)이 하나씩 생성된다.
저 output이 각 시간(timestep)의 예측 값을 의미한다.
여기서 기억을 저장하는 h를 주목해야한다.
각 timestep마다 hidden state가 연속적으로 이어지는 것을 알 수 있다.

이 hidden state는 여태까지 들어온 input들 간의 상관관계를 저장하는 메모리의 역할을 한다.
이 h 역시 각 timestep마다 조금씩 변화한다. 왜냐면 새로 들어온 input에 따라 메모리 역시 변화해야하기 때문이다.

문장을 time series로 본다면

문장은 여러 개의 단어로 이루어져 있다.
단어 한 개를 하나의 input으로 볼 수 있다.
"I Love you" 문장 ["I","love","you"]으로 3개의 input vector로 나눈 것을 보여준다.

제목처럼 각 단어가 컨베이어 벨트를 타고 RNN으로 한개씩 input 된다는 것을 알 수 있다.
해결하고자 하는 문제에 따라 하나가 들어갈 때마다 output이 나올 수도 있고, 마지막에 하나의 결과물이 나올 수도 있다.

각 단어를 Nx1 사이즈 vector로 표현할 수 있다.
word2vec나 glove같은 pretrained embedding을 사용하는것이 일반적이다.
각 timestep의 단어 x는 Nx1 column vector로 표현되어 RNN에 들어가게 된다.

RNN의 종류 (심화과정)

첫 버전의 모델은 Simple RNN이다
기억해야 할 것들을 메모리에 잘 저장하지 못해 성능이 좋지 못했다.
이를 catastrophic forgetting or vanishing gradient 문제라고 한다.
이후 많은 연구들이 이를 개선하기 위해 발표 되었고
가장 대표적인 연구를 보자

Long Short Term Memory (LSTM)

RNN과 LSTM의 가장 큰 차이점은 모델 안에 여러 개의 gate를 추가해 input,output 그리고 memory간 흐르는 정보를 좀 더 섬세하게 제어했다는 점이다.
LSTM에는 input gate, output gate, forget gate, update gate 있는데
어떤 정보 받아들이고, 내보내고, 잊어버리고, 저장할지를 학습하는
수학 모델이다.
업로드중..

현재 RNN모델 사용한다고 하면 거의 대부분 LSTM을 뜻한다.
LSTM의 gate mechanism은 Simple RNN보다 더 많은 계산을 필요하지만 훨씬 더 효과적이라
이제는 default로 사용하는 RNN 모델이다.

출처
https://jiho-ml.com/weekly-nlp-10/

0개의 댓글