워드 임베딩이란? 텍스트를 컴퓨터가 이해하고, 효율적으로 처리하게 하기 위해서는 컴퓨터가 이해하도록 텍스트를 적절히 숫자로 변환해야 함 현재는 각 단어를 인공 신경망 학습을 통해 벡터화(밀집 표현으로 변환)하는 워드 임베딩 방법이 가장 많이 사용되고 있음 희소 표현 벡터 또는 행렬의 값이 대부분 0으로 표현되는 방법을 희소 표현이라고 함 예) 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 원-핫 벡터, DTM 이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커지기 때문에 공간적 낭비를 불러일으킴 밀집 표현 희소 표현과 반대되는 표현으로 벡터의 차원을 단어 집합의 크기로 상정하지 않고 사용자가 설정한 값으로 모든 단어의 벡터 표현의 차원을 맞..
문자 단위 RNN 언어 모델 입력과 출력의 단위가 단어 벡터 레벨이 아닌, 문자 레벨로 변경하여 RNN을 구현할 수 있음 문자 단위 RNN은 이전 시점의 예측 문자를 다음 시점의 입력으로 사용하며 단어 단위가 아니라 문자 단위를 입, 출력으로 사용하므로 임배딩층을 사용하지 않도록 함 문자 단위 RNN 언어 모델 구현하기 (다 대 다 LSTM) 1) 데이터에 대한 이해와 전처리 '이상한 나라의 앨리스' 소설 데이터를 로드하고 특수문자를 제거하고 단어를 소문자화하는 간단한 전처리를 수행 전처리된 결과인 리스트에서 5개의 원소만 출력하면 이들은 문자열로 구성되어 있으므로 하나의 문자열로 통합하도록 함 하나의 문자열로 통합된 길이는 15만 9천자이며 이를 위해 문자열로부터 단어 집합이 아닌, 문자 집합을 만들도..
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..