
An application that uses a thesaurus and genetics algorithms in service of finding very sad sentences.
The aim of this project is to try to begin to teach a machine to exhibit/simulate emotion, in at least some senses of some of the preceding words. I can't claim to have furthered the field of artificial intelligence in any way. Ultimately the project examines how a machine could tamper with meaning, and how we might condition that machine to "tamper" in an emotionally compelling way.
Some Context: Turing Test, E-motions
Mitch Kapor contends that no machine will have passed the Turing Test by 2029, and Raymond Kurzweil disagrees.
Mitch Kapor:
The brain's actual architecture and the intimacy of its interaction, for instance, with the endocrine system, which controls the flow of hormones, and so regulates emotion (which in turn has an extremely important role in regulating cognition) is still virtually unknown. In other words, we really don't know whether in the end, it's all about the bits and just the bits.
Raymond Kurzweil:
It is my view that understanding and responding appropriately to human emotion is indeed the most complex thing that we do [...] it is precisely the heart of the Turing challenge. Although human emotional intelligence is complex, it nonetheless remains a capability of the human brain, with our endocrine system adding only a small measure of additional complexity (and operating at a relatively low bandwidth).
Both challengers seem to acknowledge that programming a machine to exhibit or simulate human emotion is the most difficult task involved in passing the Turing Test. Ultimately their arguments boil down to a question of Materialism. Kurzweil is arguing that the physical constituents of our mind (our brain matter, the wiring of our neurons, the chemicals in our endocrine system) are solely responsible for producing consciousness. Kapor does not take this for granted.
High-performance emotion, Incalculable sadness
The aim of this project is to try to begin to teach a machine to feel, in at least some senses of some of these words. For the purposes of this project, the scope of "feelings" will be limited to those that are sad.
A machine acquires a true grasp of human emotion. That machine is self-improving. Neither of these things actually happened during the course of the study, but one could imagine that, if they had, then that machine would be capable of stirring a human being's emotions in a very compelling way. Then eventually in a very, very compelling way. Then eventually in a very, very, very compelling way times infinity. This is the premise that inspired the project.
If our prompt has to do with teaching young humans how to train simple robots, I think of this project as teaching a "young" robot to be human. I say "young" because the program has no knowledge of any lexical constructs such as syntax or agreement. It "knows" only the relationships between the meanings of words. It manipulates structure at will.
Genetics Algorithms
Each program in the study takes the form of a genetics simulation. A genetic algorithm "is a search technique used in computing to find exact or approximate solutions to optimization and search problems." Taking cues from evolutionary biology, unfit solutions "die" (are removed from the simulation) while those who meet a certain fitness criteria (in our case, sad or not sad) move onto the next generation in some altered form (either through mutation or cross-breeding).
This is my attempt at simulating "self-improvement." The hope is that, as generations progress, sentences evolve and become progressively better at what they do (inspire sadness) ... much as all life did, if you believe in that sorta thing.
Prototypes
Download Prototype 1 » I began by examining the concept of context-free grammar. Software evaluates grammar files in order to generate random sentences from a specific template. In this prototype, "mutations" are random modifications to that template. A user selects the saddest sentence from a group of mutations. The machine remembers these choices and begins to favor certain paths of mutation. Uses RiTa.WordNet.
Prototype 2 will not compile. » Introduces functionality for reproduction. Uses abstract classes to ... abstract the process of mutation and reproduction. Custom Mutation and Reproduction objects contain directions for altering sentences.
Prototype 3 » At this point I felt participation was too passive. This prototype is a proof for a "breeding" applet, in which the user chooses which sentences to mutate and combine. Force-directed layout displays sentence lineage. Uses traer.physics.
Instructions, "Heritage" Applet
Camera: Zoom with mouse wheel, drag canvas to pan.
Seeding: Double click canvas, begin typing.
The machine "overhears" sentences. A "heritage" begins with X sentences of one's choosing. Sentences can be added at will throughout the simulation.
Mutation: Click a sentence.
Reproduction: Drag sentences together.
The program contains a list of Mutation and Reproduction objects which contain rules for augmenting or combining sentences. They are chosen randomly on a case by case basis according to a given "weight" or probability.
Selection: Right click to delete. Backspace removes most recently added sentence.
All sentences are technically immortal. Its up to the user to define what genetics programmers call the "fitness function." The user "kills" sentences that are not compelling, or have no potential to breed compelling children. Sentences only die when users kill them. The program demotes mutations and reproductions that produced nodes the user has killed.
"It may never stop hurting." → "may It never stop hurting."
"Life is a meaningless void." → "Life is a meaningful void." → "Life is somehow a meaningful void."