"Seqgan : 정책 기울기를 가진 서열 생성 적대적 그물"의 Pytorch 구현. (Yu, Lantao 등). 코드는 이해하기 위해 매우 단순화되고 댓글을 달고 (희망적으로) 간단합니다. 구현 된 정책 그라디언트는 원래 작업 (https://github.com/lantaoyu/seqgan/)보다 훨씬 간단하며 롤아웃을 포함하지 않습니다. 단일 보상은 전체 문장에 사용됩니다 (http://karpathy.github.io/2016/31/rl/의 예에 의해 영감을 얻습니다.
사용 된 아키텍처는 Orignal 작업의 아키텍처와 다릅니다. 구체적으로, 반복 양방향 GRU 네트워크는 판별 자로 사용됩니다.
이 코드는 논문에 설명 된대로 합성 데이터에 대한 실험을 수행합니다.
코드의 작동에 관한 의심을 제기하는 것이 좋습니다.
코드를 실행하려면 :
python main.pymain.py는 코드의 진입 점이어야합니다.
다음 해킹 (https://github.com/soumith/ganhacks에서 빌린) 은이 경우에 효과가있는 것 같습니다.
훈련 식별기 발전기보다 훨씬 더 많은 훈련 (발전기는 한 가지 배치 예제에 대해서만 훈련을 받고 배치 크기를 증가 시키면 안정성이 상처를 입 힙니다)
Generator 및 Adagrad 용 Adam 사용
GAN 단계에서 발전기의 학습 속도 조정
훈련 및 테스트 단계에서 드롭 아웃 사용
안정성은 거의 모든 매개 변수에 매우 민감합니다.
GAN 단계가 항상 NLL에서 막대한 방울로 이어지는 것은 아닙니다 (때로는 매우 최소) - 이것이 구현 된 정책 구배의 조잡한 특성 (롤아웃없이) 때문이라고 생각합니다.
학습 곡선은 100 개의 에포크를위한 MLE 훈련 후 적대적인 훈련 후에 얻은 곡선. (당신의 결과는 다를 수 있습니다!)