welt-verstehen/Cmue+Computer

Unsere Welt zu verstehen:  Computer



 Beitrag 0-232
 
 

 
Wie funktionieren:
 
Computer, KI und künstliche neuronale Netze (knN)

 
 
Jeden eingeschalteten Computer kann man sich vorstellen als
     
  • eine Uhr, die als Taktgeber fungiert,
     
  • zwei positive ganze Zahlen N und M mit N ≤ M
     
  • und eine endlich lange Folge S(0,M) von Schaltern S(0), S(1), ..., S(M-1).
     
    Man nennt sie den Hauptspeicher des Computers und s(0,M) seinen Zustand.
     
    Dieser Zustand ist gegebenen durch die Stellungen all dieser Schalter, wobei aber jeder von ihnen nur in Stellung 0 oder 1 sein kann.
     
  • Bei jedem Tick t der Uhr wird — in Abhängigkeit der Schalterstellungen s(0,N) — eine Zahl m(t) und zugleich die Stellung s(0,m(t)) sämtlicher Schalter S(0) bis S(m(t)) neu festgesetzt. Stets is N ≤ m(t).
     
    Man nennt S(0,m(t)) den zur Zeit t belegten Speicher, s(0,m(t)) seinen Inhalt und s(0,N) den nächsten auszuführenden Befehl.

 
Wie man sieht, kann s(0,N) aufgefasst werden als eine Funktion, welche jedem Schalterzustand s(0,m) mit N ≤ m < M einen nächsten Speicherzustand s(0,M) zuordnet.
 
Jeder Computer ist so gebaut, dass neben den Konstanten N und M eine weitere Konstante T existiert mit N < T < M derart, dass immer dann, wenn s(0,N) ein Befehl ist, der den dann vorliegenden Speicherzustand s(0,M) in sich selbst überführt — der Computer also nichts mehr tut — der Abschnitt s(N,T) des Speicherzustandes s(0,M) durch Input von außen abgeändert werden kann. Typisches Beispiel wäre ein Signal, das von Tastatur oder Maus kommt.
 
Rein theoretisch spielt es keine Rolle, wie groß die Differenz T-N ist. Heutige Computer haben meist 64-Bit Bandbreite, so dass dann T-N = 64 ist.
 
 
Wie die eben gegebene Erklärung der Arbeitsweise jeden Computers zeigt, kennt er genau 2N Befehle. Jeder kann als Abbildung der Menge aller denkbaren Speicherzustände s(0,M) in sich aufgefasst werden. In welcher Reihenfolge sie ständig neu zur Anwendung kommen, bestimmen von außen nach S(N,T) geschriebene Eingaben.
 
Solche Eingaben können darstellen:
     
  • von Programmierern geschrieben Programme,
     
  • von Anwendern solcher Programme angelieferte Daten oder — und das ist eher ein Ausnahmefall —
     
  • vom Bediener solcher Programme in den Bereich S(N,T) geschriebene Zeichen.

 
Sinnvolle Programme zu schreiben ist schwierig und zeitraubend. Hier nun setzt KI (sog. künstliche Intelligenz) an:
 
Man versteht darunter Programme, die besonders hohen Wirkungsgrad haben — mit relativ wenig Code also relativ viel erreichen.
 
Eine besonders einfache Form von KI ist bekannt geworden unter dem Stichwort Expertensysteme. Jedes Expertensystem ist einfach nur ein Programm P, welches auf eine gegebene Menge D von Daten immer und immer wieder eine durch ein Regelsystem R definierte Funktion F anwendet, welche die Menge der Daten sinnvoll vergrößert. Aus gegebenen Wissen D entsteht so schrittweise immer umfangreicheres Wissen bis hin zu dem Punkt, an dem es dann schließlich auch die Antwort auf eine vom Anwender vorher gestellte Frage beinhaltet.
 
Da nicht von vorn herein gesagt werden kann, wie oft die Funktion F den Datenbestand vergrößern muss bis die gesuchte Antwort endlich gefunden wir, ist klar: Expertensysteme sind umso mächtiger, je mächtiger der Computer ist, auf dem sie arbeiten, d.h. je kürzer seine Taktrate ist und je größer sein Speicher.
 
Über Expertensysteme hinaus gibt es noch einen zweiten, inzwischen schon weit entwickelten Lösungsansatz, den Wirkungsgrad von Programmcode zu erhöhen: Sog. Selbstlernende Software (SS).
 
Die Grundidee hierfür ist folgende: Man baut das Programm so, dass es sich schrittweise durch immer bessere Versionen seiner selbst ersetzen kann.
 
Sie zu produzieren, schreibt man sie so, dass die Funktion F sich selbst und das durch sie immer wieder anzuwendende Regelsystem ständig zufallsgesteuert abändert und jede entstandene neue Version des Paares (F,R) daraufhin untersucht, ob sich mit ihm bessere Ergebniss erzielen lassen als mit der alten: Wenn ja, ersetzt die neue Version die alte, ansonsten wird sie einfach verworfen.
 
Dieses Vorgehen funktioniert natürlich auch dann, wenn das Regelsystem leer ist, das Programm also einfach sich selbst modifiziert.
 
Natürlich hat dieser Ansatz zwei Nachteile:
     
  • Erstens sind extrem mächtige Rechner notwendig, auf derart  i n e f f i z i e n t e  Weise nach neuen — besseren — Programmen zu suchen.
     
  • Zweitens benötigt man extrem viele Beispiele, anhand deren sich prüfen lässt, ob eine weitgehend zufällig gewählte neue Version des Programms in der Mehrzahl aller Fälle bessere Ergebnisse liefert oder schneller zum Ziel kommt als die vorher genutze.

Es ist daher kein Wunder, dass dieser Ansatz sich erst nach 2005 so richtig durchgesetzt hat. Wie sich erste Erfolge in 2016 dargestellt haben, skizziert ganz kurz ein Kommentar, der sich auf guteFrage.net findet. Wer inzwischen bessere Erfahrungen macht, möge sie dort ergänzen.
 
 
Die Methodik, die man heute (2016) als die wahrscheinlich beste sieht, SS zu schaffen, sind sog. künstliche Neuronale Netze (knN):
 
Ihre Funktionsweise soll so weit wie nur irgend möglich dem unseres Gehirns entsprechen. Hierzu muss man wissen:
 
Computerbaustein sind Hardware mit eingebautem, fest verdrahtetem Code. Sie also können sich nicht selbst modifizieren.
 
Nervenzellen im Gehirn dagegen sind durch Fasern verbunden, die — wie durch eine Wiese führende Trampelpfade — zunehmend ausgeprägter werden bzw. sich zunehmend zurückbilden, je nachdem wie stark man sie nutzt.
 
Dieses Vorbild lässt sich nutzen, indem man simulierten Computerbauteilen ähnliches Verhalten gibt: Hierzu könnte man die Schalter [ von denen oben in der Beschreibung des Computers die Rede war ] so manipulieren, dass nur ein hinreichend stark ankommender Impuls sie umlegt. Welchen Effekt die Ausführung eines Befehls s(0,N) dann also hat, bestimmt nicht allein dieser Befehl, sondern bestimmen wesentlich mit die derzeit in jedem Schalter gesetzten Widerstände.
 
Ob solches Verfahren aber schon auf Schalterebene Sinn macht oder erst für parallel abzuarbeitende Aufrufe umfangreicherer Komponenten — die Frage also, welche Teile des Systems man als Neuronen verstehen möchte —, ist eine Frage, die zu entscheiden auch wieder sehr viel Probieren erfordert.
 
 
Da keine durch einen digitalen Computer gefällte Entscheidung wirklicher Zufall sein kann — sondern stets nur auf Pseudozufallszahlen beruht — funktionieren natürlich auch künstliche neuronale Netze voll deterministisch (also nicht wirklich wie das Gehirn biologischer Lebewesen).
 
 
Außerdem muss klar sein: Wer knN als Vorbild und gültiges Modell für die Arbeit unseres Gehirns sieht, der verkennt, dass künstliche neuronale Netze ein ganz bestimmtes, von ihren  E n t w i c k l e r n  definiertes, gewünschtes Verhalten entwickeln sollen. Dies bedeutet, dass einzig und allein diese Entwickler Verantwortung dafür tragen, was mit » gewünscht « gemeint ist und wann dieser Anspruch als erfüllt gelten kann.
 
 
Wenn also jemand durch knN realisierte KI als "selbstorganisierend" bezeichnet, so ist das auf keinen Fall richtig.

 
Und natürlich ist entscheidend die — auch nur durch Menschen mögliche — Vorgabe von Kriterien, die erwünschte Ergebnisse von nicht erwünschten zu unter­scheiden gestatten.
 
 
Derzeit besonders diskutiert werden einige speziellere Typen neuronaler Netze (gut dargestellt z.B. in Manfred Spitzer: Der Geist im Netz, Spektrum (2000).
     
  • 1. Kohonen-Netze: Bei ihnen unterscheidet man
       
    • eine Input-Schicht, die Daten empfängt, und
    • eine Output-Schicht, die Daten aus den Netz an andere Systemkomponenten abgibt.

    Charakteristisch für Kohonen-Netze ist, dass jedes Iutput-Neuron eine Verbindung hin zu einem Onput-Neuron hat und umgekehrt. Zudem ist jedes Output-Neuron mit jedem anderen Output-Neuron verbunden, und diese Verbindungen sind so geschaltet, dass bei Dateneingang auf einem Output-Neuron auch jeder seiner direkten mit ihm verbundenen Nachbarn auf aktiv geschaltet wird. Entferntere Neuronen aber werden in ihrer Aktivität geschwächt.
     
     
  • 2. Hopfield-Netze: Bei ihnen ist jedes Neuron mit jedem anderen verbunden.
     
    Dies hat zur Folge, dass ein Reiz an einem Neuron schon im nächsten Taktschritt alle anderen erreicht und im übernächsten dann auch wieder auf das erste Neuron zurückwirkt.
     
    Dies kann dazu führen, dass das Netz in Reaktion auf einen Eingangsreiz so lange in anscheined ungeordnete Aktivität versetzt wird, bis Energieverluste sie abklingen lassen. Wichtiger ist, dass sich auch ein stabiler Zyklus ausbilden kann, der gutes Modell für einen dynamischen Speicher ist, der eine Anregung von außen als Gedächtniszustand bewahrt.
     
     
  • 3. Elman-Netze: Sie vereinen die Vorteile beider und finden sich auch heute schon in so mancher technischer Anwendung.

 
Kohonen-Netze eignen sich gut zur Simulation der Teile unseres Gehirns, die primär Wahrnehmingsareale sind.
 
Zur Simulation des Hippocampus, der für den Datenabgleich von Innen und Außen zuständig ist und als Gedächtnis-Zwischenspeicher begrenzter Kapazität dient, eignen sich besonders Hopfield-Netze.
 
Mit Elman-Netzen ist das Zusammenspiel verschiedener Hirnareale recht gut nachbildbar.
 
Im Gegensatz zu einem in Hardware realisierten knN gibt es in bilologischen Neuronen-Netzen stets Rückwirkungen der Arbeit des Netzes auf seine Struktur. Sie sind nur in durch Software realisierten knN simulierbar.
 
Um mit einer begrenzten Zahl von Neuronen größere Mengen von Objekten nachbilden zu können, ist es notwendig, die zeitliche Dimension des Netzes als Chance zu begreifen. Untersuchungen hierzu haben viel Interessantes aufgezeigt. So wurde etwa entdeckt, dass Nervenzellen, die für das gleiche Objekt zuständig sind, mit hoher Genauigkeit synchron arbeiten, wohingegen das Feuern von Zellen, die verschiedene Objekte oder Prozesse bedienen, unsynchronisiert bleiben.
 
Lies auch:


 


aus  Notizen  zu:

Intelligenz – echte und künstliche


Impressum