챗봇 훈련 방법


10

나는 신경망 실험을 시작하고 싶었고 장난감 문제로서 나는 하나의 채팅을 훈련하기를 원했다. 어쨌든 그렇게 영리하지 않습니다.

나는 몇 가지 문서를 둘러 보았고 일반적인 작업에 대한 많은 자습서를 찾았지만이 특정 주제에 대해서는 거의 알지 못했습니다. 내가 찾은 것은 구현에 대한 통찰력을주지 않고 결과를 공개했습니다. 그렇게 한 것은 꽤 얕았습니다 (seq2seq의 tensorflow 문서 페이지에 imho가 부족합니다).

이제 나는 그 원리를 어느 정도 이해했을 것 같지만 확실하지 않으며 시작하는 방법조차 확실하지 않습니다. 따라서 문제를 해결하는 방법을 설명 하고이 솔루션에 대한 피드백을 원합니다. 잘못 된 부분을 알려주고 프로세스에 대한 자세한 설명과 실용적인 지식과 관련이 있습니다.

  1. 작업에 사용할 데이터 세트는 모든 페이스 북과 whatsapp 채팅 기록의 덤프입니다. 나는 그것이 얼마나 클지 모르지만 여전히 충분히 크지 않을 것입니다. 대상 언어는 영어가 아니므로 의미있는 대화 샘플을 신속하게 수집 할 위치를 모릅니다.

  2. 각 문장에서 사고 벡터를 생성하려고합니다. 아직도 실제로 어떻게 모르는지; deeplearning4j 웹 사이트에서 word2vec에 대한 좋은 예를 찾았지만 문장에는 없습니다. 나는 단어 벡터가 어떻게 그리고 왜 만들어 졌는지 이해했지만 문장 벡터에 대한 철저한 설명을 찾을 수 없었습니다.

  3. 사고 벡터를 입력 및 출력으로 사용하여 신경망을 훈련시킵니다. 얼마나 많은 레이어를 가져야하는지, 어떤 레이어가 lstm 레이어인지 알아야합니다.

  4. 그런 다음 생각 벡터를 문장을 구성하는 일련의 문자로 변환 할 수있는 다른 신경망이 있어야합니다. 다른 문장 길이를 보충하기 위해 패딩을 사용해야한다는 것을 읽었지만 문자를 인코딩하는 방법이 충분하지 않습니다 (코드 포인트가 충분합니까?).

답변:


7

이 블로그 포스트 를 읽고 시작하는 것이 좋습니다 . 대화의 한 문장을 취한 다음 해당 문장에 대한 답변을 출력하는 RNN을 작성하기 위해 코드를 잠식 할 수 있습니다.

그것은 단어 벡터와 생각 벡터가없는 프로젝트의 쉬운 버전입니다. 문자 만 입력하기 때문에 오타는 신경 쓰지 않아도됩니다.

다음으로 복잡한 단계는 문자 대신 단어 벡터를 입력하는 것입니다. 이를 통해 훈련 데이터에 포함되지 않은 단어를 일반화 할 수 있습니다. 그리고 아마도 여전히 코드를 약간만 수정했을 것입니다.

생각 벡터 사용을 고집한다면 NN 번역을 읽어야합니다 . 그리고 아마도 미리 훈련 된 엔코더 네트워크를 얻으려고 노력하십시오. 또는 귀하의 언어를위한 큰 번역 모음으로 미리 훈련하십시오.

작은 훈련 세트를 사용하면 시스템이 훈련 데이터를 그대로 다시 만들 때까지 아마도 최선을 다할 것입니다. 단어 벡터를 사용하면 시스템에서 "오늘 고양이를 이길 것"과 같은 대답을 할 수 있습니다. 당신이 훈련 데이터에 "어제 개를 걷어차"주었다.

나는 벡터가 큰 차이를 만들 것이라고 생각하지 않습니다. 디코더가 전혀 배우지 못하게하면.


나는 이미 얼마 전에 첫 번째 기사를 읽었으며 캐릭터가 올바른 추상화 수준이 아니라고 생각합니다. 한 번에 하나씩 단어 벡터를 사용하는 것에 대해서는 생각하지 않았지만 흥미롭고 덜 복잡한 방법이라고 생각합니다. 아마 내가 읽은 종이 일 것이다.
Totem

사용할 봇 코어를 찾았습니다 ...하지만 텍스트 생성에 집중하고 있습니다. ai.stackexchange.com/questions/5963/… 궁금한 점은 벡터와 학습 속도에도 불구하고 여전히 제대로 작동하지 않는 것입니다. 라이브러리의 단점 일 수 있습니다. 사용하지만 레이어 크기가 300 일 수 있다고 생각하지 않습니다 ... 또는 레이어 크기와 관련하여 필요한 교육 량이 있습니까? 도움을 주시면 감사하겠습니다. 사용중인 라이브러리에 유의하십시오.
FreezePhoenix

0

프로젝트 개념에 따르면, 초보자를 위해 테스트 중심 개발 기술을 적용하도록 요청합니다. 먼저, 소량의 데이터 세트를 처리하는 데 사용할 수있는 더 작은 크기의 데이터베이스를 작성하여 원하는 개선을 제공하십시오.

즉, 해당 데이터베이스를 사용하여 노드와 같은 데이터와 인라인으로 구성된 트리를 생성합니다. 따라서 봇이 데이터베이스에서 특정 데이터 세트의 데이터 포인트로 표시된 피드백을 생성하기 시작하면 피드백이나 답변이 방법입니다. 트리의 다음 노드로

참고 : 초보자에게는 큰 채팅 기록을 전체적으로 사용하지 마십시오. 간단한 작업이므로 너무 많은 입력 == 과적 합입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.