I've been thinking about what would be a difficult conversation for AI to handle and I came up with the following conversation between a marketing manager (mmgr) and a software developer (sdev):
mmgr: Our best customer needs to be able to use our X-MARKS spot color press software with colored paper.
sdev: What's the problem? Can't they just load colored stock on the press?
mmgr: They tried that. They put blue paper on the press and printed with yellow ink, but it came out green.
sdev: Probably the ink soaked into the paper or was not sufficiently opaque. If you did finger painting in grade school, you know that mixing yellow and blue makes green. I think that's a problem with the press, the finish on the paper their using, or the ink, not with the software.
mmgr: Not from their point of view. They expect the software to give them what they want. They used the preview feature, and it showed yellow printing on white paper.
sdev: Yes, the software assumes it's going to be printed on white paper. Supporting other paper colors would mean that the software would need to know what happens with every color and finish of paper when printed with every color and kind of ink. That's a huge problem. Programming it would multiply the number of lines of code in the program, I don't know, maybe 10 times, maybe 100.
mmgr: There's another problem. They tried to print blue text on white background, but with the blue paper, it printed blue text on blue background and the text was nearly invisible.
sdev: As I said, the software assumes printing on white paper. When you ask to print something in white, the software just prints nothing and assumes it will be white. Many presses these days use a five to fifteen color cartridge and can't even print white, never mind the fact that it's always difficult to print any light color on dark paper.
mmgr: So what should I tell the customer?
sdev: Tell them not to print on colored paper.
mmgr: They're not going to be happy.
sdev: I'm sorry about that. I can't even give you an estimate of what it would cost to implement that in our software because it's so beyond anything I've ever thought about doing.
I can't get my mind around what the AI would be like that could handle the sdev side of this conversation. Think about all the things the AI would need to know about and reason about. It boggles the mind. And we're talking about a printing press, not a jetliner. It's possible that no human will ever be able to create software that can engage in complex conversations, that it's beyond the ability of the most capable humans imaginable. We might, however, some day create computer programs that can create such programs, if they're much better at designing programs than we are, though we may never be able to understand the programs they create. We're almost at that point with automated design of processor circuits, I believe, if not there already.
Another possibility is that the above conversation isn't necessary once AI gets to a certain point. If AI knows everything about printing presses, papers, and inks, and knows how to write programs, it may simply be able to create the program without having to discuss it with the marketing manager or anyone. If so, this raises a question about the incremental approach I'm exploring with the "humanity engine". Maybe the intermediate step of creating an AI that can engage in the above conversation on the sdev side is harder than, or just as hard as, having the AI create the needed program, thus making the conversation moot.
Will AIs ever need to engage in conversations with humans? Maybe they will know everything about us and won't feel the need to explain themselves to us. Where then is the need for conversation? I think they will probably need to engage in conversations with each other, though, and with themselves.
Nevertheless, developing programs that engage in conversations is the path to AI, I believe, because, as the Turing Test seems to imply, it's the only way we will know if we're making progress towards the goal.
Research and design of a platform for responding to queries by means of a near-real-time human-AI collaboration.
Sunday, December 20, 2015
Saturday, December 19, 2015
Engagement Software
Existing software that comes closest to the "humanity engine" concept, though without AI features, is called "customer engagement software". A popular commercial product in this category is called Moxie. As described in this video from 2010, Moxie provides two products, a customer engagement component and an "Employee Engagement Space" component. The employee engagement component has "activity streams" that are comparable to the "humanity engine" idea of conversations in that they are near real time streams. They do not, however, enforce the "turn taking" concept of a conversation. Anyone can add to a stream at any time. Facebook's "News Feed" is an example of an "activity stream".
In a typical chat application, of course, you do not have to wait for others to respond before adding another message to the conversation. If the "humanity engine" design is extended to allow additional continuation before response from both the user and the platform agents, then you may have something like activity streams.
The question arises, though: what, if anything, motivates progress toward a goal in the case of an activity stream? In a conversation, the user expects a response that is, well, responsive, that is, relevant and helpful. When you post to an activity stream, you're not really expecting a response and no one is really responding to previous postings. The conversation model, even if it allows multiple "extensions" of postings before receiving a response, has the expectation that a query will generate a response and so motivates progress towards an "answer".
It seems that the conversation model is therefore stronger in this respect than the activity stream model. The conversation model requires everyone involved to be present and engaged in building a response in near real time. A conversation is much more demanding than an activity stream and should produce better results. Certainly no one imagines that their Facebook news stream is making progress towards a solution to anything.
Bottom line: existing engagement software and the "activity stream" model go a little ways toward the "humanity engine" concept, but engagement software lacks AI features and "activity streams" aren't focused on problem solutions in near real time.
In a typical chat application, of course, you do not have to wait for others to respond before adding another message to the conversation. If the "humanity engine" design is extended to allow additional continuation before response from both the user and the platform agents, then you may have something like activity streams.
The question arises, though: what, if anything, motivates progress toward a goal in the case of an activity stream? In a conversation, the user expects a response that is, well, responsive, that is, relevant and helpful. When you post to an activity stream, you're not really expecting a response and no one is really responding to previous postings. The conversation model, even if it allows multiple "extensions" of postings before receiving a response, has the expectation that a query will generate a response and so motivates progress towards an "answer".
It seems that the conversation model is therefore stronger in this respect than the activity stream model. The conversation model requires everyone involved to be present and engaged in building a response in near real time. A conversation is much more demanding than an activity stream and should produce better results. Certainly no one imagines that their Facebook news stream is making progress towards a solution to anything.
Bottom line: existing engagement software and the "activity stream" model go a little ways toward the "humanity engine" concept, but engagement software lacks AI features and "activity streams" aren't focused on problem solutions in near real time.
A Simple Beginning
The way to build any overwhelmingly complex and difficult system is to start simple and build incrementally. In this post I begin to present a minimal design for a "humanity engine". The high-level process might look something like this:
[The user starts a conversation.]
user: Hi, my name is Steve.
[A human agent receives the conversation and continues it.]
agent0: Hi Steve.
[The conversation is passed back to the user, who continues it.]
user: I need to invest $10,000.
[The conversation goes back to agent0, who refers it to agent1, an investment expert. That agent continues the conversation.]
agent1: What is your net worth and how old are you?
[The conversation is passed back to the user, who continues it.]
user: I'm 67 and my net worth is $300,000.
[The conversation goes back to agent1, the last agent who continued it. That agent provides a further continuation.]
agent1: You should buy a 5 year target date mutual fund.
So far we've not specified much in the way of automation. We're just passing the conversation around and continuing it. We need to consider where and how we can begin to add AI features that allow the human agents to respond more efficiently. Enhancements, based on AI parsing and analysis of the conversation, might include:
[The user starts a conversation.]
user: Hi, my name is Steve.
[A human agent receives the conversation. Software proposes the following candidate continuations: "Thank you for that information.", "Hi Steve", "I'm glad to hear that". The agent selects the 2nd candidate continuation.]
agent0: Hi Steve.
[The conversation is passed back to the user, who continues it.]
user: I need to invest $10,000.
[The conversation goes back to agent0, and the software proposes candidate referrals to agent1, an investment expert, or agent2, a banking expert. The agent selects agent1, and that agent continues the conversation.]
agent1: What is your net worth and how old are you?
[The conversation is passed back to the user, who continues it.]
user: I'm 67 and my net worth is $300,000.
[The conversation goes back to agent1, the last agent who continued it. The software proposes the following continuations: "You should buy IBM", "You should buy 2 year Treasuries", "You should buy a 5 year target date mutual fund". The agent chooses the last one.]
agent1: You should buy a 5 year target date mutual fund.
The simplified "humanity engine" described in the post resembles "live buyer/seller chat" software and "collaboration" software. In the next blog post, I'll review existing software that may be similar to or relevant to the "humanity engine" idea.
- A user starts a conversation.
- The conversation is passed to a human agent.
- An agent may:
- Create a continuation of the conversation.
- Refer the conversation to another human agent, who may create a continuation of the conversation or refer it to another agent.
- The user continues the conversation.
- The conversation is passed back to the last agent who continued the conversation.
- Go to step 3.
[The user starts a conversation.]
user: Hi, my name is Steve.
[A human agent receives the conversation and continues it.]
agent0: Hi Steve.
[The conversation is passed back to the user, who continues it.]
user: I need to invest $10,000.
[The conversation goes back to agent0, who refers it to agent1, an investment expert. That agent continues the conversation.]
agent1: What is your net worth and how old are you?
[The conversation is passed back to the user, who continues it.]
user: I'm 67 and my net worth is $300,000.
[The conversation goes back to agent1, the last agent who continued it. That agent provides a further continuation.]
agent1: You should buy a 5 year target date mutual fund.
So far we've not specified much in the way of automation. We're just passing the conversation around and continuing it. We need to consider where and how we can begin to add AI features that allow the human agents to respond more efficiently. Enhancements, based on AI parsing and analysis of the conversation, might include:
- Proposing candidate texts for continuations, and allowing the agent to select and possibly edit the candidate texts for continuation.
- Proposing candidate referrals to other agents.
[The user starts a conversation.]
user: Hi, my name is Steve.
[A human agent receives the conversation. Software proposes the following candidate continuations: "Thank you for that information.", "Hi Steve", "I'm glad to hear that". The agent selects the 2nd candidate continuation.]
agent0: Hi Steve.
[The conversation is passed back to the user, who continues it.]
user: I need to invest $10,000.
[The conversation goes back to agent0, and the software proposes candidate referrals to agent1, an investment expert, or agent2, a banking expert. The agent selects agent1, and that agent continues the conversation.]
agent1: What is your net worth and how old are you?
[The conversation is passed back to the user, who continues it.]
user: I'm 67 and my net worth is $300,000.
[The conversation goes back to agent1, the last agent who continued it. The software proposes the following continuations: "You should buy IBM", "You should buy 2 year Treasuries", "You should buy a 5 year target date mutual fund". The agent chooses the last one.]
agent1: You should buy a 5 year target date mutual fund.
The simplified "humanity engine" described in the post resembles "live buyer/seller chat" software and "collaboration" software. In the next blog post, I'll review existing software that may be similar to or relevant to the "humanity engine" idea.
Friday, December 18, 2015
Origins
Artificial intelligence, or AI for short, is about making machines that think.
In his famous paper written in 1950, Alan Turing proposed a test for deciding whether a machine could think. Human subjects would communicate via text messages with two others, one the machine and the other a human. If the human subjects could not reliably tell whether they were communicating with a human or a machine, then the machine could be said to be intelligent.
We're not there yet. Apple's Siri is clever but can't carry anything like a conversation. IBM's Deep Blue program wins at chess and its Watson program wins at Jeopardy, but they can't carry a conversation either.
There are "chatbots" that try to engage in conversations. This one from cleverbot.com is typical:
Me: My name is Steve.
Not so clever.
I started out as a lawyer before switching to software development and for a while in the 90s wrote some articles for a journal devoted to law office automation. I noticed that most lawyers, in those days anyway, were not so tech savvy. It seemed to me that very busy, very expensive, high-powered business lawyers should not be messing around with computers because the machines seemed to be a serious distraction from the real work of lawyering. I imagined a setup in which a lawyer would have only a screen and a microphone connected to a half dozen tech workers parked in front of computer terminals in a sort of "boiler room". The lawyer would speak requests and the techs would find things and put them up on the lawyer's screen.
When the internet came along, I imagined a similar platform for online queries. Early search engines like AltaVista were not as good as Google, but I was obsessive about the web and got pretty good at finding things. I experimented with a web site I created to accept queries that I answered after what were usually multiple tries at AltaVista and paging through hits to find the best ones. This required some automation to quickly select responses from AltaVista and shuttle them over to my web server as replies to my users. I tried to imagine how AI could help with this process, by helping to create good AltaVista queries and sorting AltaVista responses to help me select the best ones more quickly.
I got thinking about all this again when I read that Elon Musk and others had started a non-commercial company to do AI research, called OpenAI. Being non-commercial, though, I wondered what would motivate their efforts towards making real progress. It could easily end up a huge waste of talent and resources.
The new company wants to create AI that is human-friendly; that is, humane. What better way to do that than to keep humans in the loop. What if a software platform were created that interacted with human subjects via a combination of human and machine intelligence? A human respondent would mediate a conversation between a user and the platform but would have myriad communication and AI tools that make the interaction fast and efficient. Subtasks could be launched that would be handled by other humans, perhaps specialists, who would also have fast and effective AI and automation software tools. Such a platform could be useful far beyond what Google provides, or even Siri or Watson. I call this idea "The Humanity Engine".
Over time, the need to increase the productivity of the human components of the system would motivate improvements in the software tools available to the human actors. If some day the human actors could be completely removed from the platform, you would have true machine intelligence, so the project would have the effect of creating a path to a true thinking computer--one, I believe, which would be more likely to be "humane" because it focuses from the beginning on replicating human responses. In the meantime, it would be a highly potent new way for people to work together to solve problems. Because it would be immediately useful, it would serve as a real-world benchmark for AI progress. I can envision the platform being used for investment decisions, medical diagnosis, or even software development itself.
At some point, AI may advance to the level where the engine is capable of initiating queries itself, eliminating even the human user from the process. If we've sufficiently incorporated "humanity" into our process, this needn't worry us, depending on your opinion of humanity, of course.
In this blog, I plan to continue researching and developing the idea of such a platform for responding to queries by means of a near-real-time human-AI collaboration.
In his famous paper written in 1950, Alan Turing proposed a test for deciding whether a machine could think. Human subjects would communicate via text messages with two others, one the machine and the other a human. If the human subjects could not reliably tell whether they were communicating with a human or a machine, then the machine could be said to be intelligent.
We're not there yet. Apple's Siri is clever but can't carry anything like a conversation. IBM's Deep Blue program wins at chess and its Watson program wins at Jeopardy, but they can't carry a conversation either.
There are "chatbots" that try to engage in conversations. This one from cleverbot.com is typical:
Me: My name is Steve.
CleverBot: I did not know your name was Steve! Isn't that funny?
Not so clever.
I started out as a lawyer before switching to software development and for a while in the 90s wrote some articles for a journal devoted to law office automation. I noticed that most lawyers, in those days anyway, were not so tech savvy. It seemed to me that very busy, very expensive, high-powered business lawyers should not be messing around with computers because the machines seemed to be a serious distraction from the real work of lawyering. I imagined a setup in which a lawyer would have only a screen and a microphone connected to a half dozen tech workers parked in front of computer terminals in a sort of "boiler room". The lawyer would speak requests and the techs would find things and put them up on the lawyer's screen.
When the internet came along, I imagined a similar platform for online queries. Early search engines like AltaVista were not as good as Google, but I was obsessive about the web and got pretty good at finding things. I experimented with a web site I created to accept queries that I answered after what were usually multiple tries at AltaVista and paging through hits to find the best ones. This required some automation to quickly select responses from AltaVista and shuttle them over to my web server as replies to my users. I tried to imagine how AI could help with this process, by helping to create good AltaVista queries and sorting AltaVista responses to help me select the best ones more quickly.
I got thinking about all this again when I read that Elon Musk and others had started a non-commercial company to do AI research, called OpenAI. Being non-commercial, though, I wondered what would motivate their efforts towards making real progress. It could easily end up a huge waste of talent and resources.
The new company wants to create AI that is human-friendly; that is, humane. What better way to do that than to keep humans in the loop. What if a software platform were created that interacted with human subjects via a combination of human and machine intelligence? A human respondent would mediate a conversation between a user and the platform but would have myriad communication and AI tools that make the interaction fast and efficient. Subtasks could be launched that would be handled by other humans, perhaps specialists, who would also have fast and effective AI and automation software tools. Such a platform could be useful far beyond what Google provides, or even Siri or Watson. I call this idea "The Humanity Engine".
Over time, the need to increase the productivity of the human components of the system would motivate improvements in the software tools available to the human actors. If some day the human actors could be completely removed from the platform, you would have true machine intelligence, so the project would have the effect of creating a path to a true thinking computer--one, I believe, which would be more likely to be "humane" because it focuses from the beginning on replicating human responses. In the meantime, it would be a highly potent new way for people to work together to solve problems. Because it would be immediately useful, it would serve as a real-world benchmark for AI progress. I can envision the platform being used for investment decisions, medical diagnosis, or even software development itself.
At some point, AI may advance to the level where the engine is capable of initiating queries itself, eliminating even the human user from the process. If we've sufficiently incorporated "humanity" into our process, this needn't worry us, depending on your opinion of humanity, of course.
In this blog, I plan to continue researching and developing the idea of such a platform for responding to queries by means of a near-real-time human-AI collaboration.
Subscribe to:
Posts (Atom)