A K-Line-Based Language for Artificial Intelligence ProgrammingRobert A. HearnWhatMinsky's book The Society of Mind [1] offers a set of powerful insights on how one might go about constructing an artificial mind. To put these ideas into practice, there are several engineering challenges that must be overcome. Chief among these is designing an explicit memory architecture that adequately supports the concept of K-line. I am designing and implementing a programming language based on K-lines. The language is declarative, specifying something akin to a connectionist network, which is then simulated. WhyArtificial intelligence (AI) has been an active area of research for nearly fifty years, yet the original goal - computational human-level intelligence - seems as far off as ever. To a large degree the size of the problem was initially underestimated, but over the past couple of decades the focus of AI research has shifted away from attempting to understand and build truly intelligent systems. Yet, I maintain that the keys are there, if one knows how to find and use them. The Society of Mind lays out a grand vision of human cognitive architecture. It is the inspiration for the programming language I am designing for building intelligent systems. Of course almost any program may be written in almost any language, but a suitable language significantly simplifies and better directs the programming task. The key issue is what is implicit vs. explicit in a language. In the K-line-based language I propose, massive concurrency and appropriate memory models are implicit, but many ordinary computer science concepts (e.g. recursion, arithmetic operations) are not. HowThe programming language allows specification of behaviors in terms of basic K-line relationships and operations. The result is a connectionist-style unit network, which is then simulated by the cognitive simulator. The programming language is declarative; programs written in it simply define the initial network state. The memory operations that occur as the network runs are controlled by the structure of the network itself. Over time, the network can structurally change, as new memories are formed and working memory states change. In essence the programs are self-modifying. There is no distinction between program and data. ProgressA first-pass language has been implemented. A parser translates K-line programs into an internal unit network, which is simulated and used to control the behaviors of a simulated creature in a two-dimensional world (inspired by A. K. Dewdney's book The Planiverse [2]). There is a graphical browser showing the runtime state of the network, allowing the user to hierarchically browse the connections and activation states. The current creature programs define basic behaviors such as walking and simple postural controls. These behaviors are not mere abstractions, but are executed with realistic (two-dimensional) physics - objects bounce, slide, and deform. An earlier, related project [3] simulated creatures with some more interesting behaviors (navigation, hunting, rudimentary problem solving), implemented using many of the core ideas from Society of Mind. However, that project was ultimately limited by the simple nature of the simulated world, and also by the lack of an explicit K-line programming language - thus, the new language and the more sophisticated physics and creature anatomy used for the current project. FutureFuture creature behaviors to be implemented using the language include object manipulation, navigation, an emotional architecture, social behaviors, and problem solving. These behaviors will require elaborating the short-term memory model currently provided by the K-line language. References[1] Marvin Minsky. The Society of Mind, Simon and Schuster, 1986. [2] A. K. Dewdney. The Planiverse: Computer Contact with a Two-Dimensional World, Simon and Schuster, 1984. [3] Robert A. Hearn. Building Grounded Abstractions for Artificial Intelligence Programming. Master's thesis, Massachusetts Institute of Technology, May 2001. |
||
|