RNN (Recurrent Neural Network)
* 용어는 비슷하지만 순환 신경망과 재귀 신경망(Recursive Neural Network)은 전혀 다른 개념
→ 기존 모델은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향함
→ 시퀀스 데이터를 기존모델인 NN, CNN으로는 처리성능이 낮았음
→ 가중치가 데이터의 처리되는 순서와 상관없이 업데이트되기 때문에 이전에 본 샘플을 기억할 수 없음
→ 단어와 단어 사이의 gap이 넓을 경우엔 잘 동작하지 못한다.
→ 인공 신경망과 다르게 RNN은 순환 구조이므로 은닉층의 데이터를 저장하며 펼쳐진 형태로
순환구조로 확률값을 계산
기존 모델들과의 차이점
→ 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징
→ 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망
→ RNN은 텍스트 분류나 기계 번역과 같은 다양한 자연어 처리에 대표적으로 사용되는 인공 신경망
RNN의 활용 분야
→ 언어 모델링
→ 음성 인식
→ 기계 번역
→ 대화 모델링/질문 답변
→ 이미지/비디오 캡션
→ 이미지/음악/동작생성
RNN의 한계점
→ RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점
→ 장기 의존성 문제
→ RNN의 시점(time step)이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생
→ 해결책: LSTM
SimpleRNN
→ 층을 순서대로 쌓아 clasffifier를 만들어준다.
→ 첫 번째 층은 Embedding 으로, 정수로 인코딩된 단어를 입력 받고 각 단어 인덱스에 해당하는
임베딩 벡터를 찾아준다. 최종 차원은 ( batch, sequence, embedding ) 이 된다.
→ 기본적으로 RNN 레이어 출력에는 샘플 당 하나의 벡터가 포함된다.
이 벡터는 마지막 타임스텝에 해당하는 RNN 셀 출력으로, 전체 입력 시퀀스에 대한 정보를 포함
parameters
units = 양의 정수, 출력 공간의 차원.
activation = 사용할 활성화 기능. 기본값은 tanh으로 None을 전달하면 활성화가 적용되지 않음
use\_bias = True레이어가 편향 벡터를 사용하는지 여부를 나타내는 부울
bias\_initializer = 편향 벡터의 이니셜라이저
return\_sequences = 출력 시퀀스의 마지막 출력을 반환할지 아니면 전체 시퀀스를 반환할지 여부
return\_state = 출력 외에 마지막 상태를 반환할지 여부
go\_backwards = True이면 입력 시퀀스를 거꾸로 처리하고 반전된 시퀀스를 반환
TextVectorization
자연어 처리에서는 기계가 문자를 이해 할 수 있도록 수치화해주는 과정이 반드시 필요하다
1. 원-핫 인코딩(One-hot encoding)
→ 원-핫 인코딩은 텍스트를 유의미한 숫자(벡터)로 바꾸는 가장 쉬운 방법
→ 하나의 요소만 1이고 나머지는 모두 0인 희소 벡터(sparse vector)이다.
→ 원-핫 벡터의 차원은 말뭉치(corpus) 내 단어의 수와 같다.
→ 단어의 특정한 관계나 의미를 포함하지 않는다.
2. TF-IDF: 빈도수 기반 텍스트(문서) 벡터화 방법
→ TF-IDF는 문서를 벡터화 할 때, 단어의 빈도에 역문서 빈도를 가중치로 주어 계산하는 개념
→ 각 단어들이 전체 문서에 얼마나 자주 등장하는지에 따라 TF-IDF 값은 달라지게 된다
3. 단어 임베딩(Word Embedding)
→ Word Embedding은 단어를 벡터로 표현하는 방법, 단어를 밀집 표현으로 변환한다.
→ 희소 행렬과는 반대 되는 개념으로 대부분이 0 이 아닌 값으로 채워진 행렬
LSTM ( Long Short Term Memory Network )
→ LSTM알고리즘은 Cell State라고 불리는 특징층을 하나 더 넣어 Weight를 계속 기억할 것인지 결정
→ LSTM은 과거의 데이터를 계속해서 업데이트
→ 기존 RNN의 경우, 정보와 정보사이의 거리가 멀면, 초기의 Weight값이 유지되지 않아 학습능력이 저하
GRUs ( Gated Recurrent Units )
→ LSTM을 변형시킨 알고리즘으로, Gradient Vanishing의 문제를 해결
→ GRUs는 Update Gate와 Reset Gate를 추가하여, 과거의 정보를 어떻게 반영할 것인지 결정
→ Update Gate는 과거의 상태를 반영하는 Gate이며, Reset Gate는 현 시점 정보와 과거 시점 정보의 반영 여부를 결정