| Home | Table of Contents |

General Intelligence :

Pattern recognition

  1. Requirements
  2. An example: "fighting"
  3. General form of production rules
  4. Instance-based and rule-based categorization
  5. The symbol grounding problem

Requirements

  1. Pattern matching / recognition
    — patterns are defined by production rules, stored in a rule base
    — be able to deal with a huge number of rules
    — look for patterns from the facts currently in Working Memory
    — recognize multiple objects (pattern) sequentially within Working Memory
    — recognize relations between objects
    — gradually build up complex representation of scenes
  2. Attention
    — search within a given region of interest (ROI)
    — search for a particular class of patterns, eg Food(x)
  3. Saliency
    — automatically determining what features / events are of special interest (thus affecting how much details to provide as the output of pattern recognition)
    — bottom-up saliency is provided by the Pattern Recognizer
    — top-down saliency is provided by the Emoter
  4. Gestalt detection
    — will be added later...
  5. "Feedback"
    — an incompletely recognized pattern may suggest certain features that are missing, so as to increase their detection sensitivities (ie lower detection threshold)

An example: "fighting"

John hits Mary.
Mary slaps John.
John punches Mary.
Mary kicks John.
etc etc...

The goal is to recognize: John and Mary are fighting.

So we have the following facts in working memory:

hit(john,mary,t1)
slap(mary,john,t2)
punch(john,mary,t3)
kick(mary,john,t4)

etc etc...

The recognition of "fight" will create an abstract individual (see reification) equivalent to fight(x,y):

isa_Fight(fight1)
with(fight1,x)
with(fight1,y)

(we can also use typed logic and say exists fight1:fight).

The recognizer should add the fact fight(john,mary) to the Working Memory, but this is not the whole story. The special thing about pattern recognition (as opposed to inference) is that we need to collect (ie, exhaustively search for) all the constituents of a pattern. For example, the fighting of John and Mary, as a pattern, consists of John hitting Mary at t1, Mary slapping John at t2, etc. We refer to "punch", "slap", etc as "hurt". So these additional facts will be added to Working Memory:

fight(fight1)
isConstituent(fight1,hurt1)
isConstituent(fight1,hurt2)

etc...

The rule for recognizing fight() works via recognizing what could be the constituents of fight1:

isConstituent(Fight,H1) :- isa_Hurt(H1) ^ from(H1,X) ^ to(H1,Y) ^ isConstituent(Fight,H2) ^ isa_Hurt(H2) ^ from(H2,Y) ^ to(H2,X)

which literally means that hurt(X,Y) is a constituent of Fight if hurt(Y,X) is also. This definition is recursive, but the recursion can be resolved in 1 step, and is actually the fastest way to recognize the conjunction of hurt(X,Y) and hurt(Y,X).

Note that the act of "hurting" is reified as h1 and h2 (see reification). Also, there should be a rule stating that "hurting" includes "punching", "slapping", etc; see the explanation for hurt() in the symbol grounding section.


General form of production rules

A production rule consists of a head and a body. The body may be separate from the head and it specifies how constituents are recognized by the pattern. The is is slightly more complex than the single-line production rules of common expert systems.

The head

Recall that in predicate logic, there are 3 types of entities: objects, properties, and relations. Each of these may be the head of a pattern:

  1. Recognize an object.
    Creation of a new individual of type T, that has a number of constituents yi.
    See the pineapple example.
  2. Recognize a property of x, P(x,v), where v is the numerical value of the property.
    v is obtained by analysing the constituents yi, for example via integration (summing).
    See the vision: lines [not yet ready] example.
  3. Recognize the relation R(x,y) between 2 objects.
    Fight(x,y) is an example.

The body

It seems that Horn clauses are sufficient to define the IsConstituent() clauses. An important task is to estimate how efficient pattern recognition will be under the class of Horn clauses.

Probabilistic truth values

{ To do: there should be methods to derive fuzzy / probabilistic truth values associated with production rules. }


Instance-based and rule-based categorization

People may doubt if all concepts can be defined with relatively simple logic formulas. The problem of representing all kinds of concepts is a long-standing problem in cognitive psychology known as categorization, with 2 contending views known as the similarity-based and explanation-based.

In the similarity-based / instance-based view the elements of a category (such as "bottles" or "faces") are related to each other due to similarities that perhaps can be measured by some distance matrics in some conceptual space. In the explanation-based / rule-based view categorization is based on systematic rules (eg "all faces have exactly 2 eyes").

Michalski's 2-tier approach

Our approach is similar to the 2-tier theory proposed by [Michalski 1989] in which concepts consist of both "base concept representation" (instances) and "inferential concept interpretation" (rules).

Firstly, a concept is represented by a number of typical instances. For example, to "hurt" someone includes:

Hurt(x,y) :- Hit(x,y) | Slap(x,y) | Punch(x,y) | Stab(x,y) | Kick(x,y) | etc...

But a concept cannot be defined by exhaustively enumerating all its instances, so the definition has to be complemented by an explanatory rule. For example, a novel way of hurting someone may be to use banana skin to cause someone to slip and fall. So we need a rule like "to hurt y means to do something that causes damage to y".

The 2-tier approach may seem to be eclectic and redundant, but in fact is necessary. The purely instance-based approach cannot deal with instances that are novel or drastically deviant from the norm; The purely rule-based approach is unfeasible because it will result in a web of circular definitions (eg to hurt is to cause harm, to harm means to damage, to damage means to hurt, etc).


The symbol-grounding problem

It is not necessary for all high-level concepts to be defined directly down to lowest-level features, but at least some concepts must be defined this way, otherwise the set of high-level concepts would be totally disconnected from perceptual grounding, resulting in a "floating" web of circular definitions.

The 2-tier approach in the last section is a solution to the symbol-grounding problem because it provides a redundancy of definitions, some concrete (ie, grounded by perception) and some abstract (ie, defined using other high-level concepts).

For example, we have a list of concrete ways to "hurt" someone:

Hurt(x,y) :- Hit(x,y) | Slap(x,y) | Punch(x,y) | Stab(x,y) | Kick(x,y) | etc...

And we also have an abstract rule like "if x causes z to happen, and z damages y":

Hurt(x,y) :- Cause(x,z) ^ Damage(z,y)

Then we can hope to infer something like "John causes Mary to slip and fall, and falling damages Mary's butt" because, again, other abstract terms like Damage() may have perceptual grounding. In short, perceptual grounding needs only be partial.




You may provide some instant feedback with this form:

Name:
Comment / suggestion / question:


Reference

[Michalski 1989] Two-tiered concept meaning, inferential matching, and conceptual cohesiveness. In Vosniadou & Ortony eds, Similarity and analogical reasoning, p122-145. Cambridge University Press, New York.

| Home | Table of Contents |

19/Sep/2006 (C) GIRG [ Notice about intellectual property on this page ]