전체 글

Sorting problem key를 기준으로 오름차순 정렬한 예시입니다. Sample sort client 1, 2 숫자, 문자(알파벳)를 기준으로 정렬한 예시입니다. Sample sort client 3 directory를 기준으로 정렬한 예시입니다. Callbacks 데이터 타입에 대한 정보가 주어져있지 않은 상황에서도 정렬을 수행하기 위해 callback 메커니즘이 사용됩니다. comparetTo( ) 메서드를 통해 두 아이템의 타입을 비교할 수 있습니다. Java에서는 인터페이스라는 특정 메서드를 사용합니다. Callbacks: roadmap 객체 형식을 지닌 배열이 인자로 전달됩니다. Java의 comparable interface 같은 것을 generic이라고 합니다. compareTo( )..
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에 수렴하는 문제점이 발생하곤 합니다. 기울기가 폭발적으..
chanmuzi
chanmuzi