Thursday, September 30, 2010

Learning ChatBots

Chapter 26 in "Parsing the Turing Test" was "Who Fools Whom? The Great Mystification, or Methodological Issues on Making Fools of Human Beings" by Eugene Demchenko and Vladimir Veselov, which had some great suggestions for bot techniques, and made a point about bot learning being hard.
'Teachable bots is an idea that looks logical at first glance, but becomes almost impossible to implement ... let us look at easy examples:

"John's birthday is January 1st, 1980, What is John's birthday?"

It seems so clear! But let's say this another way:

"Bob is 35. How old is Bob?"

Well, now he is 35 and, according to the educated bot, he will be 35 forever! Birthday is a constant date while "age" is a value that changes in time ... we find ourselves in a vicious circle: to be able to learn, a bot should know much more than it is possible to teach it "manually"'
The authors go on to talk about how Cyc might be reaching this critical threshold to actually start learning, but it seems to me that the problem is one of meta-learning. The authors seem to be focused on bots that learn facts of the type "X is Y", which can be queried through "what is X?" type questions. If this were the only type of learning available then there would be no alternative than to "manually" program the bot to know the difference between birthdays and ages. However could the bot not learn, as human children do, that one is constant and the other is variable? The concept I am wrangling at present is that idea that you could have a dialogue with the bot like so:
Sam: Bob is 35. How old is Bob?

Bot: Bob is 35

[A year later]

Sam: How old is Bob?

Bot: Bob is 35

Sam: No, he is 36

Bot: You previously said "Bob is 35".

Sam: Yes, he was 35, he is now 36 because a year has past.

Bot: So "Bob is 36", will that change again?

Sam: Yes, every year on his birthday his age will increase by 1.
Of course the obvious flaw with my idea is that the bot needs to be intelligent enough to understand my explanation, but the idea of a bot that can learn through explanation should be clear. I imagine the teaching new type of knowledge to the bot would be challenging, but am reminded of that paper (which I now can't find!) by Guy Steele which assumes knowledge of all single syllable words, and defines every word of more than one syllable in terms of words of one syllable or other polysyllabic words that have previously been defined.

Anyhow, this method of boostrapping bot knowledge needs a lot of work, and there's probably some critical reason why it just won't work period, but I'm still intrigued by the idea.

No comments: