-
Recurrent Neural NetworksGoogle ML Bootcamp/Sequence Models 2023. 9. 29. 16:34728x90
※ Recurrent Neural Network Model
- Problem 1 : 입력과 출력이 다른 예시에서 다른 길일 수 있음. 모든 단일 예시가 같은 입력 길이 T_x 이거나 같은 대문자 길이 T_y를 가지지 않고 모든 문장은 최대 길이가 아니다.
- Problem 2 : 텍스트의 서로 다른 위치에서 학습한 기능을 공유하지 않는다.
- 단일 신경망에서와 같이 하나의 Input에 Output이 하나가 존재하는 느낌이 아니라, 신경망을 여러개 연결 하는 느낌으로 순환신경망을 구성한다.
- 모든 노드마다 같은 파라미터값을 가지고 Input은 Wax, Output은 Wya가 된다.
- yhat_Ty에서는 x_1, x_2, x_3, ..., x_Ty까지의 정보를 모두 얻을 수 있음.
- 약점 : RNN은 앞서 나온 정보만을 사용해서 예측을 한다는 것. -> 특정 시점의 예측이 시퀀스에 이전에 입력된 입력값이나 정보를 사용하지만 그 뒤에 나온 정보는 사용하지 않는다.
- 이러한 약점은 아래 두 문장을 보면 이해가 되는데, 앞의 세 단어만 볼 경우 차이를 구별할 수 없음.
- Waa와 Wax를 Wa로 간단하게 표현 가능 -> Wa = [Waa ; Wax]
- Wya도 Wy로 간단하게 표현 가능
- Forward propagation의 Cost Function
- RNN에서의 Backpropagation 구조
※ Different Types of RNNs
- Many to many : 입력 길이와 출력 길이가 정확히 같아야 한다.
- Many to one
- One to one
- One to many
- Many to many : encoder와 decoder가 구분되어 Input(T<x>)과 Output(T<y>)의 길이가 다른 경우
※ Language Model and Sequence Generation
- 앞에 있었던 정보를 그대로 끌고와서 Input으로 넣어주는 Many to many Model
- x<2> = y<1>, ... x<9> = y<8>의 형태가 된다.
- Cost Function은 아래와 같이 되며, 각각의 확률은 조건부확률을 따른다.
- 주로 활성화 함수로는 Softmax 함수를 이용한다.
Charater-level language model
- 장점 1 : 알 수 없는 단어 토큰에 대해 걱정할 필요 X -> 문자 수준 언어 모델은 0이 아닌 확률인 mau와 같은 시퀀스를 지정할 수 있음. 반면에 mau가 단어 수준 언어 모델에 대한 어휘에 없는 경우에는 알 수 없는 단어 토큰을 지정해야 함.
- 단점 1 : 긴 배열로 끝난다는 것. 사이의 긴 범위의 종속성을 캡처할 때 단어 수준 언어 모델 만큼 좋지 않다.
- 단점 2 : cost가 많이 든다.
※ Vanishing Gradients with RNNs
- RNN이 1000 ~ 10,000 신경망 레이어를 가지고 있기 때문에 Vanishing Gradients, Exploding Gradients 문제를 맞닥뜨릴 수 있음.
- Solution : Gradient Clipping -> 기울기 벡터를 보고 일부 임계값보다 크다면 벡터의 일부를 다시 조정해서 너무 크지 않게 만드는 것. 최댓값에 클리핑 됨. 함수가 복원을 하려 한다면 적용하면 기울기 exploding을 해결하는데 도움이 됨.
※ Gated Recurrent Unit (GRU)
- gamma 가 0과 매우 가깝기 때문에 결국 C<t> = C<t-1> 이 된다. 결국 C의 값은 거의 정확하게 유지가 되고 기울기 소멸 문제를 해결해 줄 수 있다.
- gamma r(relevance) : 적절성까지 추가 해서 GRU를 사용한다.
- GRU와 LSTM이 대표적으로 사용하는 인스턴스이다.
- c<t> = gamma_u * c_tilder<t> + (1 - gamma_u) * c<t-1> 이 맞는 수식
※ LSTM
- gamma_u = update
- gamma_f = forget
- gamma_o = output
- 마지막 a<t> = gamma_o * tanh c<t>
- 복잡한 LSTM 대신 GRU가 파생된 것.
- GRU가 훨씬 단순한 모델이다. -> 두 개의 게이트만을 가지고 훨씬 더 큰 네트워크를 빌드할 수 있음. 계산도 더 빠르게 실행되기 때문에 더 큰 모델을 빌드할 수 있다.
- LSTM : 게이트가 두 개가 아닌 세 개가 있기 때문에 더 유연하다. LSTM은 역사적으로 검증된 모델이다.
※ Bidirectional RNN
- 일반적으로 NLP 문제에서는 LSTM과 BRNN을 대부분 사용한다.
- 장점 : 전체 시퀀스에서 잠재적으로 정보를 고려하여, 시퀀스 중간에라도 예측을 할 수 있다.
- 단점 : 예측을 하기 전에 전체 데이터 시퀀스가 필요하다.
※ Deep RNNs
728x90'Google ML Bootcamp > Sequence Models' 카테고리의 다른 글
Transformer Networks (1) 2023.10.04 Various Sequence To Sequence Architectures (0) 2023.10.03 Learning Word Embeddings: Word2vec & GloVe (0) 2023.10.02 Word Embeddings (1) 2023.10.01