Cognitive Programming

The widespread access to computing-enabled devices and the World Wide Web has, in a sense, liberated the ordinary user from reliance on technically-savvy experts. To complete this emancipation, a new way of interacting with, and controlling the behavior of, computing-enabled devices is needed. This position paper argues for the adoption of cognitive programming as the paradigm for this user-machine interaction, whereby the machine is no longer viewed as a tool at the disposal of the user, but as an assistant capable of being supervised and guided by the user in a natural and continual manner, and able to acquire and employ common sense to help the user in the completion of everyday tasks. We argue that despite the many challenges that the proposed paradigm presents, recent advances in several key areas of Artificial Intelligence, along with lessons learned from work in Psychology, give reasons for optimism. 1 An Emerging Need and The Overall Challenge Today’s huge market pressure for the use of smart systems by everyone and in every aspect of their daily life is forcing Artificial Intelligence (AI) to stand up and deliver. What was perhaps thought out of reach in the past needs to become a reality to satisfy the ever increasing desire of humans to use their new machines — computer devices linked with the Internet — in their everyday activities. Unlike anything we have seen to date, this new vision of user-machine interaction will allow ordinary users without technical background to instruct or program their devices in a natural and personalized manner, and will allow the devices to assist (and enhance the abilities of) their users in dealing with everyday tasks. This symbiotic relation splits the burden of communication among the user and the device, offering a “programming paradigm for the masses”, avoiding the extremes of using natural languages that are too complex for ordinary devices, or programming languages that are too complex for ordinary users. Early examples of such interactions already exist, ranging from the personal assistant softwares provided by major smart-device manufacturers, to the (expected) applications for expert analysis of problems in specialized domains built on top of the Watson engine. But perhaps the clearest example of this emerging form of interaction, which we shall call cognitive programming, is that of searching for information on the World Wide Web. The use of web search engines constitutes a form of programming exercised by billions, independently of technical ability, through a programming language of keywords in natural language, in a manner compatible with the cognitive abilities of humans. Through their searches, users gradually develop a sense of how to improve the way they program or instruct the search engine with queries that achieve the users’ intended aim. On the other side, search engines capture the preferences or typical behaviors of users, to help propose search queries or choose how to rank results. We will refer to systems interacting with users through cognitive programming as cognitive systems, as these systems are, in spirit at least, of the same kind as the cognitive systems proposed relatively recently in several works in AI; see, for example, the new journal of Advances in Cognitive Systems, the journal of Cognitive Systems Research, and works such as [26–28, 50]. Unlike work in existing autonomous agents / systems, we think of a cognitive system as having an operational behavior similar or parallel with that of a human personal assistant. Its domain of application is limited to certain common everyday tasks, and its operation revolves around its interaction with its user in a manner that is compatible with the cognitive reasoning capabilities of the latter. To understand (and correct when needed) the reasoning process of the system, the user expects the system to use common sense to fill-in important relevant information that the user leaves unspecified, and to be able to keep learning about the domain and the user’s personal preferences through their interaction. The goal for building systems that are cognitively compatible with humans ultimately imposes a set of considerations on cognitive programming, as this determines the communication channel between the user and the system. The overall challenge of developing the proposed paradigm of cognitive programming ultimately rests on fleshing out and addressing these considerations: – Cognitive programming should be a process akin to human-human communication. The need for detailed operational instructions should be minimized. – There should be a level of interaction between the user and the system where the two understand and can anticipate the behavior of each other. – Cognitive compatibility with the user should be accommodated by acknowledging the central role that natural language has in human communication, and in the way humans store, retrieve, and use commonsense knowledge. – Cognitive programs should develop incrementally to meet the aims of the user through an open-ended process. Cognitive systems should be able to learn, and be able to improve from their past interaction with the user. – Cognitive programs should be robust, never failing, but continuously improving / completing their ability to offer personalized solutions to the user, while adapting to a possibly new or changing user position, stance, or profile. The emphasis of this position paper is on describing the desirable characteristics and the technical challenges resulting from the aforementioned considerations. It examines the salient and foundational issues that need to be considered, and offers possible suggestions for a first version of a cognitive programming language. This proposal is grounded in our recent experience of trying to automate the cognitive task of story comprehension, and on the comparison of the resulting psychologically-informed approach with earlier work in AI for addressing other types of scientifically-oriented problems, such as problems of diagnosis and planning that span beyond the ordinary capabilities of human intelligence. 1.1 Scientific Position for Cognitive Programming The scientific position underlying our approach and proposal for cognitive programming is that symbolic AI can offer the tools needed for the aforementioned considerations, as long as one abandons the traditional view of the role of logic for reasoning, and one is strongly guided by work in Cognitive Psychology. To a certain extent, then, this position takes us back to the early days of AI. We embrace McDermott’s view in his paper “A critique of pure reason” [31], that developing a logical theory alone — even a non-monotonic one — without consideration of the reasoning process can not lead to human commonsense intelligence. A vast amount of empirical work from Psychology (see, e.g., [12]) shows that commonsense inferencing has a looser form than that of scientific reasoning, and that the conventional structure and form of logical reasoning, as epitomized by mathematical or classical logic, is not appropriate. Given strong evidence from recent work in Psychology (see, e.g., [33]) in support of an argumentationbased theory for human reasoning, we adopt a form of argumentation as the basis for a cognitive system’s reasoning process. Drawing from work in Cognitive Psychology (see, e.g., [13, 21, 23, 44]) on how human knowledge is (or might be) structured and used, we base our approach on the cognitive process of comprehension, within which logical inference is only one component. Although work in logic-based AI may accept, to a certain extent, the need to deviate from strict logical reasoning (e.g., non-monotonicity, belief revision, logic programming), efforts to automate reasoning still typically proceed on the basis of developing proof procedures that are sound and complete against some underlying semantics of “ideal inferences”. Unlike such work, on which cognitive programming may be based and from which it may be guided, cognitive programming shifts the emphasis from deep and elaborated reasoning to richly structured knowledge, assuming that commonsense intelligence resides in the “complexity of knowledge representation” rather than the “complexity of thought”. As in many cases of Computer Science, data structures and data organizations matter and can make all the difference in having an effective and viable solution. 2 Computational Model and System Architecture The central notion underlying the computation of a cognitive system is that of comprehension, a notion adopted from story or narrative text comprehension in Cognitive Psychology (see, e.g., [22]). In our setting, comprehension proceeds 5 The system STAR: Story Comprehension through Argumentation, along with benchmark stories and other material, is available at: http://cognition.ouc. ac.cy/narrative/ Personal Profile Information Commonsense Knowledge Libraries Narrative Preparation Knowledge Retrieval Input Language Pre‐processing Response Comprehension Model Construction Response Generation User Query Fig. 1. General Architecture of a Cognitive System by first combining the explicit input given by the user with information that is available in the user’s profile (i.e., personal facts), forming an input narrative of the task at hand. This narrative is then synthesized with information that the system has about the domain (i.e., commonsense knowledge) and its user (i.e., personal preferences), leading to the construction of a comprehension model. A comprehension model is an elaboration of the input narrative with new information, or inferences, capturing the (or a possible) implicit meaning or intention of the narrative. Critically, the comprehension model is coherent, and includes only inferences that are important for successful understanding, while omitting cluttering details and speculations. If, for example, a user enquires for “private celebration of wedding anniversary”,