Douglas Adams once said, “We are stuck with technology when what we really want is just stuff that works.” It’s true. We can throw around all kinds of new terms and technologies, but people just want solutions they can rely on.
However, for data guys like me, we like to know that it works, but we want to know how it works too – and how it can help our businesses. I want to survey some of the most applicable techniques from the history of artificial intelligence (AI) and discuss some of the ways those techniques could be profitably used by software companies to improve business.
Early approaches to AI focused on the automated manipulation of symbolic information by formal logic. The early goal of AI research was to create artificial general intelligence; that is, rather than recreating specific kinds of intelligence limited to narrow functions or domains, the idea was to reproduce the sort of intelligence we humans like to think we possess: the ability to perceive, reason about, and adapt to a wide variety of stimuli from the real world.
This goal gave rise to what we refer to nowadays as expert systems: systems that encode knowledge in some domain of interest as a catalog of facts and use some predefined rules of logical inference to automatically derive new facts from accepted premises. For instance, our catalog of facts may include both “Socrates is a man” and “man is mortal.” If we attach to this catalog of facts the rule of logical inference modus ponens (if X is a true statement and X being true implies Y must be true, we can safely deduce Y must be true), we can program a computer system to answer the question “Is Socrates mortal?” The basic idea is that the user of the system would encode this question in a way the system understands and the system would then begin searching the web of facts in its catalog for a logical deduction that answers the question.
In our case, the system may first look for all statements regarding Socrates, in which case it could find the fact “Socrates is a man.” The system could then continue looking for any facts about “man” and may find the fact “man is mortal.” At this point, the system could recognize that the sub-catalog of facts “Socrates is a man” and “man is mortal,” along with modus ponens, can be used to answer the question in the affirmative. By creating a sufficiently large catalog of facts and admitting a sufficiently flexible set of rules of deduction and inference expert systems could theoretically solve all the kinds of problems humans solve. Moreover, because the catalog of facts is represented symbolically in a way humans have defined, the facts the system can deduce or infer are recognizable to us, even if the relationship between them was previously unclear.
Expert systems have lots of useful commercial applications. For companies that provide business-to-business services (B2B) to clients, there is an opportunity to reduce the customer support burden by providing a system for resolving commonly encountered issues that may have otherwise required speaking to a person. For instance, imagine a catalog of facts that encodes a software provider’s business knowledge of how the automated clearing house (ACH) system works in its software for scheduling, sending, returning, and clearing bank payments. The facts may include statements like, “the ACH tools page can be accessed from the top navigation menu under the tools heading,” “the sent ACH grid can be accessed from the ACH tools page,” and “sent ACHs can be manually returned from the sent ACH grid,” which help give users better direction on how to navigate the software.
A competing approach to developing artificially intelligent systems that gained traction in the early 1980s sought to overcome some of the limitations inherent to purely symbolic AI by embodying the computer system in a way that places it in a definite real-world environment. Rather than merely encoding a fixed set of facts we can write down in the catalog, the system is given access to sensors that provide constant streams of new information that the system can use to react and adapt to its environment. For example, imagine a robot equipped with pressure sensors. By moving around its environment and recording data from its sensors, it can detect when it’s encountering obstacles. By adding this stream of knowledge to its catalog – like a map – the robot can learn the arrangement of obstacles in its environment. With that knowledge, and by keeping track of its current position inside the environment it has explored, the robot can start to plan: What parts of the environment remain unexplored? What’s a good way to get from my current position to some other location in my environment? What’s the best way to get there?
The same basic idea – creating software that is situated in an environment and that learns to react to stimuli from those environments – is very much applicable for businesses. If you take the client’s browser to be a virtual environment and consider the stream of user-interface actions (button clicks, scrolls, navigation, etc.) and server responses (time to respond, error codes, etc.) to be the stimuli, then the ideas from behavior-based and nouvelle AI have applications in improving the end-user experience – anticipating or responding to users’ actions and taking appropriate responses (suggesting actions the user is likely to want to perform, pre-loading what is likely to be the next required dataset, etc.)
In my next article, I will move on to more recent techniques in AI, including evolutionary computation, support vector machines, decision trees and neural networks, and some of the problems these techniques can help solve. These are of particular interest to software companies since, as we will see, they can leverage the huge amounts of user-generated data created. Stay tuned!