Programmiersprache - Mensch

Viele Bahnbrechende Erfindungen, wenn nicht sogar alle auf's Detail gesehen, sind das Produkt reiner Beobachtung der Natur.
Wenn wir dies jetzt mal auf den Menschen projezieren und uns selber beobachten, fällt auf, dass der Menschliche Verstand
bereits ebenfalls Narrenhaft versucht wurde nachzubauen.

Stichwort: Programmierung!

Ich vergleiche hierzu ebenfalls den Menschen(Natur) mit unserem Nachbauprodukt(Rechner).

Ich stelle den Verstand gleich mit einem Betriebssystem(SecondaryBaseSyste[nach den Überlebenswichtigen Funktionen = Bios]).

Ohne Bestriebssystem würde der Rechner nicht funktionstüchtig laufen.
Ohne Verstand würde der Mensch nicht "funktionstüchtig" sein.

Auf diesem Betriebssystem laufen 5 Grundprogramme.
Fühlen, schmecken, sehen, hören und riechen.

Jedes dieser Programme kann Daten annehmen und weitergeben an das Basissystem welches dann verarbeitet und ausgibt = entscheidet.

Hierbei ist der Aspekt wie die Daten verarbeitet werden interessant!

Man kann sogar ein kleines Script schreiben welches diese genau darstellt.
Da mir das leider bisher nur in php gegeben ist, hoffe ich verstehen es zumindest Einige.


Proramm(Sinn) - Hören.

Code:
<?php
  
include("../Hirn");                                      // Zugriff auf Gehirn bzw. Wortdatenbank.

if ($hören != "") {                                    // Wenn ein Geräusch gehört wird aktiviere Aufmerksamkeit bzw. führe Script aus.

$sinnvolles = strfstörgeräusche("x, x");               // filtere Störgeräusche und gib Ergebniss weiter.

$ausgabe = strpos( $sinnvolles, $wortdatenbank);       // Vergleiche gehörtes mit gespeichertem.

echo $ausgabe;                                         // Gib Ergbniss aus oder Reagiere.

}


?>

Natürlich sind dort etliche Abläufe unberücksichtigt aber zur Veranschaulichung reicht es.
Die Parallen sind hier schon beeindruckend.

Bis hierhin ist das allerdings "nichts Neues" auch wenn ich bis Dato nie eine Veranschaulichung dieses Themas sah.

Nun aber sollte man sich vll. fragen: "Was könnten wir noch alles von unserem Verstand kopieren und sinnvoll in Programmierung umsetzen?"
und vorallem "Wie nahe bevorstehen wir der wahren KI somit?".

In gewisser Hinsicht wird dies mit dem Objektorientierten Programmieren gerade ausgebaut, erforscht.
Nur ist das mal wieder "Reiner Zufall" bzw. Ergebniss langen Wartens und Probierens obwohl man diese Art der
Programmiersprachen-programmierung bereits hätte vom Menschlichen Körper/Verstand ableiten können.

Mein Fazit aus dieser Überlegung ist, dass Programmiersprachen-Programmierer sich intensiver mit den Abläufen des Körpers(Sinne) und der Verarbeitung
des Verstandes auseinandersetzen sollten, um eine uns ebenbürdige Programmiersprache zu schaffen.

Das ganze könnte bishin zur Selbstergründung durch Computer führen wenn wir eines Tages die Technik 1:1 kopiert haben und weiterentwickeln können.
Schneller als die Natur uns normalerweise entwickeln würde.

Möglicherweise regt dieser Beitrag ja jemandem zum nachdenken an der die Möglichkeit hat dies auch umzusetzen.
Vielleicht bekomme ich irgendwann noch die Möglichkeit dazu, es wäre schön.

MfG,

Teekayo?
 
Hab da al was echt gutes im meinem Brockaus zu gelesen...nur um dir die Illusion zu nehmen ;)

Der Computer und das menschliche Denken

Wie das menschliche Gehirn verfügt der Computer über Eingabesysteme, Verarbeitungs- oder Zentraleinheiten und Ausgabekomponenten. Bei normalen Personalcomputern ist es die Tastatur, bei den Industriecomputern oder Onlinecomputern sind es Messgeräte oder Verbindungen zu anderen Computern, die der Eingabe von Informationen dienen. Die Eingabeeinheiten der Menschen (zum Beispiel Augen und Ohren) sind denen des Computers noch weit überlegen. Bei den Zentraleinheiten (Zentralnervensystem beim Menschen beziehungsweise der Speicher und Hauptprozessor beim Computer) übertrifft dagegen jeder bessere Computer leicht das menschliche Gehirn an Schnelligkeit und der Menge der verarbeitenden ?bits?, allerdings mit einer wesentlichen Einschränkung. Das Gehirn verarbeitet nicht nur Informationen, sondern auch Emotionen. Theoretisch könnte das auch ein Analogcomputer leisten, der ähnlich wie ein Rechenschieber arbeitet, aber man hat sich stattdessen weitgehend auf das Digitalsystem beschränkt, das in seiner Arbeitsweise einem Abakus oder Rechenbrett gleicht. Die Datenverarbeitung kann in einer emotionslosen Welt funktionieren. Ein Mensch in dieser Situation hätte keine Überlebenschance, weil emotionale Entscheidungen einen wichtiger Bestandteil seines Lebens bilden. Deshalb taugen Computerprognosen über menschliches Verhalten wenig.

Der eigentliche Vorzug des Computers sind die Ausgabeeinheiten. Kein Mensch kann eine solche Fülle von Entscheidungsprozessen in so kurzer Zeit zu einer Lösung zusammentragen wie der Computer. Dabei können neue Regeln eingebaut werden, so die Faustregel, dass rückwärts gerichtete Verkettungen von der Lösung bis zum Ausgang des Problems führen. Diese Regeln sind in ihrer Vielfalt lebensnahen Handlungen, Konstruktionsverläufen oder Automatismen ähnlich, bei denen man auch öfter gedanklich zum Problembeginn zurückkehrt. Allerdings gibt es Grenzen, wenn bei offenen Problemen der Lösungsweg unbestimmbar wird, zum Beispiel, wenn man irrationale, völlig unverständliche Maßnahmen einiger Personen einbezieht, die sich mit ihrem Verhalten nicht im ?normalen? Maßstab einer Gesellschaft bewegen. Ferner kann man versuchen, in einem Entscheidungsprozess den Kontrahenten in die Irre zu führen. Vorläufig gehen die Computerprogramme von einer leicht programmierbaren ?festen Gewinnmatrix? aus, das heißt von einem idealen rationalen Denker.

Angesichts dieser Unterschiede von Mensch und Computer ist es unmöglich, das Denken zu ?computerisieren? ebenso wenig kann der Computer die Kognitionen kopieren mit ihren scheinbaren Umwegen, Abkürzungen, Abstrahierungen und persönlichen Begriffshierarchien, ihrer Irrtums- und Fälschungsabhängigkeit, ihrer Manipulierbarkeit sowie den individuellen Bewertungsstrategien. Unter der Voraussetzung, dass ein offenes Mensch-Computer-System die Eigenständigkeit der ?Denkstrukturen? beider Instanzen nutzt, könnte es besonders für Voraussagen künftiger Entwicklungen eingesetzt werden, deren Bedingungsvernetzungen ohne Computer nicht zu überschauen wären.

Prof. Dr. Hellmuth Benesch

(c) Bibliographisches Institut & F. A. Brockhaus AG, 2005 A. Brockhaus AG, 2005
 
Wow

Okay das zeigt einen sehr tiefen Einblick.
Detailliert, sehr gut beschrieben.

Danke!

Also wird wohl auch auf Grundlage dieses Wissens bereits OOP.

MfG,

Teekayo?
 
In so einen Gehirn steckt schon mehr drin als nur eine Reaktion auf äußere Faktoren, die z.B. mittels 5 Sinne wahrgenommen werden.
Der Mensch trifft ja auch bestimmte Entscheidungen, diese Abhängig sind von Informationen im Gehirn und anderen Entscheidungen die von ihm selbst oder anderen ausgeht. Dazu kommen noch die hormone, die z.B. ausgeschüttet werden wenn man glücklich ist oder eher weinen möchte. Die Hormone sind auch gewisse Faktoren zur Entscheidungsfindung.

Eine Art Programmiersprache für das Gehirn gibt es ja schon: NLP :D
Sie wird von manchen als solche gesehen.
 
Hallo
ich versuch das Thema mal auf eine andere Weise zu bearbeiten.

ein VergleichZwischen Mensch und Maschine wird in der Theoretischen Informatik mit der TuringMaschine versucht. (es geht vorallem um berechnebarkeiten von Problemen)
Zudem wird versucht eine KNN (Künstliches uronales Netz) zu programmieren allerdings ist das recht komplex und verdammt schwer ein so großes Netz wie das Geirn zu programmieren.

Ein besipiel für eine KNN wurde bereits in einem Thread hier genannt
 
Eine Maschiene/Programm das den TuringTest besteht ist aber noch Science-Fiction.

Ich glaube das es wohl nie zu einer KI kommen wird welche der des Menschen ebenbürtig ist. Vorallem in Punkten Kreativität und Emotionen werden KI's immer zurückbleiben. Denn das Programm müsste alles auf Basis von Algorithmen machen die der Programmierer geschrieben hat, diese können ja auch niht geändert werden. Und bevor jetzt welche sagen, kein Problem, dann bringe wir der KI halt bei sich selbst weiterzuprogrammieren. Das klappt nicht so einfach, denn auch das müsste auf Basis von Algorithmen ablaufen. Und wenn man ein so komplexes, sich selbst umschreibendes Programm schreibt dann sind Abstürze und dauernde Endlosschleifen "vorprogrammiert".
 
Und so ähnluich war es auch mit dem Menschen bis etwas herrauskam was überlebensfähig war.

Es wäre ja auch eine "unintelligente" KI schon ein Fortschritt.

Sicherlich ist es möglich, irgendwann ein Polymorphes neuronales Netz nachzuprogrammieren.
Wobei es wahrscheinlich leichter sein wird Gehirne zu züchten und sie selbst wachsen zu lassen, als zu programmieren.

MfG,

Teekayo2
 
Und wenn man ein so komplexes, sich selbst umschreibendes Programm schreibt dann sind Abstürze und dauernde Endlosschleifen "vorprogrammiert".

ein netz (neuronales netz ?) aus mehreren KI's, in dem jede jeden "überwacht", im falle eines absturzes oder ähnlichem resetet usw.
sicher, eine dem menschen ebenbürtige KI ist zur zeit reine fiktion.. aber fliegen konnten wir lange ziet auch nicht. wahrscheinlich wird sich die menschheit bis dahin selbst ausgerottet haben..

@TeeKayo2

nette idee, aber ein wenig oberflächlich dargestellt..
 
Gehirne züchten ?

Das wär gar nichtmal so uninteressant. Neuronale Zellen sind eine der wenigen Zellarten welcher unser Körper nicht regenerieren kann, aber er kann sie generieren während er heranwächst. Folglich gibt es in unserer DNA ein oder mehrere Gene welche dieses bewirken. Sollte man diese isolieren können dürfte es, natürlich unter enormen Aufwand, vielleicht eines Tages möglich sein Gehirne ohne den "restlichen" Menschen zu züchten und die vielleicht sogar zu optimieren. Zellerhaltende Funktionen und für Wachstum nötige Stoffe werden natürlich beigefügt.

Wenn man dann noch eine cybernetische Maschine baut welche die elektrischen Signale des Gehirns "lesen" kann, was ich mir als einfacher vorstelle als es den Anschein hat, und dann noch diese richtig interpretieren kann, so hätte man wirklich einen Rechner mit enormen Potential.
 
Gehirne Züchten ist "prinzipiell" gar nicht so schwer, allerdings geht das dann nur aus Stammzellen, aber wo ist damit zu Forschen schon erlaubt?! *grummel*
 
Original von Orniflyer
Denn das Programm müsste alles auf Basis von Algorithmen machen die der Programmierer geschrieben hat, diese können ja auch niht geändert werden.
Das ist gerade der Witz an der Sache:
Man versucht einen dynamischen Algorithmus zu finden, der sich im Laufe eines Lernprozesses verändert.
Dies wird z.B. bei einem künstlichem Neuronalen Netz versucht. Ein bisschen ist das, als würde man ein Gehirn züchten, allerdings nur virtuell.
Das System ist ähnlich dem unseres Gehirns: Kleine einzelne Zellen werden vernetzt und geben einen Impuls weiter. Wie stark sie den Impuls weiter leiten, hängt von der "Erfahrung", bzw. dem bisherig Gelerntem, zusammen.
Der große Vorteil zu einem statischem Algorithmus:
Der Entwickler muss nicht den Algo selbst erschaffen, sondern trainiert das Netz auf ein bestimmtes Verhalten. Zweitens lassen sich durch ein Neuronales Netz beliebige und beliebig viele Zuordnungen von Ein- zu Ausgaben antrainieren, mit entsprechendem Zeitaufwand.
Ein Neuronales Netz von der Größe und komplexität des Gehirns bleibt aber (vorerst) SiFi.

Die Gebiete in denen Neuronale Netze eingesetzt werden können und werden sind unter anderem: Optimierung, Meteorologie, Schrift-/Bilder-/Mustererkennung/-generierung, alles bei dem ein Algo zu komplex werden würde ;)
 
Gibt es denn schon in der Praxis erwendete Neuronale Netze ?

Mich würde sehr stark die Grundstruktur eines solchen Programmes interessieren.
 
PHP:
<?php
  
include("../higher_rationality/Hirn");                                      // Zugriff auf Gehirn bzw. Wortdatenbank.
include("../lower_rationality/Bauch");  // Bauchgefühl hinzufügen
include("../peripherie/ears");

while ($all_systems_fine()) {

 if (is_input($hören)) {                                    // Wenn ein Geräusch gehört wird aktiviere Aufmerksamkeit bzw. führe Script aus.

  $ar_hören = explode($ar_stoergeraeusche, $hören");               // filtere Störgeräusche und gib Ergebniss weiter.

  if (sinnvoll($wichtiges) && interessant($wichtiges)) {               // prüft ob die nachricht sinnvoll oder interessant ist
   echo antwort($wichtiges);                                         // sucht in der in hirn verankerten funktion antwort mittes der datenbank nach einer antwort

  }
  else {                                                                          //Wenns keinen sinn macht oder uininteressant ist, gib zufallsfloskel aus
   $rnd = rand(1,count($keep_conversation_alive));
   echo $keep_conversation_alive[$rnd];
  }
}


?>

ich würde vorschlagen, jeder programmiert seine ideen dazu, irgendwann haben wir ne KI *lol

So ich habs mal etwas optimiert...
 
Original von Orniflyer
Gibt es denn schon in der Praxis erwendete Neuronale Netze ?

Ziemlich sicher weiß ichs leider nur von nem Unternehmen, die damit die Stromstärke von Windparks berechnen, damit rechtzeitig Atomstrom aufgekauft werden kann. Bei diesem Thema müsste google eigentlich sehr gesprächig sein.

Gibt auch schon Gedanken es für Börsenprognosen ein zu setzen, obwohl ich glaube das die Faktoren, die in Börsenkurse einfließen nicht vollständig erfasst werden können (zB: Vogelgrippe etc.).
 
So mal wieder mein brockhaus rangezogen:

Neuronale Netze in der KI

Die KI hat sich schon sehr früh mit der Idee des neuronalen Netzwerks beschäftigt; schon in dem bereits erwähnten Förderungsantrag für die Dartmouth-Konferenz 1956 wird auf die Möglichkeit künstlicher neuronaler Netze (KNN) ausdrücklich hingewiesen. Umso erstaunlicher erscheint es zunächst aus heutiger Sicht, wie spät, nämlich erst zu Beginn der 1980er-Jahre, dieser Ansatz genauer betrachtet wurde. Dabei gab es die ersten praktischen Erfolge von KNN bereits in den 1950er-Jahren. Schon im Jahr 1943 hatten Warren McCulloch und Walter Pitts vorgeschlagen, die Neuronen als logische Schaltelemente mit Binärlogik anzusehen. Frank Rosenblatt konstruierte bereits 1957 mit seinem Perceptron die erste Maschine mit einer neuronenähnlichen Verschaltung, 1960 folgte dann das Pandämonium von Selfridge und Neisser, und 1985 konnte W. Daniel Hillis seine Connection Machine vorstellen, einen komplexen und ultraschnellen Parallelrechner nach dem Prinzip neuronaler Architektur. Sie alle wurden jedoch zunächst durch eine vernichtende Kritik, angeführt von Marvin Minsky, der sich Ende der 1950er-Jahre selbst eine Zeit lang mit künstlichen neuronalen Netzwerken beschäftigt hatte, ins Abseits gedrängt. Die 1970er-Jahre wurden von den Forschern als eine ?neuronale Eiszeit? bezeichnet, so sehr wenig lief in Sachen neuronale Netze. Inzwischen hat Minsky seine Kritik widerrufen, und die Idee der KNN und ihre Propagatoren sind zu neuem Ruhm aufgestiegen. Heute gehen die KNN-Forscher, getragen von dem Erfolg ihrer Forschungsergebnisse, in die Offensive, und man versucht seit den frühen 1980er-Jahren verstärkt, Computersysteme zu konstruieren, welche die informationsverarbeitenden Prozesse im Gehirn simulieren sollen.

Hier liegt ein Paradebeispiel dafür vor, wie die für eine falsche Meinung in die Waagschale geworfene Autorität eines anerkannten Wissenschaftlers die Forschung auf diesem Gebiet für lange Zeit behindern kann. Hätte man den physiologischen Grundgedanken der KNN nicht jahrzehntelang vernachlässigt, so hätte die KI sicherlich eine ganz andere Entwicklung genommen. Der Harvard-Professor John Daugman beklagt in diesem Zusammenhang: ?Das Wohnhaus KI sieht, rückblickend betrachtet, eher wie ein Gefängnis aus, dessen Räume nicht miteinander in Verbindung stehen und dessen Korridore ins Nichts führen.?

Selbst heute werden die künstlichen neuronalen Netze, obwohl dies nach dem interdisziplinären Geist der Dartmouth-Konferenz nicht sehr plausibel ist, von manchen Forschern nicht zum Gebiet der KI gerechnet. Dessen ungeachtet gilt die direkte Orientierung an den Vorgängen im Gehirn derzeit als einer der vielversprechendsten Ansätze in der künstlichen Intelligenz, insbesondere in der Bild- und Mustererkennung.

Der Unterschied zum ?klassischen? Konzept der symbolverarbeitenden Maschinen ist dabei so grundlegend, dass man hier sogar von einem Paradigmenwechsel spricht. In betonter Abweichung von der bisher vorgetragenen Grundthese, dass Denken sich als die Summe von logischen Einzelprozessen darstellen lässt, wird die als Paradigma des Konnektionismus bezeichnete Überzeugung formuliert:

?Informationsverarbeitung erfolgt durch Wechselwirkung vieler einfacher, uniformer Einheiten, die anregende und hemmende Signale an andere Einheiten schicken.?

Bei diesem neuen Paradigma spricht man von subsymbolischer Verarbeitung, da das Wissen nicht symbolisch und explizit, sondern in einem Netzwerk auf sehr indirekte und subtile Weise in den Verbindungen der Neuronen und im Zustand der Neuronen versteckt ist.

Zwar scheitert die Konstruktion eines Computersystems, das die neuronalen Strukturen des menschlichen Gehirns genau nachbildet, nach wie vor notwendigerweise an dessen aberwitziger Komplexität sowohl im mikroskopischen als auch makroskopischen Bereich sowie an den noch ungeklärten Funktionalitäten der verschiedenen Gehirnareale. Allerdings ist es immerhin möglich, die Funktion eines einzelnen Neurons mithilfe einer elektronischen Schaltung zumindest angenähert nachzubauen; ein solches Schaltungselement hat den Namen ?künstliches Neuron? durchaus verdient. Die übliche Vorgehensweise ist es nun, eine vergleichsweise geringe Anzahl von künstlichen Neuronen zu einem künstlichen neuronalen Netzwerk zu verbinden. Solche KNN sind zwar nur stark vereinfachte Modelle unseres Gehirns, sie repräsentieren jedoch ein grundlegendes Prinzip seiner Mikrostruktur: die massiv parallele Informationsverarbeitung einer Vielzahl uniformer, einfacher Elemente, die entlang unterschiedlich ausgeprägter Verbindungen Impulse miteinander austauschen. Man kann nun an realen Aufgabenstellungen testen, ob solch ein Netzwerk ein intelligentes Verhalten zeigt.

Welche Erfolge können die künstlichen neuronalen Netze für sich verbuchen, was können sie, was mit dem ?klassischen? symbolverarbeitenden Ansatz nicht oder nur schlechter geht?

Beispiel Mustererkennung

Künstliche neuronale Netze vollbringen Leistungen, für die Intelligenz erforderlich ist, die aber mit den Mitteln der ?klassischen? symbolverarbeitenden KI nur schwer zu lösen sind. Sie sind beispielsweise in der Lage, zumindest teilweise die bildhafte, imaginäre Art und Weise nachzuvollziehen, in der der Mensch sich Gegenstände, Begriffe und bisweilen sogar abstrakte Sachverhalte vergegenwärtigt.

Wenn wir beispielsweise über einen Tiger reden, so stellt sich unmittelbar die bildhafte Vorstellung dieser Raubkatze ein. Diese Fähigkeit zur Imagination hilft unter anderem wesentlich dabei, Objekte wieder zu erkennen, die nur schemenhaft wahrnehmbar oder teilweise verdeckt sind.

Wir orientieren uns an markanten Teilen, an Mustern oder Eigenschaften und versuchen, den visuellen Eindruck mit etwas, das uns bekannt ist, zu assoziieren.

Kommen wir zu unserer indischen Großkatze zurück. Bei der Imagination gibt es weder eine explizite noch eine formale Beschreibung eines Tigers. Die implizite Vorstellung eines Tigers entspricht eher abstrakten bildhaften Eindrücken, die in unserem Gedächtnis verankert sind. Diese Eindrücke beinhalten möglicherweise keinen großen Detaillierungsgrad, sondern kommen Schemen gleich, welche die markantesten Eigenschaften festhalten und in unserem Gedächtnis verankern.

Erst in den letzten Jahrzehnten ist es der Medizin und der Biologie, insbesondere der Mikro- und Neurobiologie gelungen, die Grundfunktionen des Gedächtnisses zu erfassen.

Im Prinzip kann jedes Element des Netzwerks mit jedem anderen verbunden sein. Meist sind jedoch die Elemente in Anlehnung an das biologische Vorbild, etwa das menschliche Sehsystem in mehreren Schichten angeordnet, wobei Neuronen einer Schicht nur Signale von Neuronen der benachbarten Schicht erhalten. Typisch sind KNN mit einer bis fünf Schichten. Die Elemente der ersten Schicht, der Eingabeschicht, erhalten ihre Signale von außen, entsprechend den Sinneszellen des biologischen Vorbilds. Die letzte Schicht entspricht der Ausgabe des Systems, an der das Ergebnis des informationsverarbeitenden Erinnerungsprozesses angezeigt wird. Typischerweise ist hier ein (eventuell verrauschtes) Muster wie beispielsweise ein Tigerbild die Eingabe, und als Ausgabe wird dann ein Neuron definiert, das die Bedeutung ?Tier Tiger? hat.

Der große Unterschied zu den ?klassischen? wissensbasierten KI-Systemen beruht auf der Art und Weise, in der das Netzwerk zu diesem Ergebnis kommt: Die eigentliche Informationsverarbeitung läuft in den verborgenen Schichten ab, und es gibt Mechanismen, die bewirken, dass sich zu einem vorgegeben Eingabe-Ausgabe-Paar die Gewichte des Netzwerks anpassen. Daher müssen die künstlichen neuronalen Netze nicht explizit programmiert werden, sondern werden in einer Trainingsphase auf ihre Aufgabe hin getrimmt. Bei diesem Training ?erlernt? das Netz die Fähigkeit, zu einem Muster die dazugehörige Ausgabe zu erzeugen. An der Eingabeschicht des Netzes werden Beispiele und Gegenbeispiele des zu erlernenden Musters ?gezeigt? und das Netz über die Elemente der Ausgabeschicht adjustiert.

Vor dem Training des neuronalen Netzes sind seine Gewichte zufällig eingestellt. Durch Eingabe eines Musters und Vergleich der Ausgabe mit dem richtigen Resultat wird der Fehler berechnet und durch Rückkopplung des Impulses die Gewichte im Netz verändert. Dieser Vorgang wird oft mehrere Tausend Mal wiederholt. Auf diese Weise erreicht man, dass sich das Netz innerhalb der verborgenen Schichten selbst organisiert und ein stabiler Zustand erreicht wird, der durch weiteres Training nicht mehr verbessert werden kann. Diese Vorgehensweise entspricht dem bekanntesten Lernalgorithmus im Bereich der KNN, der Backpropagation zu Deutsch so viel wie Fehlerrückvermittlung. Das Trainieren des Netzes wird in diesem Fall durch einen Lehrer vorgenommen.

Neben dieser Form des Trainings gibt es das nichtüberwachte Lernen, bei dem keine Rückkopplung von einer vorgegebenen Ausgabe erfolgt. Ein KNN, das nach diesem Prinzip arbeitet, soll auf die Eingabe ähnlicher Muster mit ähnlichen Ausgaben reagieren. Netzwerke dieser Art bezeichnet man als selbstorganisierende Karten. Sie gehen auf den finnischen Wissenschaftler Teuvo Kohonen zurück und arbeiten mit einer Eingabeschicht und einer als Wettbewerbsschicht bezeichneten Ebene, deren Elemente alle untereinander verbunden sind.

Jedes Element der Wettbewerbsschicht ist vollständig mit Elementen der Eingabeschicht verbunden. Im Allgemeinen gilt, dass Elemente der Wettbewerbsschicht, die benachbart sind, von ähnlichen Eingaben angesprochen werden, das heißt Aktivität erzeugen. Im Speziellen reagieren die einzelnen Elemente auf individuelle Eigenschaften der Eingabe. Unwesentliche Eingabemerkmale werden dabei unterdrückt und wesentliche an einer bestimmten Stelle der Wettbewerbsschicht verstärkt.

Wird ein bestimmtes Muster an der Eingabeschicht angelegt, so vergleicht sie jedes Element der Wettbewerbsschicht mit dem ?vorgefassten Bild?. Je stärker die Eingabe diesen Vorstellungen entspricht, umso stärker wird das Element aktiviert. Als Konsequenz dieser Netztopologie unterdrückt dasjenige Element, das die größte Aktivität aufweist, über seine Querverbindungen zu seinen Nachbarelementen deren Aktivität. Es geht quasi aus dem Trainingsvorgang als Sieger hervor und vereinigt die gesamte Aktivität bei einer bestimmten Eingabe ausschließlich auf sich.

Der Lernvorgang geschieht also durch eine Selbstorganisation, indem die Gewichte schrittweise so verändert werden, dass bei einer erneuten Eingabe des gleichen Musters eine noch größere Übereinstimmung gefunden wird.

Die Selbstorganisation eines KNN bedeutet fast immer die Anpassung der Gewichte an den Verbindungen zwischen den Elementen. Hat ein Eingangsgewicht einer Zelle einen hohen Wert, so verhält sie sich empfindlich auf jedes Signal, das sie über diese Verbindung erhält. Setzt man den Wert gänzlich auf null, so hat ein Signal keinerlei Wirkung auf die Zelle. Ist der Wert gar negativ, so wirkt das Signal hemmend. Diese Wirkung ist vergleichbar mit der inhibitorischen und exzitatorischen Wirkung von Synapsen bei biologischen Neuronen.

Um die Gewichte eines Netzes zu verändern, verwendet man eine Lernregel. Sie sorgt während des Trainings dafür, dass sich die Werte der Gewichte in einen stabilen Zustand einschwingen, sodass das gewünschte Verhalten erreicht wird. Die Art der Lernregel zusammen mit der Netztopologie und der gewählten Aktivierungsfunktion sind die wichtigsten Parameter eines KNN.

Warum künstliche neuronale Netze?

Das Wissen, das man braucht, um ein Problem zu lösen, wird im KNN nicht explizit repräsentiert, sondern verteilt im gesamten Netzwerk aus Verbindungen und Schwellwertelementen gespeichert. Dies ist ein grundlegender Unterschied zur Symbolverarbeitung und einer der wesentlichen Gründe, warum neuronale Modelle als Mechanismus zur Simulation menschlicher Intelligenz verwendet werden. Traditionelle KI-Programme, basierend auf exakten ?Wenn-dann?-Beziehungen der Logik, sind anfällig bei unvollständigen oder ungenauen Aussagen. Der Ansatz mittels künstlicher neuronaler Netze ist hier toleranter.

Alles, was ein KNN gelernt hat, schlägt sich in seinen Verbindungsgewichten nieder. Die Nachvollziehbarkeit der Lösung ist dabei sehr schwierig. Bestenfalls lässt sich nachweisen, dass eine Lernaufgabe vollständig gelöst ist, ohne zu wissen, wie dies geschieht. Trotzdem scheinen KNN aufgrund der verteilten Speicherung von Wissen in einer großen Anzahl von einfachen Elementen eher in der Lage zu sein, assoziative Beziehungen zu unscharfen Eingabeinformationen herzustellen und entsprechende Ausgaben zu erzeugen. Für bestimmte Probleme der Bild- und Sprachverarbeitung sind neuronale Netze daher besonders gut geeignet.

(c) Bibliographisches Institut & F. A. Brockhaus AG, 2005
 
@ flame

Jo warum nicht.

Werd mir dann auch nochmal was nettes ausdenken.

Wollen wir aufteilen wer welche Sinne erledigt und die nachher includen ins Basisprogramm?!

MfG,

Teekayo2

Ps:
Hab gerade ne sehr interessante VOX-Reportage gesehen über globale verdunkelung uind wie diese im Zusammenspiel mit der globalen erwärmung uns in nicht 100 Jahren umbringen kann ---> Tipp!!
 
Hier mal mein kleiner Beitrag zum Thema, leider steckt hinter der gesamten Thematik sehr viel recht komplexe Mathematik auf die ich hier nicht weiter eingehen werde, wenn es wen interessieren sollte kann ich das ja noch ergänzen (aber nur konkrete Fragen bitte). Hier hier mal ein Beispielcode eines Neuronalen Netzes in C++. Hierbei handelt es sich um ein simples Beispiel für ein Hopkins Netzwerk zur Muster Erkennung. Der Computer arbeitet nicht mit Sinnen sondern mit Nullen und Einsen deshalb geht es in diesem Beispiel um die Erkennung eines simplen 1010 Musters.

Code:
#include <stdio.h>
#include <iostream>
#include <math.h>
#define n 4 //anzahl der neuronen im netz
using std::cout;
//deklaration der neuronen klasse
class Neuron {
	public:
	int WichtungsVektor[4];
	Neuron() {};
	Neuron(int *j) ;
	int bewerten(int, int*);
	protected:
	int aktivierung;
	friend class NeuronalesNetz;
};
//deklaration der netzwerkklasse
class NeuronalesNetz {
	public:
	Neuron NeuronenArray[4];
	int ausgabe[4];
	void aktivierung(int j[4]);
	NeuronalesNetz(int*,int*,int*,int*);
};
//konstruktor der einen zeiger als parameter übernimmt
Neuron::Neuron(int *j){
for(int i=0;i<4;i++){
WichtungsVektor[i]=*( j+i);
}
}

int Neuron::bewerten(int m, int *x){
int a=0;
for(int i=0;i<m;i++){
a += x[i]*WichtungsVektor[i];
}
return a;
}

NeuronalesNetz::NeuronalesNetz(int a[4],int b[4],int c[4],int d[4]) {
NeuronenArray[0] = Neuron(a);
NeuronenArray[1] = Neuron(b);
NeuronenArray[2] = Neuron(c);
NeuronenArray[3] = Neuron(d);
}
void NeuronalesNetz::aktivierung(int *muster){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
cout<<"\n NeuronenArray["<<i<<"].WichtungsVektor["<<j<<"] ist "<<NeuronenArray[i].WichtungsVektor[j];
}
NeuronenArray[i].aktivierung = NeuronenArray[i].bewerten(4,muster);
cout<<"\n aktivierung ist "<<NeuronenArray[i].aktivierung;
if(NeuronenArray[i].aktivierung>=0) { ausgabe[i]=1;cout<<"\n ausgabe ist 1 \n";}
	else { ausgabe[i]=0; cout<<"\n ausgabe value ist 0 \n";}
}
}
int main (){
//hier wird das Muster auf 1010 festgelegt
int muster1[]= {1,0,1,0};
/* im gegensatz zu neuronalen netzen die erst "lernen" müssen,
hierbei gibt es überwachtes und unüberwachtes lernen,
gebe ich verschiedene wichtungen vor*/
int wichtung1[]= {0,-3,3,-3};  
int wichtung2[]= {-3,0,-3,3};
int wichtung3[]= {3,-3,0,-3};
int wichtung4[]= {-3,3,-3,0};
cout<<"\n Hopfielddemo \n";
//der konstruktor wird aufgerufen, das netz erstellt
NeuronalesNetz demonetz(wichtung1,wichtung2,wichtung3,wichtung4);
//hier wird das muster an die aktivierungsfunktion und damit an das Netz übergeben
demonetz.aktivierung(muster1);
//in dieser for schleife wird das muster mit dem gespeicherten verglichen
for(int i=0; i<4; i++)	{
		if (demonetz.ausgabe[i] != muster1[i])break;
		else if (i==3)cout<<"Muster Erkannt!!111!!1! :)\n!";
}
return 0;
}

Leider ist es nun schon recht spät und ich habe kein Bock atm auf weitere Ausführungen sry ;) finde es aber toll das sich jemand hier fürs Thema interessiert. Hier nochmal ein paar Beispiele in denen Neuronale Netze bereits jetzt in der Praxis angewendet werden:
-Handschriftenerkennung
-IBM entwickelte vor etlichen Jahren bereits ein Antivirenprogramm auf Basis von NN
-Robotik
-im Bereich Überwachung und Navigation gibts Prototypen usw...
Das angesprochene Neuronale Netz das die Börsenentwicklungen "vorhersagen" sollte ist leider gescheitert. Derzeitige neuronale Netze scheitern meiner Meinung nach an der Leistung der aktuellen Computer. Zumindestens um mit unserem heutigem Wissensstand über neuronale Netze ein menschliches Gehirn auch nur annährend zu immitieren.
 
Yo is ja klasse das das Thema soviele interessiert!
Aber was bringsts jetzt in den verschiedensten Sprachen immer und immer wieder mein Beispiel zu verbessern.

Im enteffekt war es ein Beispiel zur veranschaulichung.
Also nichts was nach verbesserung verlangt sondern lediglich angesehn zu werden und vom Grundgedanken verstanden. Mehr nicht!

Derzeitige neuronale Netze scheitern meiner Meinung nach an der Leistung der aktuellen Computer.
Deswegen wird ja auch von "Gehirne züchten" geredet.
Wenn man die Leistung unserers Gehirns komplett auf einen Zweig bringen würde, bsp. nur zum rechnen würden wir sicherlich schnellere Ergebnisse liefern als unsere heutigen Rechner.

MfG,

Teekayo2
 
Zurück
Oben