Skip to content

Philosophy

toncho11 edited this page May 20, 2019 · 29 revisions

This page discuss the architecture used in KorraAI. We can have many architecture that emulate human behavior. KorraAI focuses on the idea that human behavior is compromised of interactions and we are building a distribution over these interactions. It is important to note that these interactions are in the direction bot -> user. We do not know what will be the next interaction, we just increase the probability of certain categories of interactions. Also the bot assumes that it is always on. This means that things can change over time, the bot has knowledge of current time and time elapsed (since it has been started).

The main interactions distribution is controlled by the following factors:

  • How the character (the model) has been encoded in the beginning
    For example we can easily encode that the bot says a lot of jokes by default.

  • How the user responds to questions and how this responses are linked to the distribution
    It the user responded that he is sad or he likes jokes, or he wants more jokes then we can increase the probability of sampling a joke from the main interactions distribution.

  • How time affects the distribution
    If the user works we can encode that during work hours (remember the bot is always on and available) there are less movie suggestions and after work we can increase the probability of suggesting a movie to watch.

Probabilistic variables give us a structure. We encode them in a Bayesian network in order to make an inference. The advantage is that we can perform inference in several directions, which gives us a rather compact model and with using probabilistic programming is easy to encode them. Inference can be performed automatically which reduces the burden of using the model. Inference over a small Bayesian network can be exact and in this case we are not concerned by the advantages and disadvantages of different inference methods that are available in the underlying probabilistic framework which in general is a must know when using probabilistic programming.

Sometimes though is is not easy to construct a Bayesian network that corresponds to concepts in life. Often it is difficult to say for single concept by how many other concepts it depends. What is the direction of causality? A causes B or B causes A.


Interactions initiated by the user are currently not supported. This sounds unnatural, but it is not uncommon. Imagine a sales agent. The objective of the sales agent is to guide the conversation until reaching an objective by performing a series interactions in order to apply its sales strategy. Also the main problem is the vast number of interactions (mainly questions and reflections) that the user can perform. These first must be correctly translated from voice to text and then NLP(Natural Language Processing) and Semantic Annotation must be applied. The result next could be linked with current model: saying something more positive or more negative, etc.

If we simplify (as we often do) interactions in the direction user -> bot can be of 3 categories:

  1. personal, related to the bot (How are you today? Are you OK?)
  2. general questions related to universal facts (What is the distance to the Moon?)
  3. more complicated questions about life (Should I buy less toys to my children?)

Type 1) has to be encoded by KorraAI, for 2) and 3) we could ask google and see if there is a ready response in the beginning of the search page or use another dedicated service. In case of 3) Quora is an example of such service as it tries to be a universal forum and it might at some point contain the response of every possible general question. Example: "What is an odd conversation you’ve had with your child about a video game?".

Clone this wiki locally