|
25 Years of Programming
An open source source for C, C++, OWL, BASIC, MDB, XLS, DOT, and more... |
Home Projects Up Sitemap Search Blog Forum+Chat About Us Privacy Terms of Use Feedback FAQ Images Services Payments Humor Music |
|
Intro Learning Patterns Real Life Genetics Classifiers Biology Neural Nets Connectionism Life AI Essays on Complex Systems Part 2 - Patterns and Pattern RecognitionLearning as Pattern Recognition and Pattern Recognition as Data FilteringPattern recognition is the most fundamental mental process, and probably is therefore the most basic instinctive drive, because abstracting pattern data from the environment is required for any organism to function at all. Pattern recognition is the ability to filter a noisy signal. Raw sensory data has no cohesion or utility. It's just a collection of points. A raw signal is filtered when it has produced a coherent signal that does have utility. The resulting signal doesn't need to have any resemblance to the original signal; it only needs to have resulted from its presence. What part of the signal constitutes noise and what part is useful depend on the circumstances at the time, and so does the method used for filtering. (Reflexes the most primitive, and highest priority, filtering method? -- Implies an "interrupt-driven" type system. Also, several filters may be operating at once on the same signal - parallel processing (each filter "tuned" to a different aspect of the signal -- see diagram in "Neural Nets" paper file) - all generating interrupts as their outputs; highest priority receives the attention: "classifier" bidding system.) (Unrelated to this particular discussion, also consider conditioned responses. Their existence may predispose to a mindset quick to recognize or consider causation.) The instinct to recognize patterns and infer causation probably accounts for the universal existence of superstitions. It may be that you don't learn about causation. It is an instinct. The lack of causation may be the thing one must learn over time. An intelligent system also should be continuously filtering. At any given moment, its outputs are those consistent with the current best guess as to what the presenting situation is. As the situation is more clear, the responses become more refined. E.g., seeing someone from far away who you think might be someone you know. Your responses will change as you get nearer and it becomes more clear whether that's the person or not. All the filtering and processing boils down to one thing: the one resultant action out of all possible actions. That is, the system as a whole acts as a giant filter, turning the raw data into a single action. The giant filter consists of many smaller filters. The process of filtering seems related to that of setting up a figure/ground relationship, so related principles and ideas might be useful. The stimulus strings in a classifier system are filters, and demonstrate the essence of what filtering has to do. Each rule states "If such and such is the situation, then this would be a good thing to do." It functions as a filter because it only becomes activated when the input data contains a certain pattern.
Look for patterns in what media? (Any data stream.)
Basic Pattern Types (Godel Escher Bach:p344 has interesting related discussion): (These should be as general as possible, applicable to any data stream. Make a spreadsheet with the above media types on one axis, the below pattern types on the other, and in the slots examples of their occurrences or description of what it is that forms the patterns. Also for the pattern types develop pattern templates that an AI system might use to recognize each pattern. E.g. "Alternating" = "01010101". The goal is to develop a routine for each type of data stream that can summarize it with this same kind of basic representation, so it can be compared with these generic templates. This seems to me to be one of the most basic and most important types of processing that our senses are always doing, and should be a high priority. All incoming data streams are initially reduced to these basic representations and scanned for recognized patterns. If a pattern is discerned that is currently of high utility, we pay more attention to that data stream. Minor note: Our attention may also be attracted if the data stream is particularly novel, that is, if our pattern matching failed particularly badly on it. Also, part of the learning process might be described as a process of building more complex pattern matching systems. That is, you start with these most basic pattern types, then for a particular subject, or in a particular context, or whatever, you become sensitive to increasingly more complex variations of the basic types, so that the pattern matching apparatus in that particular area becomes more intricate and developed. As an example, for a foreign language (or even first language), at first you may do well to recognize the sounds of individual letters, so your pattern matching is very crude. After a while, you become sensitive to whole words -- that is, you recognize and process them without having to break them down into their component sounds. As an analogy, instead of "letter-watching" robots monitoring the data stream and each raising a flag when the letter it's watching for is encountered, there are now a larger number of more highly specialized "word-watching" robots that do the same thing, and which make the letter-watching robots obsolete. Later, you become sensitive to entire phrases. This process is the same as that of "chunking".)
Instead of trying to have one pattern-recognizing system recognize all possible patterns, you should have specialized subsystems, each trained on only one pattern. That way, the same data run through all the networks might generate multiple match messages. [From a PBS show: Categorizing, organizing, and manipulating data to facilitate the identification of patterns in it is called "data mining", popularized by IBM in a series of ads. By now, probably a fully formed branch of mathematics. Should be particularly useful in that it automates some stages of scientific/statistical inquiry. Raw data is everywhere. The scientist's problem is identifying "what's there that's worth looking at; what clues are there to avenues that might lead to useful analyses?" Related to my idea for a statistical calculator to evolve relevant equations (see stats.doc).] Create various pattern-recognizing neurons as described in GEB. For "on/off-center" neurons, each will have to monitor an area of 9 pixels. Then their outputs will have to be sent to "complex" cells (or small networks). Study carefully the patterns on p.345, and what the activity levels would be of on/off-center neurons focused on them. E.g. the half-field split light/dark would produce large areas of no activity (no contrast to report), but along the split there would be great activity, and the distribution of that activity would be picked up by the next stage of processing (?). Some initial layers will have to be carefully wired: At the first level there must be 1 neuron per pixel. Otherwise there's no way to get the pixel data in. But beyond that level, you can create specialized "complex" neurons by how you wire their inputs. On/off center neurons would have 9 inputs (the center and surrounding areas). Other neurons might receive input from all the pixels (whole screen), or half (half screen). Some of these neurons, additionally, may not be the standard "Node" structs (in Neural.cpp), but will have to be highly specialized to do their computations. Remember that the fields covered by neurons can overlap. You don't have to exactly tile the field with them. Start out with 1-dimensional linear patterns: lines, dashed or dotted lines, etc.
An important problem for filters is that often the raw data isn't sufficient for particular purposes. You may need to preprocess it first, so that the filter operates on data derived from the raw data. For that you need operators, and for operators to work, they must know what kind of data is there (that is, what kind of transformations make sense to perform). The ideal situation would be to have your pattern types stored in the most generic possible form. Then incoming data would be transformed in whatever appropriate way is required to make it able to match the patterns you are on the lookout for. (It is reasonable to expect that you must have transformation methods for every data type your program handles, just as people have unique data-handling methods -- entire brain areas -- for managing each type of sensory input, visual, auditory, etc.) In a classifier system, the stimulus strings are the filters, and are genetically mixed, so you do have the ability to create new ones.
Applicability of Perl regular expressions1-21-2010 A method of abstracting data that would allow using Perl regular expressions to identify patterns in it.
----------
|
|
|
|
|
|
Copyright ©2010 Steven Whitney. Last modified Thu 10/21/2010 02:08:01 -0700. |
||