RNN의 여러가지 유형(one to one, one to many, many to one, many to many) 되돌아보기
RNN이 하나의 input을 넣어서 하나의 output이 나온다고만 생각해서는 안된다
이미지를 넣고 문장을 생성하는 one to many
문장을 넣고 문장의 감정 label을 생성하는 many to one
혹은 여러 날의 주가를 넣고 다음날 주식의 종가를 예측한 many to one
1. one to one
sequence data가 아닌 일반적인 input을 받는 neural network의 구조
다음은 키,나이,몸무게 3차원 벡터를 갖는 input을 입력하여 혈압의 범주를 예측하는 one to one neural network
2. one to many
input이 하나이고 여러개의 output을 출력하는 구조
근데 주의할 점은 사실 input이 하나인 것 처럼 보이지만 하나가 아니다.
들어가지 않는 곳에는 0으로 채워진 차원이 동일한 tensor를 input으로 주는데 정보가 없는 것이니까 표시를 안한 것 뿐이다.
다음과 같이 input이 아닌 다른 곳에는 0이 채워진 tensor를 input으로 넣어준다
왜 0으로 들어간 tensor를 줘야하냐고?? RNN이 parameter를 공유하기 때문에 계산을 하려면 input을 줘야한다.
3. many to one
여러개의 input을 넣고 하나의 output을 출력하는 구조
그러나 one to many의 input의 빈 곳에 0으로 채워진 tensor를 넣어준 것과는 다르게
이번에는 정말 하나의 output만 출력하는 것이다. RNN의 예측은 원하는 때에 수행할 수 있다고 했으니까
문장을 입력으로 받아 positive인지 negative인지 출력하는 sentiment classification
문장의 모든 단어를 입력으로 받아 그것을 이해한 뒤 최종적으로 하나의 output인 positive인지 negative인지 출력한다
당연하지만 word의 input은 embedding vector를 준다.
4. many to many
여러개의 input을 주고 여러개의 output을 출력하는 구조
두가지를 생각할 수 있다. output을 원하는 때에만 출력하거나 실시간으로 매 순간 바로바로 출력해주거나
4-1) machine translation
'I go home'이라는 문장을 입력받아 '나는 집에 간다'를 출력하는 machine translation
I go home을 encoder에서 모두 이해한 뒤 '나는', '집에', '간다'를 decoder에서 차례대로 출력한다
이전에 생성한 단어는 다음 단어를 생성하기 위한 추가적인 input으로 들어가는 language model
4-2) video classification on frame level
비디오의 프레임별 이미지를 입력받아 무슨 scene인지 예측하는 RNN구조
비디오 프레임 입력을 줄 때마다 무슨 장면인지 알아야하는 실시간성 프로그램에 적합하다.
혹은 POS tagging으로 단어를 입력받아 무슨 품사인지 예측하는 RNN도 여기에 속할 수 있다.
'딥러닝 > NLP' 카테고리의 다른 글
RNN을 개선한 LSTM(Long short term memory) (0) | 2023.07.27 |
---|---|
RNN의 특별한 학습방법 Backpropagation through time 이해해보기 (0) | 2023.07.12 |
Vanilla RNN에서 hidden vector로 예측값을 만드는 과정 (0) | 2023.07.11 |
word embedding을 하는 또 다른 모델 Glove의 아이디어 (0) | 2023.07.05 |
NLP에서 language model의 역사 훑어보기 (0) | 2023.05.08 |