Cognitive Prosthetics

From ApocryphWiki

Jump to: navigation, search

Some of the work on Metacortex (a naked Charlie Stross reference) pertains to cognitive prosthetics.

Contents

Douglas Engelbart

One of the tangential things I got from reading Dreaming in Code was my discovery of Douglas Engelbart, whose ideas about augmented human intellect predated my work on Cognitive Prosthetics by over 40 years.

Jef Raskin

Jef Raskin was arguably the father of the original Mac. He had some good ideas about user interface. The company run by his son, Humanized, has a Windows launcher tool called Enso which implements some of Raskin's ideas not entirely dis-similar to Launchy or QuickSilver, albeit less developed.

The idiom of the user interface in which users press a key, type a command, and press the key again is nice and simple and could be an effective way to interact with a software cognitive prosthetic.

SuperMemo

The work of P.A. Wozniak on SuperMemo was recently the subject of a widely-read Wired article. Apparently Wozniak has spent the last twenty years fidgeting with an algorithm that predicts the speed with which facts are forgotten, and built software to automate the process of reviewing facts just as they are about to be lost, which is apparently the optimal time to do so.

While I didn't have memorization tools in mind when I wrote about cognitive prosthetics, this is clearly a good example of the concept. Unfortunately, the software itself is profoundly complicated, and the algorithm it uses (currently SM11 is dizzyingly complicated. There are other open-source tools that use an older, simpler version of the same algorithm.

Wozniak also describes a technique for reading articles within SuperMemo called incremental reading, but it strikes me as labor-intensive (you often need to restructure the article into little snippets of information) and still focused on memorizing content, while I'd rather retain my current level of recall and comprehension and boost reading speed.

Scribblings from OneNote

Saturday, April 09, 2005 1:56 PM

Thinking about ways computer technology can form cognitive prostheses; computational tools that amplify human cognitive abilities by combining the strengths of the human mind (abstract thinking, reasoning, extrapolation, association, etc) with the strengths of digital computers (lossless data storage and retrieval, computation).

The futurists and a few cognitive psych PhDs have used the term 'cognitive prosthesis' in a sentence, but there's very little concrete work done.

Concept maps are one example of a cognitive prosthesis, though they are primarily designed to approximate the human learning process, and therefore as a tool to aid learning. Though one could make the somewhat metaphysical argument that all cognition--learning or reasoning--consists of the same activities, and therefore any distinction is illusory. Fortunately, I am not a metaphysician.

I'm trying to grapple with the fact that the complexity of the problems I'm dealing with on ACS+ at the moment exceed the ability of my mind to hold onto and manipulate complex concepts. This is clearly the case for the rest of the team as well, as we continue to make mistakes that we could've avoided using knowledge we already possess.

Many people now use paper and a writing instrument as a cognitive prosthesis (CP). This is a substantial upgrade from centuries ago, but it doesn't scale anymore. Sometimes, writing linear text is the best way to describe a concept. Other times, a UML class diagram, or state chart, or activity diagram, or whatever, conveys a concept best. Still others, mathematical expressions in terms of algebra, calculus, set theory, etc, clearly convey the information.

Having spent the last 6 months keeping a log of the work I do in the form of English narrative, I conclude that English narrative is a shit way to capture such information. The redudancy and inefficiency of the written word is pathetic. However, I cannot point to some single alternative representation and definitively say 'this is better'; different concepts, and different audiences, will benefit from different representations. In general, I suspect multiple representations are better than their constituent component representations.

I think we must abandon the bias of the linear word in our approach to capturing, manipulating, and sharing knowledge, as well as applying it to certain and uncertain objectives.

For example, when a developer on the ACS+ team needs to change a database table, it should not require someone with a year of intensive focus on the contrived replication situation in order to evaulate the implications of the change.

Of course, building webs of knowledge up-front is an absurd and very industrialist approach to the problem. In fact, an iterative, feedback-driven approach is more economical. Just as we write a test, then implement code, then test the code, we can take the same approach with a CP. If the CP fails to produce a correct result, we modify it to correct the deficiency. Just as, over the course of experience, our own mental models become more accurate and capable, so too does unit test code coverage, and so too can a CP's expansiveness.

However, modern knowledge worker problems are very complex, with some components tailor-made for computer analysis (dependency graphs for example), while others require the human mind (assessing the user impact of a defect). Even determining what conceptual model best captures the problem domain is a Hard Problem.

Saturday, April 09, 2005 6:40 PM

The vast majority of information is not structured; a large minority is semi-structured (in an Excel spreadsheet or database table, but still not structured the way a concept map is). That will *never* change.

Could we not use existing text indexing techniques to seed concept maps and other non-linear documents? There are well-established IR algorithms that compute relevance of a term to a document, proximity of one term to another, etc. These could be used to retrieve background information for a concept map.

For example, a map document describing the replication process might reference process_transfer_data and copy_summary_data. A content database containing the latest version of all the SQL scripts, the contents of the CQ database, the requirements docs, install guide, etc, could be queried automatically to provide some sense of where these items are referenced.

As more maps are built and content is navigated, feedback is used to refine relevance measurements so that, with more use, the content database becomes more accurate.

Apart from raw text files, most text content has some structural elements. A Word document in which the author is among the 1% of knowledge workers who know how to use Word and therefore has used styles to describe the structure of the document can be used to determine not only the structure of the document, but which terms are used to describe sections of a document (and are therefore probably more important or relevant). An Excel spreadsheet contains tabular content, usually with column labels that provide some context.

Source code, too, has plenty of structure. Even a rough-hewn parser that can pick out comments from code, function boundaries, arguments, etc, can provide a wealth of information for a content database.

Other items are more structured still. A GTD-esque list of projects and action items, or an Outlook Task list and Calendar.

Humans have powerful spatial reasoning facilities; an interactive graph on a high-resolution display can take advantage of these facilities to accellerate cognition.

Saturday, April 09, 2005 7:05 PM

Different organizational schemes make sense to different people. Being left-brained, I like orderly structures like hierarchy. Unfortunately, information is not hierarchical. However, we can build projections of information onto any structure we desire.

It would be necessary, for example, to list all todo items in one place, organized by category or due date. Similarly for calendar items.

There seems to be a distinction between capturing information and using it for cognition. For example, to evaluate the implications of a change to a piece of functionality, I would need to query the content database, manipulate it, explore and refine relationships, etc, however I would not necessarily be adding anything to the database (except for the content feedback process)

Similarly, I'd like to have tools for performing abstract thinking in terms of set theory, risk management, etc.

Tuesday, April 12, 2005 2:47 PM

Types of information:

  • Textual notes
  • Quick dumps of images, text, tables, etc for scratch pad use
  • Simple mathematical calculations
  • Description of an object model (ala UML class diagram)
  • Concept map
  • Process (ala flow chart, sequence diagram)
  • Some other structured data (a CQ defect, a block of code, an RSS feed, an instant message)
  • Links between the various types, above.
Personal tools