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으로 넣어준다

 

이미지를 입력하여 그것의 설명글을 출력하는 image captioning

 

왜 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도 여기에 속할 수 있다.

TAGS.

Comments