2017-11-15 12 views
0
  1. 저는 Penn Treebank (PTB) 코퍼스를 기반으로하는 LSTM을 사용하여 언어 모델을 교육하려고합니다.언어 모델을 배우는 방법은 무엇입니까?

    나는 이전 단어들에 주어진 다음 단어를 예측할 수 있도록 코퍼스의 모든 바이 그램을 훈련해야한다고 생각했지만 여러개의 선행 단어에 기반하여 다음 단어를 예측할 수 없었습니다.

    그래서 언어 모델을 교육하는 것이 정확히 무엇입니까?

  2. 현재 구현에서 일괄 처리 크기 = 20이고 어휘 크기가 10000이므로 10k 항목 (매개 변수)의 20 개의 결과 행렬이 있으며 손실은 20 개의 지상 진리 행렬과 비교하여 계산됩니다 실제 다음 단어의 색인 만 1이고 다른 항목은 0입니다. 이것이 올바른 구현입니까? 내가 거의 그것이 일반적으로, 약 100

정확하게 언어를 양성하는 것입니다 무엇 그래서

답변

1

말의 권리 범위가 명확하지 않은, 반복을 통해 변경되지 않습니다 약 2의 혼란 받고 있어요 모델?

나는 당신이 코퍼스의 모든 바이그램과 함께 훈련 할 필요가 없다고 생각합니다. 시퀀스를 사용하여 시퀀스 모델을 작성하면 이전 단어가 주어진 다음 단어를 예측할 때 가장 높은 확률을 가진 단어를 선택하기 만하면됩니다.

그래서 디코딩 단계 당 10,000 항목 (매개 변수?)

예 20의 결과 행렬이있다.

올바른 구현입니까? 나는 대략 2 정도의 혼란을 겪고있다. 반복을 거의 바꿀 필요가 없다. 보통 정확히 100 범위라고 할 수있다.

먼저 오픈 소스 코드를 참고 자료로 읽을 수있다. 예 : word-rnn-tensorflowchar-rnn-tensorflow perplexity는 -log (1/10000)이며 단어 당 약 9 입니다. (이는 모델이 전혀 훈련되지 않았 음을 의미하고 복잡하게 튜닝 된 모델이 감소하므로 단어가 완전히 무작위로 선택되므로 2가됩니다. 합리적). 귀하의 진술에있는 100은 문장 당 복잡성을 의미 할 수도 있습니다.

예를 들어, tf.contrib.seq2seq.sequence_loss는 복잡성을 계산하기 위해 사용되는 경우 기본적으로 사실로 모두 average_across_timestepsaverage_across_batch을 설정하면, 결과는 10보다 작아야합니다,하지만 당신은 average_across_timesteps를 설정하면 거짓과 평균 길이의 수 서열은 약 10이고, 약 100 일 것이다.