참고: 저장소는 유지 관리되지 않습니다. 유지 관리를 원하시면 저에게 메시지를 보내주세요.
Keras 작업을 위해 seq2seq를 만듭니다. 그리고 seq2seq의 다른 구현도 시도해 보세요.
코드에는 다음이 포함됩니다.
경고
서류
좋은 사진
설정 및 실행
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
그런 다음
python bin/test.py
결과
지금까지 좋은 결과를 얻지 못했습니다.
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
내 생각에는 이 접근 방식에는 몇 가지 근본적인 문제가 있는 것 같습니다.
word2vec 벡터는 단어 표현에 사용되고 모델은 모든 다음 단어에 대해 대략적인 벡터를 반환하므로 이 오류는 한 단어에서 다른 단어로 누적되어 세 번째 단어부터 시작하여 모델이 의미 있는 것을 예측하지 못합니다... 이 문제는 다음과 같을 수 있습니다. 매 타임스탬프마다 대략적인 word2vec 벡터를 "올바른" 벡터, 즉 사전의 실제 단어에 해당하는 벡터로 바꾸면 이 문제를 극복할 수 있습니다. 말이 되나요? 그러나 이를 수행하려면 seq2seq 코드를 자세히 살펴봐야 합니다.
두 번째 문제는 단어 샘플링과 관련이 있습니다. 앞서 언급한 문제를 해결하더라도 매 타임스탬프에서 가장 가능성이 높은 단어를 선택하기 위해 argmax()를 계속 사용하는 경우 다음과 같이 대답이 너무 간단하고 흥미롭지 않을 것입니다.
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
오해하지 마세요. 이러한 결과는 텐서플로우를 기반으로 하는 다른 seq2seq 아키텍처에서 달성되었습니다.
출력 결과를 다양화하기 위해 온도를 사용한 샘플링을 사용할 수 있지만 이 작업도 seq2seq 라이브러리 내에서 수행되어야 합니다.