on
RNN
RNN
언어 모델(Language Model)이란?
>> 단어 시퀀스에서 각 단어의 확률을 계산하는 모델
CBoW 에서는 주변 단어의 정보를 바탕으로 타겟 단어의 확률을 할당했다.
Word2Vec 이 나오기 전까지 많은 언어 모델은 목표 단어 왼쪽의 단어만을 고려하여 확률을 계산했다.
앞 단어 들이 등장했을 때 특정 단어가 등장할 확률을 조건부 확률로 구하게 된다.
통계적 언어 모델
확률 계산 방법은 비슷하나, I로 시작하는 확률(조건부 확률)을 구해서 I가 앞에 온다고 학습한다.
한계점
횟수 기반으로 확률을 계산하기 때문에 희소성(Sparsity) 문제가 있다.
"1 times", "2 times", ... 라는 표현은 등장하지만 "7 times" 라는 표현은 없다고 가정
>> 7 times라는 말이 없다는 이유로 등장할 수 없다.
(통계적 언어 모델에서 해당 문제 해결을 위해 N-gram, smoothing, back-off와 같은 방법이 고안되었다.)
신경망 언어 모델 (Neural Langauge Model)
횟수 기반 대신 Word2Vec이나 fastText 등의 출력값인 임베딩 벡터를 사용
>> 말뭉치에 등장하지 않더라도 의미적, 문법적으로 유사한 단어라면 선택될 수 있다.
임베딩 벡터에서는 "7" 이라는 단어의 벡터가 "1", "2" ... 등의 단어와 유사한 곳에 위치
7 times라는 문장을 만들어 낼 수 있다
순환 신경망 (RNN, Recurrent Neural Network)
연속형 데이터 (Sequential Data)
어떤 순서로 오느냐에 따라서 단위의 의미가 달라지는 데이터
RNN 은 연속형(Sequential) 데이터를 잘 처리하기 위해 고안된 신경망.
Sequential 데이터란 순서에 따라 입력되는 벡터가 다른 의미를 나타내는 특징을 갖는 데이터입니다. 대표적인 Sequential 데이터로는 자연어, 시계열 데이터 등이 있다.
(일반적으로 이미지 데이터는 Sequential 데이터에 속하지 않음)
RNN은 입력 시퀀스와 출력 시퀀스의 길이를 다르게 설계할 수 있다는 장점을 가지고 있다.
Sequential 데이터를 다루기 위해서 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 은닉층의 입력으로 사용
RNN 구조
기존 순전파 구조 이후에 출력 벡터가 다시 입력되는 반복적인 구조를 가지고 있다.
Sequential 데이터의 순서 정보를 모두 기억하기 때문에 Sequential 데이터를 다룰 때 RNN을 많이 사용
one-to-many : 1개의 벡터를 받아 Sequential한 벡터를 반환합니다. 이미지를 입력받아 이를 설명하는 문장을 만들어내는 이미지 캡셔닝(Image captioning)에 사용됩니다.
many-to-one : Sequential 벡터를 받아 1개의 벡터를 반환합니다. 문장이 긍정인지 부정인지를 판단하는 감성 분석(Sentiment analysis)에 사용됩니다.
many-to-many(1) : Sequential 벡터를 모두 입력받은 뒤 Sequential 벡터를 출력합니다. 시퀀스-투-시퀀스(Sequence-to-Sequence, Seq2Seq) 구조라고도 부릅니다. 번역할 문장을 입력받아 번역된 문장을 내놓는 기계 번역(Machine translation)에 사용됩니다.
many-to-many(2) : Sequential 벡터를 입력받는 즉시 Sequential 벡터를 출력합니다. 비디오를 프레임별로 분류(Video classification per frame)하는 곳에 사용됩니다.
from http://chal.tistory.com/26 by ccl(A) rewrite - 2021-09-08 23:00:39