Bir chatbot nasıl eğitilir


10

Sinir ağı ile denemeye başlamak istedim ve bir oyuncak problemi olarak birini sohbet etmek için eğitmek istedim, yani cleverbot gibi bir sohbet botu uygulamak istedim. Zekice değil.

Bazı belgelere baktım ve genel görevler hakkında çok sayıda öğretici buldum, ancak bu konuda çok az şey buldum. Bulduğum kişi, uygulama hakkında bilgi vermeden sonuçları ortaya çıkardı. Yapanlar, oldukça sığ mı (seq2seq'deki tensorflow dokümantasyon sayfasında imho yok).

Şimdi, prensibi az çok anladığımı hissediyorum ama emin değilim ve nasıl başlayacağımdan bile emin değilim. Böylece sorunu nasıl çözeceğimi açıklayacağım ve bu çözüm hakkında bir geri bildirim almak istiyorum, nerede olduğumu söylüyorum ve muhtemelen süreç hakkında ayrıntılı açıklamalar ve pratik bilgilerle herhangi bir bağlantım var.

  1. Görev için kullanacağım veri seti tüm facebook ve whatsapp sohbet geçmişimin dökümü. Ne kadar büyük olacağını bilmiyorum ama muhtemelen yeterince büyük değil. Hedef dil ingilizce değil, bu yüzden anlamlı konuşma örneklerini nerede hızlı bir şekilde toplayacağımı bilmiyorum.

  2. Her cümlenin içinden bir düşünce vektörü oluşturacağım. Hala nasıl olduğunu bilmiyorum; Deeplearning4j web sitesinde word2vec için güzel bir örnek buldum, ancak cümle için hiçbiri. Kelime vektörlerinin nasıl oluşturulduğunu ve nedenini anladım, ancak cümle vektörleri için kapsamlı bir açıklama bulamadım.

  3. Düşünce vektörlerini girdi ve çıktı olarak kullanarak sinir ağını eğiteceğim. Kaç katmanı olması gerektiğini ve hangilerinin lstm katmanları olduğunu bilmiyorum.

  4. Sonra bir düşünce vektörünü bir cümle oluşturan bir karakter dizisine dönüştürebilen başka bir sinir ağı olmalıdır. Ben farklı cümle uzunlukları telafi etmek için dolgu kullanmanız gerektiğini okudum, ama karakterleri (kod noktaları yeterli mi) kodlamak için özledim.

Yanıtlar:


7

Bu blog yazısını okuyarak başlamanızı tavsiye ederim . Muhtemelen bir diyalog ifadesinde yer alan ve daha sonra bu ifadeye yanıt vermeye devam eden bir RNN oluşturmak için kodu yamyamlayabilirsiniz.

Hepsi kelime vektörleri ve düşünce vektörleri olmadan projenizin kolay versiyonu olurdu. Sadece karakter giriyorsunuz, bu yüzden yazım hatalarının sizi endişelendirmesine gerek yok.

Bir sonraki daha karmaşık adım, karakterler yerine sözcük vektörleri girmek olacaktır. Bu, egzersiz verilerinizin bir parçası olmayan kelimeleri genelleştirmenize izin verir. Ve muhtemelen hala kodda küçük bir değişiklik.

Düşünce vektörlerini kullanmakta ısrar ediyorsanız, NN çevirisini okumaya başlamalısınız . Ve muhtemelen önceden eğitilmiş bir kodlayıcı ağı almaya çalışın. Veya diliniz için büyük bir çeviri grubu üzerinde kendiniz önceden eğitin.

Küçük egzersiz setinizle yapabileceğiniz en iyi şey, sisteminiz egzersiz verilerinizi kelimesi kelimesine kadar yeniden oluşturacak kadar büyük olasılıkla büyük ölçüde fazladır. Kelime vektörlerini kullanmak, sisteminizin "Bugün kediyi dövüyorum" için aynı cevabı vermesine izin verecektir. eğitim verilerinde "dün köpeği tekmeledim."

Düşünce vektörlerinin büyük bir fark yaratacağından emin değilim. Eğer hiç öğrenmek için dekoder olsun.


İlk makaleyi bir süre önce okudum ve karakterlerin doğru soyutlama seviyesi olmadığını hissediyorum. Kelime vektörleriyle birer birer gitmeyi düşünmedim ama sanırım bu ilginç ve daha az karmaşık bir yol. Gazeteyi okuyacağım, muhtemelen
Totem

Kullanılacak bir bot çekirdeği buldum ... Ama metin üretimine takılı kaldım. ai.stackexchange.com/questions/5963/… Merak ettiğim şey vektörlere ve öğrenme oranına rağmen hala olması gerektiği gibi çalışmıyor ... Bunun Kütüphane'nin bir eksikliği olabileceğinden endişeliyim kullanıyorum, ancak bunun 300 katman boyutu için mümkün olabileceğini düşünmüyorum ... Yoksa katmanın boyutu ile ilgili gereken eğitim miktarı mı? Herhangi bir yardım mutluluk duyacağız. Lütfen kullanılan kütüphaneyi not edin.
FreezePhoenix

0

Proje konseptinize göre, yeni başlayanlar için bazı test odaklı geliştirme teknikleri uygulamanızı rica ediyorum. İlk olarak, küçük bir veri kümesini işlemek için kullanabileceğiniz daha küçük boyutlu bir veritabanı oluşturmaya çalışın, bu da istenen bir iyileştirmeyi sağlayabilir.

Bununla birlikte, bu veritabanını, düğümler olarak verilerinizle organize bir ağaç oluşturmak için kullanın. ağaçtaki bir sonraki düğüme.

not : Yeni başlayanlar için, büyük sohbet geçmişinizi bir bütün olarak kullanmayın, çünkü bu basit bir görevdir .. çok fazla girdi == Fazla sığdırma.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.