Sequence Models/1주차

Deep RNN example 지금까지 배웠던 RNN, GRU, LSTM, BRNN 등의 내용을 Deep Neural Network에 접목시킬 수 있습니다. notation을 잘 살펴보면 [layer] 으로 표기된 것을 알 수 있습니다. 또한 layer는 사용자가 의도한 바에 따라 얼마든지 쌓을 수 있음은 당여한 것이며, BRNN의 경우 연산량이 두 배가 될 것도 예상 가능합니다. 출처: Coursera, Sequence Models, DeepLearning.AI
Getting information from the future 지금까지 살펴본 RNN, GRN, LSTM과 같은 모델들은 입력 정보를 계산하여 forward하는 방식으로만 문제를 처리하고 있습니다. 그에 따라서 이후의 정보를 반영하는 것이 중요한 위 예시같은 문제는 해결하지 못한다는 문제점을 안고 있죠. Bidirectional RNN (BRNN) Bidirectional RNN은 위처럼 forward 뿐만 아니라 backward 방향의 정보도 함께 반영하여 예측값을 구합니다. 그래서 예시의 경우 Teddy라는 일부의 정보만으로 다음 단어를 예측하지 않게 되어 보다 정확한 예측이 가능해집니다. 물론 음성 인식처럼 이전 정보만을 가지고 다음 값을 예측해야 하는 경우에는 적합하지 않지만, 대부분의 자연어 ..
GRU and LSTM GRU와 LSTM의 차이를 비교하고 있습니다. GRU에서 update, reference 두 개의 gate를 사용한 것과 달리, LSTM은 update, forget, output 세 개의 gate를 사용합니다. 재밌는 특징은 세 개의 gate에 들어가는 입력이 a , x로 동일하다는 것이죠. 물론 가중치와 편향은 gate마다 다릅니다. 또한 GRU에서는 c가 RNN의 a와 동일한 것을 의미했지만, LSTM에서는 c와 a가구분되어 사용되는 것을 알 수 있습니다. 이는 두 개의 항이 다음 층으로 각각 전달되기 때문입니다. LSTM in pictures peephole connection : c의 각 원소는 게이트 내의 각 요소에 순서대로 영향을 줍니다. 예를 들어 c의 첫 번째 요소..
RNN unit 기존 RNN의 구조를 시각화하면 위와 같습니다. 이전 층의 a과 현재 층의 입력 x에 가중치를 곱하고 편향을 더한 것에 활성화 함수를 적용한 것이 a가 됩니다. GRU (simplified) 마찬가지로 GRU의 구조를 시각화한 것은 위와 같습니다. GRU에서는 cell의 개념을 사용하고 있기 때문에 RNN의 a 기호 대신 c를 사용합니다. 이전 층의 결과물 c과 현재 층의 입력 x 둘을 계산한 것이 GRU에서는 tilda c와 gamma u가 됩니다. 여기서 u는 update의 u라고 생각해도 좋습니다. tilda c는 tan h를, gamma u는 sigmoid를 활성화 함수로 사용합니다. 이제 둘을 곱하여 이전 층의 cell을 기억할지 말지 결정합니다. 예를 들어 gamma = 0인 ..
Vanishing gradients with RNNs RNN은 Vanishing gradients, Exploding gradients라는 대표적인 문제점을 안고 있습니다. sequence의 길이가 길어지면 길어질수록 초반부의 정보를 후반부까지 유지하기 힘들다는 것이 기본적인 문제점입니다. 위 예시에서 cat, cats라는 주어들을 보면 수일치를 위해 동사가 was, were로 달라져야 합니다. 만약 두 단어 사이의 sequence의 길이가 엄청나게 길다면 모델의 입장에서 모든 정보를 포함한 타당한 추론을 하기 어려워집니다. 수학적으로는 층(layer)이 여러 개 쌓일수록 기울기가 폭발적으로 증가하거나, 역전파(back propagation) 시 0에 수렴하는 문제점이 발생하곤 합니다. 기울기가 폭발적으..
Sampling a sequence from a trained RNN 이전 강의에서 배운 것처럼 RNN 모델이 학습을 마치고 나면 sampling을 해봅니다. a는 0으로 초기화된 상태에서 시작하면, 각 토큰들을 기준으로 다음에 등장할 확률이 가장 높은 토큰 하나를 예측하게 됩니다. 이때 토큰이 등장하지 않게 하려면 resampling 하게 하는 등의 조치를 취할 수 있습니다. Character-level language model 지금까지 살펴본 것은 단어 단위의 RNN이었지만, 이 토큰을 글자 단위로 만들 수도 있습니다. 이때는 소문자, 대문자, 공백, 특수 기호 등등 다양한 문자가 vocab에 포함될 수 있겠죠. 하지만 모든 글자 단위로 연산을 하게 되면 비용이 비싸다는 단점이 있습니다. Seque..
chanmuzi
'Sequence Models/1주차' 카테고리의 글 목록