Why not a standard network?
- 지난 강의에서 살펴본 9개 단어로 구성된 예제를 떠올려 봅시다.
- 이를 이전까지 배웠던 딥러닝 모델에 적용하는 것은 크게 두 가지 문제점을 야기합니다.
- 첫째로 입/출력의 길이가 달라질 수 있습니다.
물론 둘이 동일한 경우도 존재하지만 이것이 보장되지는 않습니다.
번역 문장의 예시를 떠올려보면 이해하기 쉽습니다. - 둘째로 다른 위치에서의 feature가 공유되지 않습니다.
이건 조금 추상적이긴 하지만, 만약 동일한 단어가 같은 문장 내에 반복되어 사용되는 경우 어떻게 처리해야 할까요?
기존에 학습한 feature를 이용할 수 없다는 문제가 발생하는 것입니다. - 또한 10,000개 단어가 들어있는 vocab의 경우 10,000차원으로 표현되는데 이를 CNN 모델에 input으로 입력하면 parameter 수가 기하급수적으로 증가한다는 문제점도 존재합니다.
Recurrent Neural Networks
- RNN은 각 입력 x에 대해 예측 결과 y hat을 구하되, 이전의 결과 a를 입력으로 추가한다는 특징이 있습니다.
- 이전의 결과를 현재의 예측에 반영한다는 점에서 '맥락'을 반영한다고 해석할 수 있습니다.
- 재밌는 특징은 각 입력에 대해 가중치가 공유된다는 점입니다.
- 일반적으로 a<0>는 영벡터로 초기화해서 사용합니다.
- 이런 구조의 단점은 이전의 정보만 반영할 수 있다는 것입니다.
- 이후의 정보를 반영할 필요가 있나라고 생각할 수 있지만, 실제 언어에서는 이후에 나올 단어와의 조합이 의미를 형성하는데 기여합니다.
- 위 예시에서는 Teddy라는 단어 뒤에 Roosevelt가 나올지 bears가 나올지를 아는 것이 중요하다는 것이죠.
- 이런 한계를 극복하기 위해 Bidirectional RNN도 등장했다고 합니다.(현재는 Unidirectional에 대해 배운 것입니다)
Forward Propagation
- 순전파를 시각화한 것입니다.
- a는 이전 층에서 구한 a, 이번 층의 입력 x, 편향 b로 계산합니다.
- 활성화 함수로는 주로 tanh가 사용되고, relu도 종종 쓰입니다.
- y hat은 이번 층에서 구한 a, 편향 b로 계산합니다.
- 활성화 함수로는 주로 sigmoid가 사용됩니다.
- a는 이전 층에서 구한 a, 이번 층의 입력 x, 편향 b로 계산합니다.
Simplified RNN notation
- 위에서 살펴본 바와 같이 RNN에서는 가중치 행렬이 x, a, y에 대해서 총 세 종류로 존재합니다.
이를 간소화하기 위해 a, x에 대한 가중치 행렬을 하나로 묶을 수 있습니다. - 예시를 보면 Waa는 (100, 100) 사이즈, Wax는 (100, 10000) 사이즈입니다.
다시 말하자면 Wa는 100차원이고, a와 x의 차원이 각각 100, 10000인 것입니다.- 어차피 둘을 따로 계산해서 더하게 되므로 이를 한꺼번에 합쳐서 행렬곱을 해주면 됩니다.
- 결과적으로 (100, 10100) 사이즈의 행렬이 됩니다.
- 다시 말하자면 a, x에 대한 가중치 행렬을 하나로 합치게 되고, 이때의 차원은 둘의 차원을 더한 것이 됩니다.
출처: Coursera, Sequence Models, DeepLearning.AI
'Sequence Models > 1주차' 카테고리의 다른 글
Recurrent Neural Networks(7) : Sampling Novel Sequences (0) | 2023.04.14 |
---|---|
Recurrent Neural Networks(6) : Language Model and Sequence Generation (0) | 2023.04.14 |
Recurrent Neural Networks(5) : Different Types of RNNs (0) | 2023.04.14 |
Recurrent Neural Networks(4) : Backpropagation Through Time (0) | 2023.04.13 |
Recurrent Neural Networks(1),(2) : Why Sequence Models?, Notation (0) | 2023.04.13 |