대화의 응답 문장을 좋은 느낌으로 스타일 변환하기위한 실험

소개



나의 대화가 생긴 대화식 시스템을 만들고 싶다.

나의 과거의 투고를 보면 어쩐지 알겠다고 생각합니다만, 내가 최근 몇년 연구하고 있는 내용은 특히 심층 학습을 이용한 대화 시스템의 일부이거나 전체이기도 합니다.

그런데 사이츠요의 대화 시스템 되는 것을 생각하고 있는 것입니다만, 여러분이 생각하는 「사이츠요」란 무엇입니까.

예를 들어, 부탁하고 싶은 것을 제대로 펌핑하고, 빨리 그 처리를 완료시켜 주는 것을 가리키거나, 혹은 의도를 잘 펌핑해 주는 것을 가리킬 수도 있습니다.

그런 가운데 내 떠오르는 '사이츠요'란 굉장히 사람같다! 라는 것입니다. 사람 같다는 것은 예를 들어 좋아하는 음식이 있거나 롤러 코스터가 서투르거나 성별이 왠지 비쳐 보이거나 "특정 어조"가 있거나하는 것을 가리킵니다.

이번 제가 소개하는 것은, 그런 「사이츠요」의 요소의 하나, 특정의 어조를 갖게 하는 부분의 실험입니다.

관련 연구 문장에 스타일을 지정하는 작업은 사소한 것처럼 보이는 사실 사소했습니다. 왜냐하면 평가를 쉽게 할 수 있는 것이 아니기 때문입니다. 이미지의 스타일 변환은 Inseption Score를 사용할 수 있는 것 같습니다만, 자연 언어 처리로 그러한 틀은 그다지 제대로 확립되어 있지 않습니다(올해가 되어 이런 평가를 하자고, 논문 가 나오므로 이 분야를 연구하고 싶은 사람은 참고로 하면 좋을 것입니다.

나중에는 이 작업에 그다지 수요가 없다는 것도 있습니다. 궁금한 문장을 수정하거나 모나스 씨처럼 인간의 기분을 이해한 문장으로 수정하거나 하는 경우 정도밖에 실용적인 사용도가 보이지 않는다는 것입니다. 그렇다고는 해도 최근에는(라고 할까 2019년도는) 놀랄 정도로 논문이 나오고 있기 때문에, "드디어 시대가 왔구나", 라고 하는 마음입니다.

그런 가운데 관련 연구로서 들 수 있는 것은, Sequence to Better Sequence Style Transfer from Non-Parallel Text by Cross-Alignment 에 대해서는 DL 윤강의 Style Transfer from Non-Parallel Text by Cross-Alignment 가 알기 쉬웠으므로, 이쪽을 추천합니다. 또 관련 연구의 일람을 보고 싶다면, 이쪽의 SlideShare 가 추천입니다.
Sequence to better Sequence 에 대한 간략한 설명은 이 Github 페이지이 공식적인 느낌이므로 좋지 않을까요?

연구 발표 동영상 실험에 사용되는 방법 이번 실험에 사용하는 것은 Sequence to Better Sequence 를 조금 만지는 모델과 CopyNet 이라는 모델입니다. Sequence to Better Sequence를 조금 Fucked 모델 Sequence to Better Sequence는 문장 스타일 변환을 수행하는 방법입니다. 이것은 VAE를 사용하는 방법이며, 간단히 설명하면 VAE에 의해 얻은 잠재 표현에 스타일도를 평가하는 축을 도입하고 같은 의미의 범위 내에서 그 축에 따라 문장의 의미를 나타내는 잠재 벡터를 미끄러지게 한다. 그러면 스타일이 부여된 문장의 잠재 벡터를 얻는 것 같은 일을 합니다. 그 학습 과정에서 VAE를 이용하여 학습 데이터를 잠재 공간에 비추는 프로세스가 존재합니다. 이 프로세스에서는 입력에 노이즈를 걸어 출력에서 ​​노이즈가 걸리지 않는 것을 예측하는 것과 같은 프로세스로 실시하면 성능이 좋아질 가능성이 있습니다. 이것은 Denoising Auto Encoder (DAE) 뭔가의 자료를 읽는다는 것을 알 수 있습니다. 그래서 저는 Sequence to Better Sequence에 DAE의 아이디어를 가져오려고 했습니다. 이것이 조금 농락했다는 의미가 됩니다. 하지만 그다지 데이터의 양이 충분하지 않기 때문에, 비교 실험이라든지 심각한 구현이라든지는 하고 있지 않습니다 로 말해져 버리고 너무 연구시켜주지 못했다든가 어떻게든). 소스 코드는 에 있습니다. seq2bseq/model/trainfromcsv.ipynb에 따라 실행하십시오. 데이터 세트는 내 저장소에 있습니다. 개인으로 만들고 있기 때문에 데이터 수는 매우 적습니다만, 이상한 데이터는 들어 있지 않다고 하는 것으로 용서해 주세요. 또한 소스 코드에는 드물게 일본어의 해설을 쏟아 놓고 있기 때문에 Tensorflow에서 자연 언어 처리 같은 것 하고 싶은 사람은 참고가 될지도 모르고, 되지 않을지도 모릅니다.

여기

CopyNet CopyNet은 문장 요약 작업에서 사용되거나 기계 번역 작업에서 사용되는 모델입니다. 이 모델의 장점은 미지어에 대한 대응이 가능하다는 것입니다. 이 모델이 하고 있는 것을 간이에 설명하면, 입력문에 포함되어 있는 단어를 출력문으로 사용되는 장면을 상정해, 그 단어를 카피 할 수 있도록 한다는 것입니다. 대폭적인 바꿔 말하지 않는 한, 문중의 단어가 크게 재기록되지 않을 것이라는 예측과 열심히 하면 교사 데이터를 준비할 수 있을 것 같다 쌍의 문장에 의한 데이터 세트가 필요하게 됩니다.일반적으로 이러한 데이터 세트를 모으는 것은 상당히 심합니다)이었기 때문에, 이쪽에서도 실험해 보자, 라고 하게 되었습니다. 소스 코드는 에 있습니다. 훈련 자체는 simple-copynet/trainfromcsv.ipynb에 따라 실행하십시오. 그러나 여하튼 데이터수가 부족하기 때문에 거의 거의 괜찮은 훈련을 할 수 없기 때문에(하이퍼 파라미터를 돌려 돌리면 좋지만, 수고가 굉장합니다), 훈련 후의 모델을 내 저장소 로 공개했습니다. 여기에서 다운로드하여 ./model/test-model/test-model_199.pt에 저장하고 train.py를 실행하십시오.

Google 드라이브

실행 결과 옛 보고서로 했을 때의 결과 보고를 그대로 붙여 둡니다. S2BS는 Sequence to Better Sequence, S2BS with DAE라고 하는 것은 Sequence to Better Sequence를 만난 녀석입니다.

나중에는 CopyNet에서의 스타일 변환을 잘하는 것 hogehoge하고 간이 WebAPI로 실험하고 있었을 때, 이런 재미있는 결과를 얻을 수 있었습니다.



데이터 수에 비해 나름대로 흥미로운 결과를 얻을 수 있었는지 등이라고 자기 만족하고 있습니다.

좋은 웹페이지 즐겨찾기