2016-06-18 6 views
1

특수 단어 임베딩을 사용하여 LSTM을 작성하고 싶습니다. 그러나 이것이 작동하는 방법에 대해 몇 가지 질문이 있습니다.LSTM (중첩 된) 내의 Tensorflow 시퀀스 - 시퀀스 LSTM

아시다시피 일부 LSTM은 문자를 처리하므로 일부 문자는 문자로 출력됩니다. 약간의 문자 수준 오류에 내성을 갖기 위해 중첩 된 LSTM을 사용하여 단어를 추상화하여 강력한 임베딩을 배우기 위해 동일한 작업을 수행하려고합니다.

그래서 작은 LSTM이 단어의 모든 문자를 펼치면이 단어가 삽입됩니다. 문장에있는 각각의 임베디드 단어는 더 높은 레벨의 LSTM에 대한 입력으로 공급되며, 이는 문자가 아닌 매 시간 단계에서 단어 수준에서 작동합니다.

질문 : - 그것에 대해 언급 한 연구 보고서를 더 이상 찾을 수 없습니다. 내가 말하는 것에 대해 알고 있다면, 내가하고 싶은 것에 이름을 쓰고 싶습니다. - 일부 TensorFlow 오픈 소스 코드가 이미 존재합니까? - 다른 방법으로 구현하는 방법에 대한 아이디어가 있습니까? 신경망 출력은 처리하기가 더 어려울 수 있습니다. 출력 중첩 된 LSTM을 사용하여 문자에 대한 교육을 위해 단어 포함을 취소해야하기 때문입니다. 모든 것은 한 번에 하나의 단위로 훈련되어야합니다 (워크 플로 : LSTM 문자, LSTM 단어, LSTM 문자).

내 생각 엔 rnn_cell.MultiRNNCell은 LSTM을 중첩하지 않고 위에 겹쳐 놓을 것입니다.

그렇지 않으면 기본 LSTM 외부에 자동 인코딩으로 (삽입 및 삽입) 교육하는 것이 좋습니다?

답변

3

나는 당신이 말하는 논문을 모른다.

당신은 2 LSTMCells를 만들 수 있습니다

그러나 여기 내가 TensorFlow이 뭔가를 구현하는 것이 방법에 대한 생각이다.

가변 개수의 문자와 시퀀스 당 가변 개수의 단어를 지원하려면 dynamic_rnn (rnn.py 참조) 코드를 복사하고 적용 할 수 있습니다. 단일 while 루프 대신에 중첩 된 while 루프. 첫 번째 LSTMCell을 호출하고 각 단어 다음에 상태를 재설정하는 문자에서 작동하는 내부 연산자. 내장 된 단어 (내부 루프의 출력)에서 작동하고 두 번째 LSTMCell을 호출하는 외부 연산자.

일반적으로 퍼가기를 별도로 교육해야하는지 여부는 사용 가능한 데이터의 양에 따라 다릅니다. 많은 데이터 교육을받지 않은 경우 (잠재적으로 다른 데이터 세트에서) 별도로 퍼가기가 합리적 일 수 있습니다. 감당할 수 있고 모델이 잘 훈련되면 문자의 의미가 작업별로 다를 수 있으므로 전체 네트워크와 함께 임베딩을 교육하면 이점을 얻을 수 있습니다.

하지만이 방법이 먼저 맞춤법 교정을 수행 한 다음 표준 단어 포함을 사용하는 것과 어떻게 비교되는지 궁금합니다. 그런 다음 standard embedding tools과 dynamic_rnn이있는 단일 LSTMCell 중 일부를 사용할 수 있습니다.

관련 문제