Inhalt

3. Konnektionismus

Konnektionismus ist ein Fachbegriff für eine Gruppe miteinander verbundender Techniken. Diese Techniken decken solche Felder wie Künstliche Neurale Netze, Semantische Netze und andere ähnliche Gebilde ab. Mein derzeitiges Hauptaugenmerk liegt auf den neuralen Netzen (trotzdem suche ich natürlich auch nach Ressourcen zu den anderen Techniken). Neurale Netze sind Programme, die die Arbeitsweise des Gehirns nachbilden. Sie bestehen aus einem Netzwerk kleiner Mathematik-basierter Knoten, die zusammenwirken, um Informationsmuster zu bilden. Solche Netze haben ein riesiges Potential und scheinen zur Zeit großen Erfolg bei der Bildverarbeitung und der Robotersteuerung zu haben.

3.1 Konnektionistische Klassen-/Codebibliotheken

Das sind Code-Bibliotheken oder Klassen zur Nutzung in der Programmierung innerhalb des Bereiches des Konnektionismus. Sie sind nicht als eigenständige Anwendungen gedacht, sondern eher als Werkzeug zur Erstellung eigener Anwendungen.

ANSI-C Neural Networks

Diese Seite beinhaltet ANSI-C-Quellcode für acht Typen neuraler Netze:

Sie wurden entwickelt, um bei der Umsetzung eines Teilnetzwerkmodells in den Enwurf einer Simulator-Implementierung zu helfen. Weiterhin sollen sie auch bei der Einbindung einer aktuellen Anwendung in ein Teilnetzwerkmodell helfen.

Software for Flexible Bayesian Modeling

Diese Software implementiert flexible Bayes-Modelle für Regressions- und Klassifikations-Anwendungen, die auf neuralen Mehrschichtperzeptron-Netzwerken oder Gaußschen Prozessen basieren. Die Implementation nutzt Markov-Ketten-Monte-Carlo-Methoden. Software-Module, die Markov-Ketten-Sampling unterstützen, befinden sich im Lieferumfang des Paketes und können auch für andere Anwendungen nützlich sein.

BELIEF

BELIEF ist eine CommonLisp-Implementierung des Dempster-und-Kong Fusions- und Ausbreitungs-Algorithmus' für Graphische Überzeugungsfunktions-Modelle und des Lauritzen-und-Spiegelhalter-Algorithmus' für Graphische Probabilistische Modelle. Es enthält Code zur Manipulation graphischer Überzeugungsmodelle wie z. B. Bayes-Netze und Relevanzdiagramme (eine Untermenge der Influenzdiagramme), die beide Überzeugungsfunktionen und Wahrscheinlichkeiten als Basisrepräsentation der Unbestimmtheit nutzen. Es verwendet die Shenoy- und Shafer-Version des Algorithmus, so daß eines seiner herausragenden Merkmale die Unterstützung sowohl der Wahrscheinlichkeitsverteilung als auch der Überzeugungsfunktionen ist. Es bietet auch eingeschränkte Unterstützung für Modelle Zweiter Ordnung (Wahrscheinlichkeitsverteilungen für Parameter).

bpnn.py

Ein einfaches Backpropagation-ANN in Python.

CNNs

Cellular Neural Networks (CNN) ist ein massiv-paralleles Rechenmuster, das in diskreten n-dimensionalen Räumen definiert ist.

CONICAL

CONICAL ist eine C++-Klassenbibliothek zur einheitlichen Erstellung von Simulationen im Sinne der computerbasierenden Neurowissenschaft. Zur Zeit liegt ihr Schwerpunkt auf Teil-Modellierung, mit ähnlichen Fähigkeiten wie GENESIS und NEURON. Ein Modellneuron wird ohne Teilungen erstellt, normalerweise in einer zylindrischen Darstellungswise. Wenn sie klein genug sind, können sich diese offenen Zylinder fast jeder Geometrie anpassen. Künftige Klassen sollen Reaktionen-Diffusions-Bewegungen und mehr unterstützen. Ein Schlüsselmerkmal von CONICAL ist seine Kompatibilität mit anderen Betriebssystem-Plattformen; es wurde parallel unter UNIX, DOS und MacOS entwickelt und getestet.

IDEAL

IDEAL ist eine Testumgebung zur Arbeit in Influenzdiagrammen und Bayes- Netzwerken. Es enthält verschieden Inferenzalgorithmen für Überzeugungs- Netzwerke und Prüfalgorithmen für Influenzdiagramme. IDEAL wurde in reinem CommonLisp geschrieben und läuft deshalb auch auf jeder Plattform, die mit CommonLisp ausgestattet ist. Der Schwerpunkt bei IDEAL liegt auf Codetransparenz und Unterstützung von Hochsprachen-Abstraktionen. Dadurch ist es verwendbar für experimentelle Implementierungen, die Überzeugungsnetzwerk-Technologien benötigen oder erweitern.

Auf der höchsten Ebene kann IDEAL als Bibliothek für Unterprogramme genutzt werden, die Überzeugungsnetzwerk-Inferenzen und Influenzdiagramm-Prüfungen als ein Paket bereitstellt. Der Code wurde in einem detaillierten Handbuch dokumentiert. Dadurch ist es auch möglich, auf einer niedrigeren Ebene an Erweiterungen für Überzeugungsnetzwerk-Methoden zu arbeiten.

Zu IDEAL gibt es ein optionales Graphikinterface, das in CLIM geschrieben wurde. Wenn das jeweils verwendete CommonLisp auch CLIM unterstützt, kann es dieses graphische Interface auch nutzen.

Jet's Neural Architecture

Jet's Neural Architecture ist ein C++ Rahmenprogramm für Projekte zu Neuralen Netzen. Die Ziele dieses Programmes sind es, eine schnelle, flexible neurale Architektur zu entwerfen, die nicht auf eine Art von Netzen festgelegt ist und die sicherstellt, daß Endnutzer einfach nützliche Anwendungen erstellen können. Die gesamte Dokumentation ist ebenfalls leicht verständlich.

Joone

Joone ist eine Umgebung für neurale Netze, um diese zu erzeugen, zu trainieren und zu testen. Ihr Ziel ist es, eine verteilte Umgebung zu schaffen, die auf JavaSpaces und auf den neuesten Java-Technologien basiert und sowohl für Enthusiasten als auch für professionelle Nutzer fungiert. Joone besteht aus einem zentralen Generator, der der Dreh- und Angelpunkt für alle Anwendungen ist, die bereits bestehen oder die noch entwickelt werden. Die neurale Maschine ist modular, skalierbar, Multitasking-fähig und erweiterbar. Jeder kann neue Module schreiben, um neue Algorithmen oder neue Architekturen ausgehend von den einfachen Komponenten zu entwickeln, die mit dem Paket ausgeliefert werden. Der Hauptgedanke ist, die Basis für Tausende von KI-Anwendungen zu schaffen, die sich um das Kern-Gerüst herum gruppieren.

Matrix Class

Matrix Class ist eine einfache, schnelle und effiziente Matrixklasse, die in C++ implementiert wurde. Sie wurde für Wissenschaftler und Ingenieure entworfen. Die Matrix-Klasse eignet sich gut für Anwendungen mit komplexen mathematischen Algorithmen. Zu Demonstrationszwecken wurde diese Klasse verwendet, um die rückwärtsgerichtete Fehlerfortpflanzung in einem mehrschichtigen vorwärtsgerichteten künstlichen neuralen Netz zu implementieren.

Pulcinella

Pulcinella wurde in CommonLisp geschrieben und erscheint als eine Bibliothek von Lisp-Funktionen zur Erstellung, Änderung und Überprüfung von Bewertungssystemen. Darüberhinaus kann der Nutzer auch die Bedienung über ein graphisches Interface wählen (nur in Allegro CL verfügbar). Pulcinella stellt Primitiven zur Erstellung und Überprüfung unbestimmter Modelle bereit, bezogen auf verschiedene unsichere Berechnungen, einschließlich Wahrscheinlichkeitstheorie, Möglichkeitstheorie und die Dempster-Shafer-Theorie der Überzeugungsfunktionen sowie die Möglichkeitstheorie von Zadeh, Dubois und Prade. Ein Nutzerhandbuch ist auf Anfrage erhältlich.

scnANNlib

scnANNlib (SCN Artificial Neural Network Library) stellt einen Programmgenerator mit einer einfachen objektorientierten API zur Konstruktion von ANNs zur Verfügunug. Zur Zeit unterstützt die Bibliothek nicht-rekursive Netzwerke mit einer beliebigen Anzahl von Schichten, jede mit einer beliebigen Anzahl von Knoten. Es existieren Möglichkeiten für Training mit Eigendynamik, und es gibt vorsichtige Pläne zur Erweiterung der Funktionalität in späteren Versionen.

Symbolische Probabilistische Inferenz (SPI)

SPI enthält CommonLisp-Bibliotheken mit Funktionen zur Implementierung von Bayes-Netzen des SPI-Typs. Die Dokumentation ist sehr dürftig. Merkmale:

TresBel

TresBel ist eine Sammlung von Bibliotheken, die (Allegro-) CommonLisp-Code für Überzeugungsfunktionen (auch unter dem Namen Dempster-Shafer Evidenzschließen bekannt) als eine Repräsentation der Ungewißheit enthält. Die Sammlung ist sehr spärlich dokumentiert und besitzt eine eingeschränkte graphische Benutzoberfläche.

UTCS Neural Nets Research Group Software

Im Gegensatz zu den anderen Einträgen ist dies ein Verweis auf eine Software- Sammlung statt auf eine Anwendung. Sie wurde durch die UTCS Neural Net Research Group entwickelt. Nachfolgend eine Zusammenfassung der verfügbaren Pakete:

Verschiedene (C++) Neurale Netzwerke

Diese Website enthält Code-Beispiele für neurale Netze aus dem Buch The Pattern Recognition Basics of AI. Es sind einfache Beispiele verschiedener neuraler Netze. Sie sind ein guter Einstieg für einfache Experimente und für die Untersuchung des Codes, der hinter den Simulatoren steckt. Folgende Netzwerktypen (in C++ implementiert) sind auf dieser Site verfügbar:

3.2 Konnektionistische Software-Kits / Anwendungen

Diese Rubrik beinhaltet verschiedene Anwendungen, Software-Kits usw., die für Forschungen auf dem Gebiet des Konnektionismus verwendet werden. Ihre Handhabung ist unterschiedlich schwierig, da sie eher für spezielle Forschungsinteressen als für leicht zu bedienende kommerzielle Softwarepakete entwickelt wurden.

Aspirin - MIGRAINES

(als am6.tar.Z auf der FTP-Site)

Die Software, die wir jetzt herausgegeben haben, ist zur Erstellung und zum Testen vorwärtsgerichteter Netze, wie z. B. denjenigen, die bei Backpropagations-Algorithmen genutzt werden. Die Software zielt sowohl auf erfahrene Programmierer und Forscher im Bereich neuraler Netze ab, die signifikante Teile des Systems an ihre speziellen Ansprüche anpassen möchten, als auch auf Gelegenheitsanwender, die das System mit einem absoluten Minimum an Aufwand nutzen wollen.

DDLab

DDLab ist ein interaktives Graphikprogramm zur Forschung auf dem Gebiet der Dynamik finiter binärer Netzwerke, die relevant ist für Studien zur Komplexität, unerwarteter Phänomene, neuraler Netze und Aspekte der theoretischen Biologie wie z. B. Genregulierungsnetze. Ein Netzwerk kann eingestellt werden mit jeder beliebigen Architektur von regulären konnektionistischen Anwendungen (CA - 1d oder 2d) bis hin zu »wahlfreien Booleschen Netzen« (Netzen mit willkürlichen Verbindungen und heterogenen Regeln). Das Netz kann auch heterogene Nachbarschaftsgrößen haben.

GENESIS

GENESIS (Akronym für GEneral NEural SImulation System) ist eine Allzweck- Simulationsplattform, die zur Unterstützung der Simulation neuraler Systeme entwickelt wurde. Sie reicht von komplexen Modellen einzelner Neuronen bis hin zu Simulationen großer Netze mit abstrakten neuralen Komponenten. GENESIS hat die Basis für Laborversuche zu neuralen Simulationen sowohl in Caltech und dem Meeresbiologischen Laboratorium in Woods Hole, MA, als auch an verschiedenen anderen Institutionen bereitgestellt. Die aktuellste GENESIS-Anwendung beinhaltet realistische Simulationen biologischer neuraler Systeme. Obwohl die Software auch abstraktere Netze modellieren kann, sind andere Simulatoren geeigneter für Backpropagation und ähnliche konnektionistische Modelle.

JavaBayes

JavaBayes ist eine Sammlung von Werkzeugen, bestehend aus einem graphischen Editor, einer Inferenzmaschine und einem Parser. Die Software erzeugt:

Jbpe

Jbpe ist ein Backpropagation-Editor/Simulator für neurale Netze mit folgenden Merkmalen:

Neural Network Generator

Der NN Generator ist ein genetischer Algorithmus für die topologische Optimierung von vorwärtsgerichteten neuralen Netzen. Er implementiert den genetischen Algorithmus zum Semantik-Wechsel und das Unit-Cluster-Modell. Der genetische Algorithmus zum Semantikwechsel ist ein erweiterter genetischer Algorithmus, der eine schnelle dynamische Anpassung der genetischen Codierung durch Populationsanalyse erlaubt. Das Unit-Cluster-Modell ist eine Anlehnung an die Konstruktion der modularen vorwärtsgerichteten Netze mit einer »backbone«-Struktur.

HINWEIS: Die Compilierung unter Linux erfordert eine Änderung im Makefile. Man muß -ltermlib durch - ltermcap ersetzen.

Neureka ANS (nn/xnn)

nn ist eine High-Level Spezifikationssprache für Neurale Netze. Die aktuelle Version ist am besten geeignet für vorwärtsgerichtete Netze. Häufig wiederkehrende Modelle, z. B. Hopfield-Netze, Jordan/Elman-Netze usw. können und sind damit jedoch bereits implementiert worden. In nn ist es einfach, die Netzdynamik zu ändern. Der nn-Compiler kann C-Code oder ausführbare Programme erzeugen (vorausgesetzt, ein C-Compiler ist verfügbar). Er besitzt eine mächtige Kommandozeilen-Schnittstelle, wobei selbstverständlich alles über die graphische Oberfläche xnn gesteuert werden kann. Es ist sowohl möglich, C-Routinen zu schreiben, die aus der nn-Spezifikation heraus aufgerufen werden können, als auch nn-Spezifikationen aus einem C-Programm heraus zu verwenden. Man beachte, daß keine Programmierung notwendig ist, um die Netzwerkmodelle zu verwenden, die mit dem System geliefert werden (netpack).

xnn ist sowohl ein graphisches Front-End für Netzwerke, die mit dem nn-Compiler generiert wurden, als auch für den Compiler selbst. Die Benutzeroberfläche ist intuitiv und einfach zu benutzen. Dennoch ist es ein mächtiges Werkzeug mit vielen Möglichkeiten der Visualisierung von Netzwerkdaten.

HINWEIS: Man muß das mitgelieferte Installationsprogramm ausführen, um den Lizenzschlüssel installieren zu können. Es wird standardmäßig in das Verzeichnis /usr/lib installiert. Wenn man das Package in einem anderen als dem /usr-Verzeichnis installieren möchte, muß man einige Umgebungsvariablen setzen (NNLIBDIR und NNINCLUDEDIR müssen gesetzt werden). Die entsprechende Beschreibung zu diesen (und anderen) Variablen steht im Anhang der Dokumentation (S. 113).

NEURON

NEURON ist ein erweiterbares Nervenmodellierungs- und Simulationsprogramm. Es gestattet, komplexe Nervenmodelle durch Zusammenfügung mehrerer eindimensionaler Teilstücke zu beliebigen Zellmorphologien zu gestalten. Darüberhinaus kann man damit mehrere Membraneigenschaften in diese Teilstücke einfügen (einschließlich Kanäle, Synapsen, ionische Konzentrationen und Zähler). Die Schnittstelle wurde geschaffen, um den Modellierer eine intuitive Oberfläche zur Verfügung zu stellen und die Details der in den Simulationen verwendeten numerischen Methoden zu verstecken.

PDP++

Wie der Bereich der Konnektionistischen Modellierung gewachsen ist, so ist auch der Bedarf nach einer verständlichen Simulationsumgebung für die Entwicklung und den Test Konnektionistischer Modelle gestiegen. Unser Ziel bei der Entwicklung von PDP++ war es, verschiedene mächtige Softwareentwicklungs- und Benutzeroberflächen-Werkzeuge in eine Allzweck-Simulationsumgebung zu integrieren, die sowohl nutzerfreundlich als auch erweiterbar ist. Der Simulator wurde in C++ geschrieben und beinhaltet einen Skriptinterpreter nach dem aktuellen Stand der Technik, der mit der Mächtigkeit von C++ ausgestattet ist. Die graphische Benutzerschnittstelle wurde mit dem Interviews-Toolkit erzeugt und erlaubt den vollen Zugriff auf die Datenstrukturen und Verarbeitungsmodule, aus denen auch der Simulator besteht. Wir haben verschiedene graphische Module für die einfache Interaktion mit den Strukturen und den Inhalten der Neuralen Netzwerke erzeugt, und wir haben es ermöglicht, verschiedene Einstellungen anzupassen und zu ändern. Auf der Programmierebene können Nutzer-Erweiterungen einfach vorgenommen werden. Der Programmierer erzeugt neue C++-Objekte, die neue Units oder neue Prozesse sein können. Werden diese dann kompiliert und in den Simulator gelinkt, können diese neuen Objekte wie jedes andere verwendet werden.

RNS

RNS (Recurrent Network Simulator) ist ein Simulator für rekurrente neurale Netze. Reguläre neurale Netze werden ebenfalls unterstützt. Das Programm verwendet eine Ableitung des Backpropagation-Algorithmus', enthält aber auch andere (nicht so gut getestete) Algorithmen. Folgende Merkmale stehen zur Verfügung:

Simple Neural Net (in Python)

Einfacher Code für ein neurales Netz, der eine Klasse für 3-Schicht-Netze (Eingabe-, verborgene und Ausgabeschicht) implementiert. Die einzige Lernregel ist in einer einfachen Backpropagation implementiert. Es gibt überhaupt keine Dokumentation dazu (nicht einmal Kommentare), da es einfach nur Code ist, den ich zum Experimentieren genutzt habe. Das Programm umfaßt Module, die Beispiel- Datenmengen aus Carl G. Looney's NN-Buch enthalten. Es benötigt die Numerischen Erweiterungen.

SCNN

SCNN ist ein universelles Simulationssystem für Zellulare Neurale Netze (CNN). CNNs sind analogverarbeitende Neurale Netze mit regulären und lokalen Verbindungen, gesteuert durch eine Menge nichtlinearer gewöhnlicher Differentialgleichungen. Durch ihre lokalen Verbindungen können CNN als VLSI- Chips gebaut werden, die mit sehr großer Geschwindigkeit arbeiten.

Semantic Networks in Python

Das Modul semnet.py definiert verschiedene Klassen zum Bau und zur Verwendung Semantischer Netze. Ein Semantisches Netz ist eine Art der Wissensrepräsentation, und es ermöglicht dem Programm einfaches Schließen mit sehr wenig Aufwand seitens des Programmierers. Folgende Klassen sind definiert:

Mit diesen drei Objekttypen kann man sehr schnell Wissen über eine Menge von Objekten definieren und diese nach logischen Schlüssen abfragen.

SNNS

Stuttgarter Neuronale Netze Simulator (SNNS), Version 4.1. Ein phantastischer Simulator für Neurale Netze. Besser als jeder kommerzielle Simulator, den ich je gesehen habe. Der Simulator-Kernel ist in C geschrieben. Es unterstützt über 20 verschiedene Netzwerkarchitekturen und verfügt über 2D und 3D X-basierte graphische Darstellungen. Die 2D-Nutzeroberfläche hat einen integrierten Netzwerkeditor und kann ein separates NN-Programm in C generieren. SNNS ist sehr mächtig, jedoch zunächst etwas schwierig zu erlernen. Es wird mit einem Beispiel-Netzwerk ausgeliefert und Tutorials für viele der Architekturen. ENZO, ein Ergänzungssystem, gestattet es, das Netzwerk mit genetischen Algorithmen zu erweitern.

SPRLIB/ANNLIB

SPRLIB (Statistical Pattern Recognition Library) wurde entwickelt, um die einfache Konstruktion und Simulation von Musterklassifikatoren zu unterstützen. Es besteht aus einer in C geschriebenen Funktions-Bibliothek, die von einem selbstgeschriebenen Programm aufgerufen werden kann. Die meisten der bekannten Klassifikatoren sind vorhanden (k-nn, Fisher, Parzen, ...). Darüberhinaus enthält die Bibliothek auch Routinen zur Fehlerabschätzung und Dataset- Erzeugung.

ANNLIB (Artificial Neural Networks Library) ist eine Bibliothek zur Simulation Neuraler Netze, die auf der Datenarchitektur der SPRLIB basiert. Die Bibliothek enthält zahlreiche Funktionen zum Erstellen, Trainieren und Testen vorwärtsgerichteter Netze. Die Trainingsalgorithmen beinhalten Backpropagation, Pseudo-Newton, Levenberg-Marquardt, konjugierten Gradientenabstieg, BFGS, ... Desweiteren ist es durch die allgemeine Anwendbarkeit der Datenstrukturen möglich, Kohonen-Pläne und weitere exotische Netzwerkarchitekturen zu erstellen, die dieselben Datentypen verwenden.

TOOLDIAG

TOOLDIAG ist eine Sammlung von Methoden zur statistischen Mustererkennung. Das Hauptgebiet der Anwendung ist die Klassifikation. Der Anwendungsbereich ist begrenzt auf multidimensionale stetige Merkmale, ohne irgendwelche fehlenden Werte. Es sind keine symbolischen Merkmale (Attribute) erlaubt. Das Programm wurde in C implementiert und unter verschiedenen Computerplattformen getestet.

XNBC

XNBC Version 8 ist ein Simulationstool für die Neurowissenschaftler, die an der Simulation biologischer neuraler Netze unter Nutzung eines nutzerfreundlichen Werkzeuges interessiert sind. XNBC ist ein Softwarepaket zur Simulation biologischer neuraler Netze. Es sind vier Neuronenmodelle verfügbar, drei phänomenologische Modelle (xnbc, leaky integrator und conditional burster) sowie ein Modell, das auf der Ionenleitfähigkeit basiert. Eingaben auf die simulierten Neuronen können durch expermientielle Daten, die in Dateien gespeichert sind, erfolgen. Dies gestattet die Erzeugung »hybrider« Netze.


Inhalt