Recurrent Neural Network (RNN) 이란?
- RNN 은 하나 이상의 Cycle 를 갖는 신경망이다.
- 하지만, 제한되지 않은 Connectivity (연결성) 을 가진 RNN 은 훈련과 분석이 어렵다.
- 그래서, Constrained RNNs (제한된) 을 생각해보자.
RNN 의 개요
- 네트워크는 한 번에 하나의 입력을 처리한다.
- 각 단계는 t 시간 시점과 연관된 것을 알 수 있다.
- Recurrent connection 은 현재 시간 단계에서 이전 시간 단계의 학습한 정보를 고려할 수 있기 때문에 'memory' 라고 볼 수 있다.
- Feed Forward 네트워크와 다른점은 별개의 Weight 매트릭스 U가 있고 이전 시간 h_(t-1) 단계의 활성화 함수를 사용하는 것이다.
RNN에서의 추론/예측과 훈련
- 입력 시퀀스가 주어지면 네트워크를 롤업하고 Feed Forward 네트워크에서와 동일한 방식으로 예측과 훈련을 모두 수행할 수 있다.
- 입력이 클 때 Segment(Batches)에 대한 unrolling 및 훈련을 수행한다.
- RNN 의 계산
- 소프트맥스 함수
- 시간이 흐르면서 드러나는 단순한 Recurrent Neural Network
- 네트워크 층은 각 시간 단계마다 재계산 되며, 모든 단계에서 U, V, W 가 공유된다.
언어 모델링을 위한 RNN
- Input: Embedding Matrix E에 인덱싱된 단어 입력 시퀀스에 대한 일련의 1-hot 벡터
- Output: 각 시간 단계에서 각 Vocabulary 단어에 대한 확률
- Cross-entropy(CE) loss 사용
- Teacher forcing-based 접근법
- 훈련 중에 이전 시간 단계의 예측 결과에서 진행하지 않고 각 시간 단계에서 올바른 다음 단어(올바른 history sequence)를 모델에 부여한다.
Sequence Labeling 을 위한 RNN
- Part-of-Speech(PoS) tagging RNNs은 언어 모델링을 위한 RNN과 동일한 방식으로 구성된다.
- Output: 각 시간 단계에서 각 PoS 태그의 확률
Sequence Classification 을 위한 RNN
- Sentiment classification, spam, document level topic classification과 같이 전체적으로 분류되는 일련의 단어를 전달한다.
- 마지막 토큰(h_(n))에 대한 숨겨진 Layer는 Feed Forward Network(FFN)에 대한 입력 계층 역할을 하며, 이 계층은 분류를 수행한다.
- h_(n)는 단어 입력 시퀀스의 압축된 표현이다.
- 때로는 Pooling 시퀀스의 각 단어에 대해 모든 숨겨진 상태 행렬의 요소별 평균 또는 최대값을 대신 사용할 수 있다.
- Loss는 전체 RNN + FFN 네트워크 출력 계층과 관련된 것만 계산된다.
- 이것은 end-to-end 훈련이라고 불린다.
- (Downstream Application) 최종으로부터의 손실은 전체 네트워크에서 Weight 를 조정하는 데 사용된다.
텍스트 생성
- Autoregressive Generation: 이전 단어 선택에 따라 다음 단어를 반복적으로 샘플링한다.
- 문장 시작 마커<s> 부터 시작한다.
- 문장 끝 마커</s>가 생성될 때까지 단어를 생성한다.
- 번역 작업의 경우 <s> 대신 번역하고 싶은 문장부터 시작할 수 있다.
- 요약 작업의 경우 <s> 대신 요약할 텍스트부터 시작할 수 있다.
Stacked RNN
- 한 RNN 의 출력 계층은 다른 RNN 의 입력 계층이 된다.
- 스택형 RNN은 개별 RNN을 능가하는 경향이 있지만, 훈련을 하는데 더 계산적으로 강하다.
- Effectiveness 뒤의 직관은 각 수준이 이전 계층에서 생성된 추상화로부터 이익을 얻는다는 것이다.
Bidirectional RNNs 양방향 RNN
- 양방향 RNN은 두개의 독립적인 RNN을 연결한다.
- Forward RNN은 시작부터 현재 시간까지 입력을 처리한다.
- Reverse RNN은 입력을 종료 시간에서 현재 시간으로 처리한다.
- Forward와 Backward 표현을 합친다.
- 이러한 방식으로 각 시점에 대해 특정 입력 시퀀스에 대한 왼쪽 및 오른쪽 컨텍스트를 모두 캡쳐한다.
'AI Master Degree > Natural Language Processing' 카테고리의 다른 글
Transformers 란? 트랜스포머란? (0) | 2022.10.20 |
---|---|
Long Shorter-Term Memory 네트워크란? LSTM이란? (0) | 2022.10.13 |
Word2Vec 이란? (0) | 2022.10.10 |
Logistic Regression 이란? (0) | 2022.10.10 |
Model Evaluation란? 모델 평가란? (0) | 2022.10.10 |