Undergraduate Thesis on Domain Independent Dialog System
This project is maintained by sourabhMajumdar
Before we begin, let me introduce myself. Hello, my name is Sourabh Majumdar and I am a final year undergraduate student at BITS-Pilani,Goa. This project is my undergraduate thesis and as you can probably guess, the topic is “Deep Learning Approaches for Low-Resource Task Oriented Conversational Agents Using Synthetic Data Generation Techniques “. I am currently doing this thesis under the supervision of Dr. Marco Guerini at Fondazione Bruno Kessler,Trento,Italy
To summarize, today’s machine learning systems are highly advanced to communicate with humans in natural way. However they suffer two main problems that have not been adressed properly.
To Build such a system from scratch for a new domain (for e.g. creating a chat bot for a new company customer care) we need often need training data for the system which is not always available.
Once we have data for a new domain, it causes problems to scale to new domain because we need to re-train everything.
My undergraduate thesis tries to adress the problem by suggesting an end-to-end architecture that tries to solve both of these problems.
The main models used for this experiment are the baselines from the paper Learning End to End Dialog and the my model proposed based on the End to End Memory Networks
The code for all the models are deescribed in the respective folder
The Data for this experiment was inspired from the paper Dialog Self Play proposed by google.
Before we begin the experiment, we need to understand how the experiment works.
Workings
The experiment is basically aimed at comparing multiple memory network model against single memory network. We need to See how both these networks perform on singluar task and then on multiple task. Finally we need to see the ability of the system to scale without loosing the ability to converse effectively in the already trained domains.
Since now we know how to run the experiments, we start it step by step
Step#1 Create the Data
To generate the data navigate to the Data Generator i.e
cd "Data Generator"
and run the create_dialog.py file
python create_dialog.py
After you run this command you should see a folder named Data one directory above.
Step#2 Run the single memory network
Single Memory Network uses one memory network to handle all the tasks given in the experiment. To run the single memory network, navigate to the Single Memory Network folder and run the following command
python experiment.py --train=True --epochs=200 --embedding_size=20
feel free to experiment with the arguements.
Step#3 Run the Multiple memory network
Multiple Memory Network uses more than one memory network to handle multiple tasks. What I mean to say is that there is a dedicated memory task for each task and one memory network which determines which memory network to call from the conversation uptill now.
To run Multiple Memory Network, navigate to the folder Multiple Memory Network and run the following command
python experiment.py --train=True --epochs=200 --embedding_size=20
Currently my project is inspired from the following papers
I propose a multiple memory network architecture inspied from the first two links i.e ( Memory Networks and End to End Memory Networks ).
To create the data I take inspiration from the last link i.e ( Dialog Self Play ).
Feel free to contact me at Sourabh Majumdar