RNN 언어 모델 RNN을 이용하여 언어 모델을 구현한 RNN 언어 모델은 시점이라는 개념을 도입하였기 때문에 입력의 길이를 고정하지 않음 RNNLM이 언어 모델링을 학습하는 과정 예 : 훈련 코퍼스에 'what will the fat cat sit on' 문장이 있을 경우, 주어진 단어 시퀀스로부터 다음 단어를 예측하는 모델 1) RNNLM 훈련이 끝난 모델의 테스트 과정 RNNLM은 기본적으로 예측 과정에서 이전 시점의 출력을 현재 시점의 입력으로 하므로 훈련이 끝난 모델은 테스트 과정 동안 what을 입력받으면, will을 예측하고 이 will은 다음 시점의 입력이 되어 the를 예측함 그러므로 네 번째 시점의 cat은 앞서 나온 what, will, the, fat이라는 시퀀스로 인해 결정된 단어..
GRU LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서, 은닉 상태를 업데이트하는 계산을 줄임 즉, LSMT의 성능과는 유사하면서 복잡했던 LSTM의 구조를 간단화시킨 것 출력, 입력, 삭제 게이트가 존재했던 LSTM과 달리, GRU에서는 업데이트 게이트와 리셋 게이트 두 가지 게이트만이 존재 경험적으로 데이터 양이 적을 때는 매개변수의 양이 적은 GRU가 조금 더 낫고, 데이터 양이 더 많으면 LSTM이 더 나음 케라스에서의 GRU 케라스에서는 GRU에 대한 구현을 지원하며, 사용 방법은 SimpleRNN이나 LSTM과 동일 model.add(GRU(hidden_size, input_shape=(timesteps, input_dim)))
바닐라 RNN의 한계 가장 단순한 형태의 RNN을 바닐라 RNN이라고 하며 바닐라 RNN 이후 바닐라 RNN의 한계를 극복하기 위한 다양한 RNN의 변형이 등장 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존하지만 바닐라 RNN의 timesteps이 길어질수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생해 비교적 짧은 시퀀스에 대해서만 효과를 보이는 단점이 존재 예) 시간이 지날수록 x1의 정보량이 손실되고, 시점이 충분히 긴 상황에서는 x1의 전체 정보에 대한 영향력이 거의 없을 수 있음 어쩌면 가장 중요한 정보가 시점의 앞 쪽에 위치할 수 있으므로 RNN이 충분한 기억력을 가지고 있지 못한다면 다음 단어를 엉뚱하게 예측하게 되며 이러한 문제를 장기 의존성 문제라고 함 바닐라 RNN 내부..
순환 신경망 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이자 입력과 출력을 시퀀스 단위로 처리하는 인공 신경망 시퀀스 모델 피드 포워드 신경망과 달리 RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고 있음 RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀이라고 하며 이 셀은 이전의 값을 기억하려고 하는 일종의 메모리 역할을 수행하므로 이를 메모리 셀 또는 RNN 셀이라고도 표현함 은닉층의 메모리 셀은 각각의 시점에서 바로 이전 시점에서의 은닉층의 메모리 셀에서 나온 값을 자신의 입력으로 사용하게 됨 또한 현재 시점을 변수 t로 표현할 경우 이는 현재 시점 t에서의..
기존 N-gram 언어 모델의 한계 언어 모델은 문장에 확률을 할당하는 모델이며, 주어진 문맥으로부터 아직 모르는 단어를 예측하는 것을 언어 모델링이라고 함 n-gram 언어 모델이 언어 모델링을 하는 방법 1) n-gram 언어 모델은 언어 모델링에 바로 앞 n - 1개의 단어를 참고하며 4-gram이 경우 바로 앞 3개의 단어만 참고 그러므로 'An adorable little boy is spreading _'이라는 문장에서는 boy, is, spreading을 사용 2) 훈련 코퍼스에서 (n-1)-gram을 카운트한 것을 분모로, n-gram을 카운트한 것을 분자로 하여 다음 단어가 등장할 확률을 예측 만약 boy is spreading가 1000번, boy is spreading insults가..
다층 퍼셉트론 단층 퍼셉트론의 형태에서 은닉층이 1개 이상 추가된 신경망을 다층 퍼셉트론이라고 함 다층 퍼셉트론은 입력층에서 출력층으로 오직 한 방향으로만 연산 방향이 정해져 있는 피드 포워드 신경망의 가장 기본적인 형태 케라스의 texts_to_matrix() 이해하기 다층 퍼셉트론(MLP)로 텍스트 분류를 수행하기 전, 사용할 도구인 케라스 Tokenizer의 texts_to_matrix() 이해해보기 1) 케라스의 전처리 도구인 Tokenizer를 임포트 2) 텍스트 데이터에 대해서 정수 인코딩을 수행 3) 텍스트 데이터에 texts_to_matrix()의 count 모드 사용 입력된 텍스트 데이터로부터 문서 단어 행렬(DTM)을 생성하며 행렬의 인덱스는 0부터 시작함 DTM은 bag of word..
서브클래싱 API 케라스의 구현 방식에는 Sequential API, Functional API 외에도 Subclassing API라는 구현 방식이 존재 서브클래싱 API로 구현한 선형 회귀 Sequential API로 구현했던 선형 회귀를 Subclassing API로 구현 import numpy as np import matplotlib.pyplot as plt from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras import optimizers x = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 공부하는 시간 y = [11, 22, 33, 44, ..
케라스의 함수형 API 앞서 배운 케라스의 모델 설계 방식은 Sequential API를 사용한 것이지만 Sequential API는 여러층을 공유하거나 다양한 종류의 입력과 출력을 사용하는 등의 복잡한 모델을 만드는 일에 한계가 있음 그러므로 더욱 복잡한 모델을 생성할 수 있는 방식으로 Functional API를 사용 Sequential API로 만든 모델 Sequential API 방식은 직관적이고 편리하지만 단순히 층을 쌓는 것만으로는 구현할 수 없는 복잡한 신경망을 구현할 수 없음 따라서 초심자에게 적합한 API이지만, 전문가가 되기 위해서는 결과적으로 Functional API를 학습해야 함 from tensorflow.keras.models import Sequential from tenso..