A prototype in microPSI is a graph, through which activation can spread. The graph is a KBANN-network, which basically means that it is a network of threshold units which emulate logic functions. As a new object is perceived by the agent it activates the corresponding sensors. These sensors spread activation through the prototype networks, and the root nodes that get activated represent concepts to which the the object presumably belongs. When the object is misclassified, the prototype of the correct category has to be adapted in such a way, that the its root node gets activated when the example is seen the next time. Using learning algorithms such as backpropagation it can be learnt what connections have to be activated by an example in order to activate certain nodes in the prototype tree. The advantage of this approach is that a category can be found by spreading activation in parallel through all prototypes. This is a lot faster than doing a structure comparison. This is only done whenever the correct category could not be found.
In order to implement this, a couple of things still have to be done
- Implement the structure adaption as described in Prototype
- Implement an efficient learning algorithm to tune the weights after a prototype has been changed
- Implementation details and efficiency concerns
A description of a sub-project follows
Projekt 1 (Neuronales Lernen mit KBANN)
Beschreibung:
Bei der Kategorisierung in MicroPSI geht es darum, Objekte anhand von in der Vergangenheit gelernter Prototypen in Klassen einzuteilen. Dabei wird die Struktur des Objekts mit denen der Prototypen verglichen und der aehnlichtste Prototyp (bestehend aus einem oder mehreren KBANN-Netzen) gewaehlt. Danach wird die Struktur des gewaehlte Prototyp um die charakteristischen Merkmale des neuen Beispiels erweitert. Um die vorherigen Beispiele der Klasse trotzdem korrekt zu erkennen muss nun der neu entstandene Prototyp gelernt werden. Durch das Lernen werden die Verbindungen des Prototyps neu gewichtet, was auch die Erkennung weiterer Strukturen hilft. In dem Projekt soll ein Native Module implementiert werden, das das ueberwachte Lernen eines allgemeinen KBANN-Netzes anhand von konkreten Instanzen ermoeglicht.
Anforderungen:
- Aufarbeitung der Literatur zu KBANN, speziell Lernalgorithmen (Backpropagation und Varianten...)
- Gute Integration in das uebergeordnete System (haeufige Absprache mit mir vor Designentscheidungen)
- Effiziente Implementierung
- Benchmarking