DE68927474T2 - Neuro-Rechner - Google Patents

Neuro-Rechner

Info

Publication number
DE68927474T2
DE68927474T2 DE68927474T DE68927474T DE68927474T2 DE 68927474 T2 DE68927474 T2 DE 68927474T2 DE 68927474 T DE68927474 T DE 68927474T DE 68927474 T DE68927474 T DE 68927474T DE 68927474 T2 DE68927474 T2 DE 68927474T2
Authority
DE
Germany
Prior art keywords
processor
processors
row
synapse
column
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68927474T
Other languages
English (en)
Other versions
DE68927474D1 (de
Inventor
Toshio Akabane
Yoshiji Fujimoto
Naoyuki Fukuda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP63330971A external-priority patent/JPH0690704B2/ja
Priority claimed from JP1024307A external-priority patent/JPH0736182B2/ja
Priority claimed from JP1127274A external-priority patent/JPH0782482B2/ja
Application filed by Sharp Corp filed Critical Sharp Corp
Publication of DE68927474D1 publication Critical patent/DE68927474D1/de
Application granted granted Critical
Publication of DE68927474T2 publication Critical patent/DE68927474T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Multi Processors (AREA)

Description

    HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
  • Die Erfindung betrifft einen Neurocomputer gemäß dem Oberbegriff des unabhängigen Anspruchs 1. Ein derartiger Neurocomputer ist aus The Computer Journal, Vol 30, Nr. 5, Oktober 1987, Seiten 413-419; B.M. Forest et al: "Implementing Neural Network Models On Parallel Computers", bekannt.
  • 2. Beschreibung der einschlägigen Technik
  • Universalcomputer hoher Geschwindigkeit werden dazu verwendet, große Neuralnetzwerke zu simulieren, die auf einem Neuronenmodell aufbauen. Jedoch benötigt es beachtlich lange Zeit, den Lernprozess sogar kleiner Neuralnetzwerke zu simulieren. Daher benötigt es einige Wochen, den Lernprozess mittlerer Neuralnetzwerke zu simulieren. Daher wurde in jüngerer Zeit Parallelverarbeitung unter Verwendung von Mikroprozessoren eingeführt, um hohes Funktionsvermögen zu erzielen. Es wurden verschiedene Neuronenmodelle entwickelt, jedoch wird im allgemeinen in einem Neuralnetzwerk nur ein Typ von Neuronenmodell verwendet, und es ist selten, eine Anzahl von Modellen in einem Neuralnetzwerk zu verwenden. Wie oben beschrieben, ist davon auszugehen, dass, da in einem Neuralnetzwerk dieselben Berechnungen zum Simulieren von Neuronen ausgeführt werden, Parallelverarbeitung für die Simulation eines Neuralnetzwerks geeignet ist. Daher wurden Simulationen unter Verwendung paralleler Universalcomputer versucht. Da große Neuralnetzwerke eine große Anzahl von Verbindungen zwischen Neuronen enthalten, ist es ein kritischer Faktor, ein Verfahren zum Verbinden der Prozessoren auszuwählen, wenn die Simulation durch viele Prozessoren erfolgt. Es wurden verschiedene Systeme entwickelt, wie eine Maschen(Gitter)verbindung, eine Kreuzschienenverbindung, eine Drei-Typ-Verbindung, eine Mehrniveauüberkreuzungsverbindung, eine Würfelverbindung und dergleichen, jeweils als Verfahren zum Verbinden paralleler Computer. Insbesondere werden die Drei-Typ-Verbindung, die Mehrniveau-Kreuzschienenverbindung und die Würfelverbindung als geeignet zum Simulieren von Neuralnetzwerken angesehen. Wenn jedoch die Anzahl von Prozessoren zunimmt, treten solche Probleme auf, dass die Anzahl der Schaltstufen groß wird, die Übertragungskapazität klein wird und die zunehmende Anzahl von Leitungsschnittstellen bewirkt, dass die Realisierung schwierig wird. Daher wurde kein Verfahren zum Verbinden von Prozessoren bei paralleler Verarbeitung zur wirkungsvollen Simulation von Neuralnetzwerken erstellt.
  • Da Neuralnetzwerke aus Neuronen vom selben Typ bestehen, ist durch Parallelverarbeitung durch viele Prozessoren Simulation mit hoher Geschwindigkeit zu erwarten. Jedoch existieren bei großen Neuralnetzwerken, die den Synapsen von Neuronen entsprechen, viele Verbindungen, und die Anzahl der Verbindungen steigt im wesentlichen proportional zum Quadrat der Anzahl von Neuronen an. Daher sind dann, wenn die gesamten Neuronen in eine geeignete Anzahl von Gruppen unterteilt werden, die jeweils über einen Prozessor verfügen, und eine Simulation durch viele Prozessoren ausgeführt wird, Verbindungen zum Übertragen von Information zwischen den Prozessoren erforderlich, da Verbindungen zwischen den Neuronen in jeder der Gruppen existieren. Wenn die Anzahl der Prozessoren erhöht wird, um das Funktionsvermogen zu verbessern, nimmt die Anzahl der Verbindungen zwischen den Prozessoren im wesentlichen proportional zum Quadrat der Anzahl der Prozessoren zu. Ferner muss für Hochgeschwindigkeitsübertragung zwischen den Prozessoren die Übertragungskapazität vergrößert werden und die Übertragungsgeschwindigkeit muss dadurch erhöht werden, dass parallele Übertragungsleitungen bereitgestellt werden. D.h., dass dann, wenn die Anzahl der Parallelprozessoren für Hochgeschwindigkeitssimulation erhöht wird, die Anzahl der Verbindungen zwischen den Prozessoreri übermäßig ansteigt, was die Realisierung unmöglich macht.
  • Das Dokument Computer Journal, Vol 30, Nr. 5, Oktober 1987, Seiten 413- 419, B.M. Forest et al:"Implementing Neural Network Models On Parallel Computers" offenbart eine Berechnungsoberfläche mit Parallelprozessoren, wobei jeweils bis zu vier der Nachbarn gemeinsam genutzt werden. Jedoch beschreibt dieser Artikel im Computer Journal nicht, wie die Berechnungs oberfläche als Neuralnetzwerk zu realisieren sei und wie die Verarbeitungselemente auf körperliche Prozessoren zu verteilen seien, um ein Gleichgewicht der Belastungen zwischen den körperlichen Prozessoren zu erzielen.
  • Das Dokument Proceedings of the 1983 International Conference On Parallel Processing, Columbus, Ohio, August 1983, Seiten 95 bis 105, IEEE, New York, USA, T. Hoshino et al: "Highly parallel processor array "PAX" for wide scientific applications" beschreibt ein hochparalleles Verarbeitungseinheitenarray mit zweidimensionalem Ende um die Interprozessorverbindung zum nächsten Nachbarn herum. Das Verarbeitungseinheitsarray ist in einem Teil desselben über die Steuereinheit mit dem Hostcomputer verbunden.
  • Das Dokument 1988 Cern School Of Computing, Oxford, August 1988, Seiten 104-126; P.C., TRELEAVEN: "Parallel Architectures For Neuro-Computers" offenbart ein System mit Neuralnetzwerk-Simulatorkarte, die in einem dreidimensionalen Array verbunden sind, und mit einem PC-Hostcomputer als Kopf. Das Array ist in einem Teil desselben mit dem PC verbunden. Jedoch existiert keine Beschreibung, dass jeder der körperlichen Prozessoren mit benachbarten körperlichen Prozessoren und mit einer Teilgruppe körperlicher Prozessoren, die mit dem Hostcomputer Daten austauschen können, verbunden sei.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der Erfindung, einen Neurocomputer zu schaffen, der aus parallelen Prozessoren besteht, die leicht miteinander verbunden werden können, der hohe Parallelität bei der Funktion erzielt und verbesserten Wirkungsgrad bei der Parallelverarbeitung zeigt und daher dazu in der Lage ist, Hochgeschwindigkeitsverarbeitungen dadurch auszuführen, dass er die körperlichen Prozessoren virtuellen Prozessoren auf solche Weise zuordnet, dass die Verarbeitungsbelastung zwischen den jeweiligen körperlichen Prozessoren ausgeglichen werden kann.
  • Gemäß der Erfindung kann die oben angegebene Aufgabe durch einen Neurocomputer gelöst werden, der mit einem Hostcomputer (400) verbunden ist und eine Anzahl verschiedener Arten von Verarbeitungselementen aufweist, die an jedem Knoten eines Gitters liegen und mit benachbarten Verarbeitungselementen verbunden sind, wobei das Gitter der Verarbeitungselemente erste Rechteckbereiche (1-P, 1-Q) von Verarbeitungselementen aufweist und die Anzahl der Verarbeitungselemente (O, C) in eine erste und einen zweite Gruppe unterteilt ist, wobei die erste Gruppe aus Arten der Verarbeitungselemente besteht, die Daten vom und an den Hostcomputer empfangen bzw. senden und vom und an jedes der benachbarten Verarbeitungselemente in einer zweiten Gruppe der zwei Gruppen empfangen bzw. senden können, und wobei die zweite Gruppe aus Arten der Verarbeitungselemente besteht, die Daten von und an jedes der benachbarten Verarbeitungselemente in entweder der ersten Gruppe oder der zweiten Gruppe empfangen bzw. senden können, gekennzeichnet durch:
  • - eine Anzahl zweiter Rechteckbereiche (1-p, 1-q) des Gitters aus Verarbeitungselementen, wobei jeder der zweiten Rechteckbereiche jeweils einem von körperlichen Prozessoren (410-435) entspricht und eine Anzahl verschiedener Arten der Verarbeitungselemente enthält, so daß eine Anzahl der Verarbeitungselemente jeweils auf jeden der körperlichen Prozessoren abgebildet ist;
  • - mehrere körperliche Prozessoren, wobei jeder dieser körperlichen Prozessoren mit denjenigen körperlichen Prozessoren verbunden ist, die benachbart zu ihm liegen, und eine Teugruppe der körperlichen Prozessoren dazu in der Lage ist, Empfangs-und Ausgabevorgänge von bzw. zum Hostcomputer auszuführen; und
  • - eine Einrichtung (S1-S6; Fig. 20) zum Verteilen eines Abschnitts oder einer Anzahl unterteilter Abschnitte, wie in der Anzahl erster Rechteckbereiche von Verarbeitungselementen ausgebildet, an die Anzahl körperlicher Prozessoren auf solche Weise, daß die zweiten Rechteckbereiche, wie sie jedem der körperlichen Prozessoren zugeordnet sind, eine gleiche oder beinahe gleiche Anzahl der Anzahl unterteilter Abschnitte enthalten;
  • - wobei die Verteilungseinrichtung einen Abschnitt oder eine Anzahl unterteilter Abschnitte, wie in der Anzahl erster Rechteckbereiche von Verarbeitungselementen ausgebildet, an die ersten Prozessoren verteilen kann, wobei die unterteilten Abschnitte dadurch erzeugt werden, daß die Anzahl der Spalten der Verarbeitungselemente in jedem der ersten Rechteckbereiche genau oder mit einem jeweiligen Rest durch die Anzahl aller körperlichen Prozessoren oder durch die Anzahl der körperlichen Prozessoren in einer Spalte geteilt wird und die Anzahl der Zeilen der Verarbeitungselemente in jedem der ersten Rechteckbereiche genau oder mit einem jeweiligen Rest durch die Anzahl aller körperlichen Prozessoren oder durch die Anzahl körperlicher Prozessoren in einer Zeile geteilt wird, und daß einer oder eine Anzahl der unterteilten Abschnitte in jedem der ersten Rechteckbereiche mit gleicher oder beinahe gleicher Anzahl jedem der körperlichen Prozessoren durch Permutation von Spalten und Zeilen im Gitter der Verarbeitungselemente zugeordnet wird, so daß ein Ausgleich der Belastungen zwischen körperlichen Prozessoren unter der Anzahl der jedem der körperlichen Prozessoren zugeordneten Verarbeitungselemente erzielt wird.
  • Die abhängigen Ansprüche 2 bis 11 spezifizieren jeweils vorteilhafte Entwicklungen hierzu.
  • Vorzugsweise umfassen die Prozessorelemente der ersten Gruppe eine Anzahl virtueller Prozessoren, die aus Eingangsprozessoren, Ausgangsprozessoren und Eingangs/Ausgangs-Prozessoren besteht.
  • Vorzugsweise bestehen die Prozessorelemente der zweiten Gruppe aus zwei Typen, wobei der eine dieser Typen Produkt-Summen-Funktionen, Gewichtungsaktualisierungsfunktionen und dergleichen entsprechend den Funktionen einer Synapse ausführen kann und der andere dieser Typen Schwellenwertfunktionen und neurodynamische Funktionen, die den Aktivierungsfunktionen eines Zellenkörpers entsprechen, ausführen kann.
  • Ferner umfassen die Prozessorelemente der zweiten Gruppe vorzugsweise eine Anzahl virtueller Prozessoren, die aus Synapsenprozessoren und Zellenprozessoren bestehen.
  • Weitere Aufgaben und Vorteile der Erfindung werden aus der folgenden Beschreibung deutlich, wobei auf die beigefügten Zeichnungen Bezug zu nehmen ist, die bevorzugte Ausführungsbeispiele der Erfindung deutlich zeigen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist eine Ansicht, die das Modell eines üblichen Neurons veranschaulicht;
  • Fig. 2 ist eine Ansicht, die die Struktur eines üblichen Neuralnetzwerks veranschaulicht;
  • Fig. 3 ist eine Ansicht, die die Struktur eines mehrschichtigen Perzeptrons veranschaulicht;
  • Fig. 4 ist eine Ansicht, die die Struktur eines Ausführungsbeispiels der Erfindung veranschaulicht, wobei eine toroidförmige Gitterstruktur mit einem Synapsenprozessor, einem Zellenprozessor, einem Eingangsprozessor, einem Ausgangsprozessor und einem Eingangs/Ausgangs-Prozessor dargestellt ist;
  • Fig. 5 ist eine Ansicht, die den Simulationsablauf eines mehrschichtigen Perzeptrons zeigt;
  • Fig. 6 ist eine Ansicht, die die Art der Unterteilung der Gruppen virtueller Prozessoren in rechteckige Bereiche gemäß der Erfindung zeigt;
  • Fig. 7A bis 7C sind Ansichten, die jeweils die Struktur eines Neurocomputersystems, das aus in Form eines toroidförmigen Gitters verbundenen Knotenprozessoren besteht, und die Innenstruktur jedes der Knotenprozessoren zeigen;
  • Fig. 8 ist eine Ansicht, die ein spezielles Beispiel eines dreischichtigen Perzeptrons veranschaulicht;
  • Fig. 9 ist eine Ansicht, die die Struktur eines toroidförmigen Gitters mit einem Synapsenprozessor, einem Zellenprozessor, einem Eingangsprozessor, einem Ausgangsprozessor und einem Eingangs/Ausgangs-Prozessor zum Ausführen einer Simulation des in Fig. 5 dargestellten dreischichtigen Perzeptrons zeigt;
  • Fig. 10A bis 10B sind Ansichten, von denen jeweils eine unausgeglichene Belastung jedes der Knotenprozessoren zeigt, wenn das dreischichtige Perzeptron simuliert wird;
  • Fig. 11a bis 11b sind Ansichten, von denen jede einen Zustand veranschaulicht, in dem die unausgeglichene Belastung durch Permutieren der Spalten ausgeglichen ist;
  • Fig. 12 ist eine Ansicht, die die Struktur eines toroidförmigen Gitters mit einem Synapsenprozessor, einem Zellenprozessor, einem Eingangsprozessor, einem Ausgangsprozessor und einem Eingangs/Ausgangs-Prozessor zeigt, nachdem die unausgeglichene Belastung ausgeglichen wurde;
  • Fig. 13 ist eine Ansicht, die einen Neurocomputer zeigt, der aus Knotenprozessoren besteht, die in Form eines toroidförmigen Gitters aus zwei Zeilen und drei Spalten gekoppelt sind;
  • Fig. 14 ist eine Ansicht, die einen Neurocomputer gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht;
  • Fig. 15 ist eine Ansicht, die das Perzeptronmodell veranschaulicht;
  • Fig. 16A, 16B, 16C und 16D sind Ansichten, die jeweils ein Neuralnetzwerkmodell veranschaulichen;
  • Fig. 17 ist eine Ansicht, die die Matrix eines virtuellen Prozessors zum Simulieren des oben angegebenen Perzeptronmodells veranschaulicht;
  • Fig. 18 ist eine Ansicht, die einen Teil der Matrix des oben angegebenen virtuellen Prozessors veranschaulicht;
  • Fig. 19 ist eine Ansicht, die einen Teil der Matrix der tatsächlichen Prozessoren veranschaulicht, denen die oben angegebenen virtuellen Prozessoren zugeordnet sind;
  • Fig. 20 ist ein Flussdiagramm, das den Ablauf zum Zuordnen der oben angegebenen virtuellen Prozessoren zu den körperlichen Prozessoren veranschaulicht;
  • Fig. 21 ist eine Ansicht, die ein Hopfield-Modell veranschaulicht;
  • Fig. 22 ist eine Ansicht, die die Matrix virtueller Prozessoren zum Simulieren des oben angegebenen Hopfieldmodells veranschaulicht;
  • Fig. 23A bis 23B sind Ansichten, von denen jede einen Teil der Matrix der körperlichen Prozessoren veranschaulicht, auf die die oben angegebenen virtuellen Prozessoren projiziert sind;
  • Fig. 24A, 24B, 24C und 24D sind Ansichten, die jeweils die Matrix der virtuellen Prozessoren zum Simulieren des Modells des oben angegebenen Neural netzwerks veranschaulichen: und
  • Fig. 25A, 25B, 25C, 25D und 25E sind Ansichten, von denen jede ein Matrixmuster veranschaulicht, in das vorbestimmte Rechteckbereiche der Matrix der oben angegebenen virtuellen Prozessoren eingeteilt sind.
  • Fig. 26 ist eine Ansicht, die den Aufbau eines zweiten Ausführungsbeispiels der Erfindung veranschaulicht, wobei eine Rechteckgitterarchitektur mit einem Synapsenprozessor, einem Zellenprozessor, einem Eingangsprozessor, einem Ausgangsprozessor und einem Eingangs/Ausgangs-Prozessor dargestellt ist;
  • Fig. 27 ist eine Ansicht, die die Art der Unterteilung der Gruppen virtueller Prozessoren in Rechteckbereiche gemäß der Erfindung veranschaulicht;
  • Fig. 28A bis 28C sind Ansichten, von denen jede die Architektur eines Neurocomputersystems, das aus in Form eines Rechteckgitters verbundenen Knotenprozessoren besteht, und die jedem Knotenprozessor zugeordneten virtuellen Prozessoren veranschaulicht;
  • Fig. 29 ist eine Ansicht, die die Anordnung eines Rechteckgitters veranschaulicht, das einen Synapsenprozessor, einen Zellenprozessor, einen Eingangsprozessor, einen Ausgangsprozessor und einen Eingangs/Ausgangs-Prozessor zum Simulieren des in Fig. 5 dargestellten dreischichtigen Perzeptrons aufweist;
  • Fig. 30 ist eine Ansicht, die die umgeordnete Anordnung eines Rechteckgitters mit einem Synapsenprozessor, einem Zellenprozessor, einem Eingangsprozessor, einem Ausgangsprozessor und einem Eingangs/Ausgangs-Prozessor nach dem Ausgleichen der Belastung der Knotenprozessoren veranschaulicht;
  • Fig. 31 ist eine Ansicht, die einen Neurocomputer veranschaulicht, der aus Knotenprozessoren besteht, die in Form eines Rechteckgitters mit zwei Zeilen und drei Spalten verbunden sind.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Es existieren verschiedene Modelle zu Neuralnetzwerken. Im allgemeinen kann das Neuronenmodell durch die folgende Gleichung wiedergegeben werden, wie sie in Fig. 1 veranschaulicht ist:
  • Die Gleichung (1) entspricht der Funktion einer Synapse, wobei es sich um die Produkt-Summen-Operation der Koeffizienten der Verbindungen (der Gewichtung) der Synapsen und der entsprechenden Eingangsinformation handelt. Die Gleichung (2) entspricht der Funktion eines Zellenkörpers, wobei diese Gleichung (2) auf eine übliche Weise angegeben ist, gemäß der eine Änderung abhängig vom Modus des Neurons erfolgt. Im Fall eines Perzeptrons ist dies in Form einer S-Funktion ausgedrückt, während es im Fall eines Hopfield- Modells in Form einer Differentialgleichung ausgedrückt ist.
  • Die Neuralnetzwerke werden in einer allgemeinen Form ausgedrückt, wie sie in Fig. 2 dargestellt ist. Vorausgesetzt, dass die Eingangsinformation in die neuralen Netzwerke den Spaltenvektor x = (x&sub1;, x&sub2;, ... xh, ..., xH)T bildet, die Ausgangsinformationen aus allen neuralen Netzwerken den Spaltenvektor z = (z&sub1;, z&sub2; ...zj, ..., zJ)T bilden, die Zwischenergebnisse den Spaltenvektor y = (y&sub1;, y&sub2;, ...yj, ..., yJ)T bilden, die Gewichtung der Matrix W = [wij] entspricht, kann das Modell neuraler Netzwerke wie folgt ausgedrückt werden, indem ( )T die Transponierte zwischen dem Spaltenvektor und dem Zeilenvektor repräsentiert:
  • y = w v (3),
  • wobei v = [xT, zT] = (x1, x2, ..., xH, z1, z2, ..., zJ) gilt und [,] die Verkettung der Vektoren repräsentiert.
  • z = F(y) = (F(y1), (F(y2), ..., F(y1), ..., F(yJ))T (4).
  • Wenn die Zeilenelemente der Matrix W durch den Zeilenvektor wj = (w1,j, w2,j, ..., wh,j, ..., wH,j, ..., wH+z, j, ..., wH+j, j, ...wJ+H, j) ausgedrückt werden, kann die Gleichung (1) wie folgt ausgedrückt werden, in der das innere Vektorprodukt verwendet ist:
  • yj = wj v (5).
  • Ferner kann durch Zerlegen der Gleichung (5) yji durch die Rekursionsformel der Gleichung (6) ausgedrückt werden:
  • yji = yji-1 + wij vi (6)
  • Gemäß dem Modell neuraler Netzwerke dieses Typs entsprechen die Gleichungen (3), (5) und (6) der Funktion jeder der Synapsen, wobei die Funktion die Produkt-Summen-Operation des Koeffizients der Verbindung (Gewichtung) der Synapse und der Eingangsinformation der neuralen Netzwerke und der Ausgangsinformation der Zelle ist. Die Gleichung (4) entspricht der Funktion jeder der Zellenkörper.
  • Gemäß der Erfindung wird, um zum Ausführen der größten Anzahl von Produkt- Summen-Operationen auf parallele Weise beim Berechnen der neuralen Netzwerke die Operation der Gleichung (6), durch die die Partialsumme, d.h. die Zerlegung der Produkt-Summen-Operation, berechnet, und die Einspeicherung der Gewichtung, die bei dieser Berechnung erforderlich ist, ist in den Synapsenprozessorfunktionen enthalten. Die Berechnung der der Funktion des Zellenkörpers entsprechenden Gleichung (4) wird durch den Zellenprozessor ausgeführt. Der Synapsenprozessor und der Zellenprozessor sind so miteinander verbunden, dass sie ein Gitter bilden und Information mit dem oberen, dem unteren, dem rechten und dem linken Prozessor austauschen können. Im Fall der Gleichung (6) empfängt z.B. der Synapsenprozessor ein Signal vi, das vom oberen Synapsenprozessor übertragen wurde, und er führt die Produktoperation zwischen der Gewichtung wjj des Synapsenprozessors und dem Signal vi aus. Dann wird die vom linken Synapsenprozessor empfangene Partialsumme vji-1 zum Ergebnis der Produktoperation addiert, so dass eine neue Partialsumme yji = yji-1 + wij vi erhalten ist. Schließlich wird die so erhaltene neue Partialsumme an den rechten Synapsenprozessor übertragen. Andererseits überträgt der Synapsenprozessor das Signal vi, das vom oberen Synapsenprozessor übertragen wurde, an den unteren Synapsenprozessor. Wie oben beschrieben, wird die Partialsumme durch die Synapsenprozessoren einer Zeile berechnet. Wenn der Prozess den Zellenprozessor in jeder Zeile erreicht, wird die Summierung der Produktoperationen abgeschlossen. Das Ergebnis der Produkt-Summen-Operation wird zur Berechnung des durch die Gleichung (4) gegebenen Werts zj im Zellenprozessor verwendet. Die Ausgangsinformation zj des Zellenkörpers wird an den unteren Synapsenprozessor übertragen, um bei der nächsten Berechnung verwendet zu werden. Da in jeder Spalte einer oder kein Zellenprozessor liegt, überlappt die Ausgangsinformation aus dem Zellenprozessor nicht mit der Ausgangsinformation von den anderen Zellenprozessoren. Die Produkt-Summen-Operation für das Neuralnetzwerkmodell, wie vom Synapsenprozessor und dem Zellenprozessor ausgeführt, die in Gitterform angeordnet sind, kann auch beim Lernvorgang von Neuralnetzwerken verwendet werden.
  • Wenn angenommen wird, dass der Synapsenprozessor, der Zellenprozessor, der Eingangsprozessor, der Ausgangsprozessor, der Eingangs/Ausgangs-Prozessor virtuelle Prozessoren sind, werden die Gruppen virtueller Prozessoren, die so angeordnet sind, dass J + 1 Zeilen und H + J Spalten gebildet sind, in vertikaler Richtung in P Abschnitte und in horizontaler Richtung in O Abschnitte unterteilt, ein körperlicher Prozessor wird jedem der wie oben angegeben unterteilten Rechteckabschnitte zugeordnet und ein körperlicher Prozessor wird angeschlossen, um ein toroidförmiges Gitter aus P Zeilen und Q Spalten zu bilden, wobei der körperliche Prozessor die vom Synapsenprozessor ausgeführte Produkt-Summen-Operation in paralleler Weise ausführen kann. Die Gleichung (6) kann in eine Gleichung für jeden der körperlichen Prozessoren wie folgt umgeschrieben werden:
  • wobei Ilq und Iuq die erste Spaltennummer bzw. die letzte Spaltennummer des Rechteckbereichs repräsentieren, entsprechend dem körperlichen Prozessor in der Zeile P und der Spalte Q. Die Produkt-Summen-Operation in der hinteren Hälfte auf der rechten Seite der Gleichung (7) kann durch jeden der körperlichen Prozessoren parallel ausgeführt werden. Die Berechnung der vom Zellenprozessor ausgeführten Gleichung (4) kann nicht vor Abschluss der Berechnung yj ausgeführt werden. Jedoch kann jeder körperliche Prozessor, der die Zellenprozessoren enthält, die Berechnungen der Gleichung (4) parallel ausführen, wenn die Berechnung von yj abgeschlossen ist. Andererseits kann die Übertragung zwischen den tatsächlichen Prozessoren keinerlei Engpass bilden, da die Übertragung von yjq an den benachbarten körperlichen Prozessor während der Berechnung des nächsten Werts yj+1q erfolgen kann.
  • Nun folgt eine Beschreibung für die Simulation eines mehrschichtigen Perzeptrons als Anwendungsbeispiel für die Erfindung. Das Neuronenmodell eines Perzeptrons kann durch die folgenden Gleichungen wiedergegeben werden, vorausgesetzt, dass die Eingangsinformation x1 ist und der Verbindungskoeffizient wij ist:
  • Gemäß diesem Modell entspricht die Gleichung (8) der Funktion der Synapsen, die die Summe aus den Produkten des Verbindungskoeffizienten (des Gewichts) der Synapse und dem Eingangswert ist. Die Gleichung (9) entspricht der Funktion des Zellenkörpers, wobei es sich bei einer S-Funktion um einen Schwellenvorgang handelt. Wie oben beschrieben, kann im Perzeptronmodell die Berechnung für ein Neuron in die einer Synapse entsprechende Produkt- Summen-Operation und die einem Zellenkörper entsprechende Berechnung aufgeteilt werden.
  • Das Modell des mehrschichtigen Perzeptrons, wie in Fig. 3 dargestellt, kann wie folgt wiedergegeben werden, wobei das n-te Eingangssignal in das Neuralnetzwerk xh(n) [h = 1, 2, ..., H, n = 1, 2, ..., N) ist, das Ausgangssignal für dieses Eingangssignal zj(n) = [j = 1, 2, ..., I, ..., J, n = 1, 2, ..., N] ist und der Koeffizient der Verbindung (die Gewichtung) der neuralen Netzwerke bei der n-ten Lerniteration wij (n) (i = 1, 2, ..., H + J, j = 1, 2, ... J) ist: [Für die erste Zwischenschicht] [Für die Zwischenschicht mit Ausnahme der ersten Zwischenschicht und der Ausgangsschicht]
  • Wenn ferner angenommen wird, dass der dem Eingangswert xh(n) entsprechende Zielausgangswert tj(n) ist, wird ein überwachter Lernvorgang durch den in den Gleichungen (14) bis (19) dargestellten Rückwärtsfehlerausbreitungs- Algorithmus ausgeführt:
  • Δwij(n) = α δj(n) xi(n) [i = 1, 2,...,H] (14)
  • Δwij(n) = α δj(n) zi-H(n) [i = H+1, H+2,...,H+j] (15)
  • wij(n+1) = wij(n) + Δwij(n) + β wij(n-1) (16)
  • [Ausgangsschicht]
  • δj(n) = f' (yj(n)) (tj(n) - zj(n))
  • = [zj(n) (1 - zj(n)] (tj(n) - zj(n)) (17) [Zwischenschicht]
  • δj(n + 1) = f' (yj(n) Sj(n)
  • = [zj(n) (1 - zj(n)] Sj(n) (19)
  • wobei die Parameter α und β die Koeffizienten zum Ermitteln des Lernzustands kennzeichnen.
  • Beim oben angegebenen Berechnungsvorgang zum Lernen kann eine solche Zuordnung erfolgen, dass die Gleichungen (14), (15), (16) und (18) der Funktion einer Synapse entsprechen, während die Gleichungen (17) und (19) so beschaffen sein können, dass sie der Funktion des Zellenkörpers entsprechen. Daher können die Gleichungen (10), (12), (14), (15), (16) und (18) dem Synapsenprozessor zugeordnet werden, während die Gleichungen (11), (13), (17) und (19) dem Zellenprozessor zugeordnet werden können.
  • Bei der Berechnung eines mehrschichtigen Perzeptrons werden die Berechnungen sequentiell für jede der Schichten von der Eingangsschicht zur Ausgangsschicht in Vorwärtsrichtung ausgeführt. Bei der Berechnung des Lernvorgangs werden die Berechnungen sequentiell für jede der Schichten von der Ausgangsschicht zur Eingangsschicht in Rückwärtsrichtung ausgeführt. Daher können unter der Annahme, dass die Anzahl der Schichten mit Ausnahme der Eingangsschicht M, L = M - 1 gilt und folgendes gilt:
  • vi (n, m) = xi(n) [i = 1, 2,...,H] (20)
  • vi (n, m) = zj(n, m) [i = H + 1, H + 2,...,H + J]
  • i = g(j) = H + j (21)
  • Die Gleichungen (10) bis (19) werden wie folgt ausgedrückt, wenn der Berechnungsprozess unterteilt wird:
  • [Vorwärtsaktivierungsprozess]
  • zj (n, 0) = 0 (22)
  • zj (n) = zj (n, M) (25)
  • [Rückwärtsausbreitungs-Lernprozess]
  • Δwij(n) = α δj(n, L) vi(n, M) (26)
  • wij(n+1) = wij(n) + Δwij(n)+β Δwij(n-1) (27)
  • [Ausgangsschicht]
  • δj(n, l) = [zj(n) (1 - zj(n))] (tj(n) - zj(n) (28)
  • [Zwischenschicht]
  • δj (n, 0) = 0 (29)
  • δj (n, l + 1) = [zj(n) (1 - zj(n))] Sj(n, l) (31)
  • Ferner kann durch Zerlegen der Gleichung (23) yjk (n, m) mittels der folgenden Rekursionsformel der Gleichung (32) als Partialsumme ausgedrückt werden:
  • yjk(n, m) = yjk-1(n, m) + wk, j(n) vk(n, m)
  • [k = 1, 2,...,H + J] (32)
  • Auf ähnliche Weise kann die Gleichung (30) unter Verwendung der Partialsumme Sjk(n) in die Rekursionsformel der Gleichung (33) zerlegt werden:
  • Sjk(n, 1) = Sjk-1(n, 1) + δk (n, 1) wjk(n) (33)
  • Nach den vorstehend beschriebenen Vorbereitungserläuterungen wird nun ein Verfahren zum Ausführen der Simulation eines mehrschichtigen Perzeptrons unter Verwendung eines Synapsenprozessors, eines Zellenprozessors, eines Eingangsprozessors, eines Ausgangsprozessors und eines Eingangs/Ausgangs Prozessors, die in Form eines toroidförmigen Gitters miteinander verbunden sind, beschrieben.
  • Der Aufbau des Parallelverarbeitungssystems der fünf Typen von Prozessoren, nämlich des Synapsenprozessors, des Zellenprozessors, des Eingangsprozessors, des Ausgangsprozessors und des Eingangs/Ausgangs-Prozessors ist in Fig. 4 dargestellt, wobei den Synapsenprozessor repräsentiert, den Zellenprozessor repräsentiert, den Eingangsprozessor repräsentiert, den Ausgangsprozessor repräsentiert und den Eingangs/Ausgangs-Prozessor repräsentiert.
  • Die Prozessoren der oben beschriebenen Typen sind in Form eines Gitters aus (J + 1) Zeilen und (H + J) Spalten angeordnet, wobei vorausgesetzt ist, dass die Anzahl der externen Eingänge des Neuralnetzwerks H ist und die Anzahl der Neuronen J ist. In der 0-ten Zeile ist die Anzahl von H Eingangsprozessoren 100 bis 102, die Anzahl von 1 Ausgangsprozessoren 103 bis 104 und die Anzahl (J-I) Eingangs/Ausgangs-Prozessoren 105 bis 106 angeordnet. Von der ersten bis zur J-ten Zeile sind (H + J - 1) Synapsenprozessoren 110 bis 112, 114 bis 117, 119 bis 127, 129 bis 135, 137 bis 139, 141 bis 151, 153 bis 157 und 160 bis 165 und ein Zellenprozessor 113, 118, 128, 136, 140, 152, 158 und 166 angeordnet. Die Zellenprozessoren liegen in einer Diagonallinie von der ersten Zeile und (H + 1)-ten Spalte zur J-ten Zeile und (H + J)-ten Spalte.
  • Jeder der Synapsenprozessoren und der Zellenprozessoren ist mit dem oberen, unteren, linken und rechten Synapsenprozessor oder dem Zellenprozessor in Form eines Gitters verbunden. Die ganz rechten Synapsenprozessoren 116, 133 und 154 und der Zellenprozessor 166 sind jeweils mit den ganz linken Synapsenprozessoren 110, 121, 142 und 160 oder dem Zellenprozessor in jeweils derselben Zeile mittels Signalleitungen 170 bis 173 verbunden. Gleichzeitig sind die unteren Synapsenprozessoren 160 bis 165 und der Zellenprozessor 166 mit den Eingangsprozessoren 100 bis 102, den Ausgangsprozessoren 103 bis 104 oder den Eingangs/Ausgangs-Prozessoren 105 bis 106 in derselben Spalte durch Signalleitungen 180 bis 186 verbunden. Die Eingangsprozessoren 100 bis 102a, die Ausgangsprozessoren 103 bis 104 und die Eingangs/Ausgangs-Prozessoren 105 bis 106 sind ferner jeweils über Signalleitungen 190 bis 196 mit einem externen Prozessor verbunden. Als Ergebnis der errichteten Verbindungen bilden die Synapsenprozessoren, die Zellenprozessoren, die Ausgangsprozessoren und die Eingangs/Ausgangs-Prozessoren die Form eines toroidalen Gitters.
  • Weiterhin verfügt jeder Synapsenprozessor über ein 1-Bit-Verbindungsflag, das anzeigt, ob die Gewichtung verwendet ist, d.h., ob der Anschluß errichtet ist oder nicht. Der Synapsenprozessor ist so ausgebildet, dass er über die Funktion der Einspeicherung der Gewichtung wij(n) verfügt, wenn diese Gewichtung verwendet wird (wenn das Kopplungsflag = "1" ist). Der Zellenprozessor hat die Funktion des Einspeicherns des Ausgangswerts zj (n, m) der Zelle und des Zwischenwerts δj (n, l) der Berechnung beim Lernvorgang. Der Eingangsprozessor hat die Funktion des Zwischenspeicherns der Eingangsdaten. Der Eingangs/Ausgangs-Prozessor hat die Funktion des Zwischenspeicherns der Zieldaten.
  • Bei der Simulation eines mehrschichtigen Perzeptrons werden eine Vorwärtsverarbeitung, bei der die Ausgangsinformation aus dem Eingangssignal berechnet wird, und eine Rückwärtsverarbeitung, bei der der Lernvorgang mittels eines Rückwärtsausbreitungsverfahrens ausgeführt wird, ausgeführt, wobei die erstgenannte Verarbeitung nachfolgend als "Grundmodus" und die letztgenannte als "Lernmodus" bezeichnet wird. Der Lernmodus ist in einen Lernmodus 1, in dem der Zwischenwert δj (n) berechnet wird, und einen Lernmodus 2, in dem die Gewichtung aktualisiert wird, unterteilt. Wie es in Fig. 5 dargestellt ist, erfolgt der Lernvorgang im mehrschichtigen Perzeptron dadurch, dass das Zuführen von Trainingsdaten, Berechnungen gemäß dem Grundmodus, das Zuführen von Zieldaten, der Lernmodus 1 und der Lernmodus 2 wiederholt werden. Es wird nun eine Weise beschrieben, gemäß der die Lernverarbeitung beim in Fig. 5 dargestellten mehrschichtigen Perzeptron durch die in Fig. 4 dargestellten, in Toroidgitterform verbundenen Prozessorgruppen ausgeführt wird.
  • S1 Initialisieren der Gewichtung
  • Die Gewichtungen wij(n) wie sie in den Synapsenprozessoren, deren Verbindungsflags Fij = 1 sind, abgespeichert sind, d.h. in den Synapsenprozessoren 110 bis 112, 114 bis 117, 119 bis 127, 129 bis 135, 137 bis 139, 141 bis 151, 153 bis 157 und 160 bis 165, werden mit einer Zufallszahl initialisiert.
  • S2 Zuführen der Trainingsdaten
  • Beim Zuführen der Trainingsdaten empfangen die Eingangsprozessoren 100 bis 102 über die Signalleitungen 190 bis 192 Trainingsdaten xh(n) von einem externen Prozessor, und die so empfangenen Daten werden als vh(n,m) aufrechterhalten, die auch an die unteren benachbarten Synapsenprozessoren übertragen werden.
  • S3 Verarbeitung im Grundmodus
  • Bei der Verarbeitung im Grundmodus werden alle Ausgangswerte zj(n, 0) aus den Zellenprozessoren 113, 118, 128, 136, 140, 152, 158 und 166 durch die Gleichung (22) auf Null gesetzt. Jeder der Synapsenprozessoren und der Zellenprozessoren führt die folgenden Berechnungen aus, wobei als repräsentatives Beispiel die Verarbeitung für den Fall des Synapsenprozessors 144 in der h-ten Spalte und der j-ten Zeile, den Synapsenprozessor 149 in der j-ten Zeile und der (H + 1)-ten Spalte sowie den Zellenprozessor 152 in der j-ten Zeile und der (H + j)-ten Spalte beschrieben wird. Wenn der Ausgangsprozessor und der Eingangs/Ausgangs-Prozessor den Wert vi(n, m) vom untersten Synapsenprozessor oder vom Zellenprozessor in derselben Spalte erhalten, übertragen sie diesen Wert vi(n, m) unmittelbar an den Synapsenprozessor oder den Zellenprozessor, der in derselben Spalte unmittelbar darunter liegt.
  • [Gewichtungsprozessor 144 in der j-ten Zeile und der h-ten Spalte]
  • (1) Er empfängt das vom oberen benachbarten Synapsenprozessor 138 gesendete Signal vh(n, m) und überträgt es an den unteren benachbarten Synapsenprozessor 155.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vh(n) und der abgespeicherten Gewichtung whj(n) zur Partialsumme yjh-1(n, m) addiert, die vom linken benachbarten Synapsenprozessor 143 übertragen wurde, wie durch die Gleichung (32) dargestellt, so dass eine neue Partialsumme yjh(m, m) berechnet und dann an den rechten benachbarten Synapsenprozessor 145 übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die vorn linken benachbarten Synapsenprozessor 143 übertragene Partialsumme yjh- 1(n, m) als yjh(n, m) an den rechten benachbarten Synapsenprozessor 145 übertragen.
  • [Synapsenprozessor 149 in der j-ten Zeile und der (k = H + i)-ten Spalte]
  • (1) Er empfängt das vom oberen benachbarten Synapsenprozessor 139 gesendete Signal vk(n, m) und sendet es an den unteren benachbarten Synapsenprozessor 156. Jedoch überträgt der unterste Synapsenprozessor oder der Zellenprozessor das Signal vk(n, m) an den obersten Ausgangsprozessor oder den Eingangs/Ausgangs-Prozessor.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vk(n) und der abgespeicherten Gewichtung wkj(n) zur vom links benachbarten Synapsenprozessor 148 übertragenen Partialsumme yjk-1 (n, m) addiert, wie durch die Gleichung (32) angegeben, so dass eine neue Partialsumme kyj(n, m) berechnet wird und dann an den rechts benachbarten Synapsenprozessor 150 übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die übertragene Partialsumme yjk-1(n, m) als yjk(n, m) an den rechts benachbarten Synapsenprozessor 150 übertragen. Jedoch überträgt der ganz rechte Synapsenprozessor oder der Zellenprozessor den Wert yjH + J(n, m) als yj&sup0;(n, m) an den ganz linken Synapsenprozessor oder Zellenprozessor.
  • [Zellenprozessor 152 in der j-ten Zeile und der (k = H + j)-ten Spalte]
  • (1) Er überträgt das Ausgangssignal zj(n, m) des Zellenprozessors als vg(j)(n,m) an den unten benachbarten Synapsenprozessor 157.
  • (2) Er überträgt als Partialsumme yjk(n, m) = "0" an den rechten benachbar ten Synapsenprozessor 153.
  • (3) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vk(n) und der abgespeicherten Gewichtung wkj(n) zum vom links benachbarten Synapsenprozessor 151 als Partialsumme yjk-1(n, m) übertragen, so dass das endgültige Produkt-Summen-Ergebnis yj(n, m) = yjk(n, m) erhalten wird. Wenn das Verbindungsflag = "0" ist, wird die Partialsumme yjk-1(n, m) zum endgültigen Produkt-Summen-Ergebnis yj(n, m) (n, m) gemacht.
  • (4) Gemäß der Gleichung (24) wird das endgültige Produkt-Summen-Ergebnis yj(n, m) durch eine S-Funktion umgesetzt, wodurch das Ausgangssignal zj(n, m + 1) der Neuralzelle erhalten wird.
  • Da die Ausgangswerte bei den vorstehend beschriebenen Berechnungen sukzessive aus der ersten Zwischenschicht ermittelt werden, kann das Ausgangssignal zj(n, M) aus dem Zellenprozessor in der Ausgangsschicht dadurch erhalten werden, dass die obigen Berechnungen so oft wiederholt werden, wie es der Anzahl der Zwischenschicht und der Ausgangsschicht entspricht, d.h. M mal.
  • S4 Zuführen von Zieldaten
  • Beim Zuführen der Zieldaten empfangen die Eingangs/Ausgangs-Prozessoren, z.B. 105 und 106, die den Zellenprozessoren unter allen Zellenprozessoren entsprechen, die das Ergebnis an den externen Prozessor ausgeben können, Zieldaten über die Signalleitungen 195 und 196 vom externen Prozessor, um dieselben an den unten benachbarten Synapsenprozessor oder den Zellenprozessor zu übertragen. Jeder der Synapsenprozessoren empfängt die Zieldaten vom oben benachbarten Synapsenprozessor, um sie an den unten benachbarten Synapsenprozessor zu übertragen. Jeder der Zellenprozessoren führt die folgende Berechnung auf Grundlage der vom oben benachbarten Synapsenprozessor empfangenen Zieldaten aus, um den Zwischenabweichungswert δj(n, l) für den Lernvorgang zu initialisieren.
  • [Zellenprozessor 152 (Ausgangsschicht) in der j-ten Zeile und der (k = H + j)-ten Spalte]
  • Der Zellenprozessor in der Ausgangsschicht empfängt vom oben benachbarten Synapsenprozessor 141 gesendete Zieldaten tj(n) und berechnet den Anfangswert des Zwischenabweichungswerts δj(n, 0) gemäß der Gleichung (28).
  • [Zellenprozessor 128 (Zwischenschicht) in der i-ten Zeile und der (k = H + 1)-ten Spalte)
  • Im Zellenprozessor in der Zwischenschicht wird der Anfangswert des Zwischenabweichungswerts δj(n, 0) gemäß der Gleichung (29) auf Null gesetzt.
  • S5 Verarbeitung gemäß dem Lernmodus 1
  • Im Lernmodus 1 führt jeder der Synapsenprozessoren und jeder der Zellenprozessoren die folgenden Berechnungsverarbeitungen aus, wobei die Berechnungsverarbeitungen für den Synapsenprozessor 144 in der j-ten Zeile und der h-ten Spalte, den Synapsenprozessor 149 in der j-ten Zeile und der (H+ i)-ten Spalte, den Zellenprozessor 152 in der j-ten Zeile und der (H + j)- ten Spalte und den Zellenprozessor 128 in der i-ten Zeile und der (H + j)- ten Spalte als Beispiele dargestellt sind. Wenn der Ausgangsprozessor und der Eingangs/Ausgangs-Prozessor den wert SjJ(n, l) vom untersten Synapsenprozessor oder dem Zellenprozessor in derselben Spalte empfangen, übertragen sie ihn unmittelbar an den Synapsenprozessor oder den Zellenprozessor, der unmittelbar unter der Spalte liegt.
  • [Synapsenprozessor 144 in der j-ten Zeile und der (k = H + i)-ten Spalte]
  • (1) Er empfängt das vom links benachbarten Prozessor 143 übertragene Signal δj(n, l) und überträgt es an den rechts benachbarten Synapsenprozessor 145.
  • [Synapsenprozessor 149 in der j-ten Zeile und der (k = H + i)-ten Spalte]
  • (1) Er empfängt das vom links benachbarten Synapsenprozessor 148 empfangene Signal δj(n, l) und überträgt es an den rechts benachbarten Synapsenprozessor 150. Jedoch überträgt der Synapsenprozessor oder der Zellenprozessor in der ganz rechten Spalte das Signal δj(n, l) an den ganz linken Synapsenprozessor oder den Zellenprozessor.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal δj(n, l) und der abgespeicherten Gewichtung wkj(n) zur vom oben benachbarten Synapsenprozessor 139 übertragenen Partialsumme Sij-1(n, l) addiert, wie durch die Gleichung (33) angegeben, so dass dann an den unten benachbarten Synapsenprozessor 156 die neue Partialsumme Sij(n, l) übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die übertragene Partialsumme Sij-1(n, l) als Sij(n, l) an den unten benachbarten Synapsenprozessor 156 übertragen. Jedoch überträgt der Synapsenprozessor oder der Zellenprozessor in der untersten Zeile den Wert Sij(n, l) als Si&sup0; (n, l) an den obersten Ausgangsprozessor oder den Eingangs/Ausgangs-Prozessor, und zwar als yj&sup0;(n, l).
  • [Zellenprozessor (Ausgangsschicht) 152 in der j-ten Zeile und der (k = H + j)-ten Spalte]
  • (1) Der Zwischenabweichungswert δj(n, l) beim Lernvorgang wird an den rechts benachbarten Synapsenprozessor 153 übertragen.
  • (2) In der Ausgangsschicht wird, da der Zwischenabweichungswert δj(n, l) nicht um l geändert ist, δj(n, l + 1) = δj(n, l) gemacht.
  • [Zellenprozessor (Zwischenschicht) 128 in der i-ten Zeile und der (k = H + i)-ten Spalte]
  • (1) Der Zwischenabweichungswert δi(n, l) beim Lernvorgang wird an den rechts benachbarten Synapsenprozessor 129 übertragen.
  • (2) Er überträgt als Partialsumme den Wert Sji(n, l) = "0" an den unten benachbarten Synapsenprozessor 135.
  • (3) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal δi(n, l) und der abgespeicherten Gewichtung wki(n) zur vom oben benachbarten Synapsenprozessor 119 übertragenen Partialsumme Sii-1(n, l) entsprechend der Gleichung (33) addiert, so dass das endgültige Produkt-Summen- Ergebnis Si(n, l) = Sii-1(n, l) erhalten wird. Wenn das Verbindungsflag = "0" ist, wird die Partialsumme Sii-1(n, l) zum endgültigen Produkt-Summen-Ergebnis Si(n, l) = Sii-1(n, l) gemacht.
  • (4) Entsprechend dem endgültigen Produkt-Summen-Ergebnis Si(n, l) und dem Ausgangswert zi(n) gemäß der Gleichung (31) ist ein neuer Zwischenwert δi(n, l + 1) berechnet.
  • Da die Berechnungen von der Ausgangsschicht für jede Schicht bis zur Eingangsschicht sukzessive ausgeführt werden, ähnlich wie im Grundmodus, kann der Zwischenwert δj(n, L) des Lernvorgangs dadurch wiederholt werden, dass eine Wiederholung entsprechend der Anzahl der Zwischenschichten erfolgt, d.h. L = M - 1 mal.
  • S6 Verarbeitung gemäß dem Lernmodus 2
  • Im Lernmodus 2 führen jeder Synapsenprozessor und Zellenprozessor die folgenden Verarbeitungen aus, wobei als Beispiele die Verarbeitungen im Eingangsprozessor 101 in der 0-ten Zeile und h-ten Spalte, im Synapsenprozessor 144 in der j-ten Zeile und h-ten Spalte, im Synapsenprozessor 194 in der j-ten Zeile und der (H + i)-ten Spalte und im Zellenprozessor 128 in der i-ten Zeile und der (H + i)-ten Spalte angegeben werden. Wenn der Ausgangsprozessor und der Eingangs/Ausgangs-Prozessor den Wert vj(n, M) vom untersten Synapsenprozessor oder Zellenprozessor in derselben Spalte erhalten, übertragen sie ihn unmittelbar an den Synapsenprozessor oder den Zellenprozessor, der in derselben Spalte unmittelbar darunter liegt.
  • [Synapsenprozessor 101 in der 0-ten Zeile und der h-ten Spalte]
  • (1) Er überträgt das Trainingsdatensignal xh(n) als vh(n, M) an den unteren Synapsenprozessor 111.
  • [Synapsenprozessor 144 in der j-ten Zeile und der h-ten Spalte]
  • (1) Er empfängt den Zwischenabweichungswert δj(n, L) aus dem Lernvorgang, wie vom links benachbarten Synapsenprozessor 143 empfangen, und überträgt ihn an den rechts benachbarten Synapsenprozessor 145.
  • (2) Er empfängt den Zwischenwert Vh(n) aus dem Lernvorgang, wie vom oben benachbarten Synapsenprozessor 138 übertragen, und überträgt ihn an den unten benachbarten Synapsenprozessor 145.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung Δwhj(n) der Gewichtung whj(n) aus dem Zwischenwert δj(n, L) aus dem Lernvorgang, wie vom links benachbarten Synapsenprozessor 143 übertragen, und dem vom oben benachbarten Synapsenprozessor 138 übertragenen Signal vh(n) entsprechend der Gleichung (26) berechnet. Dann wird die Gewichtung whj(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • [Synapsenprozessor 149 in der j-ten Zeile und der (k = H + i)-ten Spalte]
  • (1) Er empfängt den Zwischenabweichungswert δj(n, L) aus dem Lernvorgang, wie vom links benachbarten Synapsenprozessor 148 übertragen, und er überträgt ihn an den rechts benachbarten Synapsenprozessor 150. Jedoch überträgt der Synapsenprozessor oder der Zellenprozessor in der ganz rechten Spalte das Signal δj(n, L) an den Synapsenprozessor oder den Zellenprozessor in der ganz linken Spalte.
  • (2) Er empfängt das vom oben benachbarten Synapsenprozessor 139 übertragene Signal vk(n, M) und überträgt es an den unten benachbarten Synapsenprozessor 156. Jedoch überträgt der Synapsenprozessor oder der Zellenprozessor in der untersten Zeile das Signal vk(n, M) an den Ausgangsprozessor oder den Eingangs/Ausgangs-Prozessor in der obersten Zeile.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung Δwkj(n) der Gewichtung wkj(n) aus dem vom links benachbarten Synapsenprozessor übertragenen Signal δj(n, L) und dem vom oben benachbarten Synapsenprozessor 139 übertragenen Signal vk(n, M) gemäß der Gleichung (26) berechnet. Dann wird die Gewichtung wkj(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • [Zellenprozessor 152 in der j-ten Zeile und der (k = H + j)-ten Spalte]
  • (1) Er überträgt den Zwischenabweichungswert δj(n, L) aus dem Lernvorgang im Zellenprozessor an den rechts benachbarten Synapsenprozessor 153.
  • (2) Der Ausgangswert zj(n, M) aus dem Zellenprozessor wird als Vg(j)(n, M) an den unten benachbarten Synapsenprozessor 157 übertragen.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung Δwkj(n) der Gewichtung wkj(n) aus dem Zwischenabweichungswert δj(n, L) für den Lernvorgang, wie im Zellenprozessor enthalten, und dem Ausgangssignal Vk(n, M) = Zj(n, M) gemäß der Gleichung (26) berechnet. Dann wird die Gewichtung wkj(n) entsprechend der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • S7 Testen der Lernkonvergenz
  • Beim Testen der Lernkonvergenz wird getestet, ob der Mittelwert oder der Maximalwert der Abweichung ξj = (tj(n) zj(n)) ²zwischen dem Ausgangssignal aus dem Zellenprozessor in der Ausgangsschicht und dem Zieldatenwert größer als ein vorbestimmter Wert ist. Demgemäß wird die Tatsache ermittelt, ob der Lernvorgang abgeschlossen ist oder nicht. Wenn die Abweichung kleiner als der vorbestimmte Wert ist, ist der Lernvorgang abgeschlossen. Wenn dagegen die Abweichung größer als der vorbestimmte Wert ist, kehrt der Prozess zu S2 zurück, wo der Lernvorgang dadurch fortgesetzt wird, dass wiederholt Trainingsdaten und Zieldaten zugeführt werden.
  • Wie oben beschrieben, wurde eine Architektur für einen Neurocomputer geschaffen, der eine Parallelverarbeitung für die Simulation des oben angegebenen mehrschichtigen Perzeptrons, das als Beispiel für Neuralnetzwerke dient, ausführen kann.
  • Jedoch ist bei einem Neurocomputer mit Prozessorgruppen, die so miteinander verbunden sind, dass sie Toroidgitterform bilden, eine extrem große Anzahl von bereitzustellenden Prozessoren, nämlich (J + 1) (H + J), erforderlich, wenn der Umfang der Neuralnetzwerke erhöht wird. Daher kann er hinsichtlich der praktischen Verwendung nicht in vorteilhafter Weise genutzt werden. Demgemäß offenbart die Erfindung ferner eine Einrichtung, die große Neuralnetzwerke mit einer machbaren Anzahl körperlicher Prozessoren auf Grundlage der oben beschriebenen Toroidgitterverbindung simulieren kann.
  • Vorausgesetzt, dass alle oben beschriebenen Synapsenprozessoren, Zellenprozessoren, Eingangsprozessoren, Ausgangsprozessoren und Eingangs/Ausgangs- Prozessoren virtuelle Prozessoren sind, werden die Gruppen virtueller Prozessoren, die so angeordnet sind, dass sie ein Gitter mit J + 1 Zeilen und H + J Spalten bilden, in Zeilenrichtung in P (P < J + 1) Teile und in Spaltenrichtung in Q (Q < H + J) Teile unterteilt, wie es in Fig. 6 dargestellt ist.
  • Wie es in Fig. 7A dargestellt ist, werden körperliche Prozessoren 410 bis 434 jeweils einem Rechteckbereich zugeordnet, der durch eine Unterteilung erzeugt wurde, die so ausgeführt wurde, wie es in Fig. 7A dargestellt ist. Im Ergebnis ist eine Anordnung aus körperlichen Prozessoren in P Zeilen und Q Spalten errichtet. Jeder der körperlichen Prozessoren ist auf Gitterweise mit dem oberen, unteren, linken und rechten körperlichen Prozessor verbunden. Die ganz rechten körperlichen Prozessoren 414, 419, 424, 429 und 484 sind mit den ganz linken körperlichen Prozessoren 410, 415, 420, 425 und 430 in derselben Zeile über Signalleitungen440 bis 444 verbunden. Die ganz unten liegenden körperlichen Prozessoren 430 bis 434 sind mit den ganz oben liegenden körperlichen Prozessoren 410 bis 444 in derselben Spalte über Signalleitungen 435 bis 439 verbunden. Um dafür zu sorgen, dass mindestens einer der körperlichen Prozessoren 410 bis 414 in jeder der Spalten Eingabe/Ausgabe-Funktion aufweist, ist er über Signalleitungen 401 bis 405 mit einer Busleitung 406 eines Hostcomputers 400 verbunden.
  • Wie es in Fig. 7B dargestellt ist, führt der so mit Eingabe/Ausgabe-Funktion versehene körperliche Prozessor den Berechnungsvorgang und den Speicherungsvorgang der Eingangsprozessoren, der Ausgangsprozessoren, der Eingangs/Ausgangs-Prozessoren, der Synapsenprozessoren und der Zellenprozessoren aus, wie sie im zugeordneten Rechteckbereich enthalten sind. Wie es in Fig. 7C dargestellt ist, führen die anderen körperlichen Prozessoren den Berechnungsvorgang und den Speichervorgang des Synapsenprozessors und der Zellenprozessoren aus, die in den zugeordneten Rechteckbereichen enthalten sind. Der körperliche Prozessor kann ein üblicher Mikroprozessor mit vier Übertragungskanälen für Prozessor-Prozessor-Verbindungen in den vier Richtungen sowie einem Datenspeicher sein, der den Gewichtungskoeffizient, den Ausgangswert der Zelle und den Zwischenwert beim Lernvorgang einspeichert. Vorzugsweise verfügt er über Hochgeschwindigkeitsfunktion hinsichtlich der Produkt-Summen-Operation. Die so angeordneten Gruppen körperlicher Prozessoren bilden Toroidgitterform, wie die virtuellen Prozessorgruppen. Da der oben angegebene körperliche Prozessor an einem Gitterknoten (einem Übergang) liegt, kann er als "Knotenprozessor" bezeichnet werden, was mit "NP (Node Processor = Knotenprozessor)" abgekürzt werden kann.
  • Demgemäß kann ein Neurocomputer, der große Neuralnetzwerke mit einer machbaren Anzahl von Prozessoren parallel berechnen kann, unter Verwendung von Knotenprozessorgruppen realisiert werden, die so miteinander verbunden sind, dass sie Toroidgitterform bilden, bei der P und Q geeignet bestimmt sind. Jeder der Knotenprozessoren führt eine sequentielle Verarbeitung aus, wobei die P Q Knotenprozessoren parallele Verarbeitung ausführen. Insbesondere können hinsichtlich der Produkt-Summen-Operation, die übermäßig lange Zeit benötigt, die Berechnungen der Partialsummen, die durch die Synapsenprozessoren individuell ausgeführt wurden, individuell von jedem der Knotenprozessoren als Berechnungen der Partialsummen im Rechteckbereich verarbeitet werden, der jeweils einem der Knotenprozessoren entspricht. D.h., dass die durch die Gleichung (32) ausgedrückte Produkt-Summen-Operation in die Gleichungen (34) und (35) zerlegt werden kann:
  • wobei Iuq die Nummer der ganz rechten Spalte des Rechteckbereichs repräsentiert, während Ilq die Nummer der ganz rechten Spalte desselben repräsentiert.
  • Die durch die Gleichung (33) ausgedrückte Produkt-Summen-Operation kann in die folgenden Gleichungen (36) und (37) zerlegt werden:
  • wobei Jup die Nummer der untersten Zeile im Rechteckbereich repräsentiert, während Ilq die Nummer der obersten Zeile repräsentiert.
  • Daher werden die Gleichungen (34) und (36) von jedem der Knotenprozessoren parallel berechnet, während die Gleichungen (35) und (37) während des Durchlaufens der Partialsumme yjq(n, m) und von Sjp(n, l) durch die Reihe der Knotenprozessoren aufeinanderfolgend berechnet werden.
  • In den Fig. 7B und 7C repräsentiert die Markierung ((B)) einen Pufferspeicher.
  • Unter den wie vorstehend beschrieben erstellten Bedingungen wird unter Bezugnahme auf die Fig. 7A, 7B und 7C entsprechend dem in Fig. 5 dargestellten Flussdiagramm 5 die Paralleloperation des Toroidgitter-Neurocomputers zum Simulieren des mehrschichtigen Perzeptrons beschrieben, wie von den Synapsenprozessoren, dem Zellenprozessor, den Eingangsprozessoren, den Ausgangsprozessoren und den Eingangs/Ausgangs-Prozessoren ausgeführt.
  • S1 Initialisieren der Gewichtung
  • Jeder der Knotenprozessoren initialisiert aufeinanderfolgend den durch den zugehörigen Synapsenprozessor abgespeicherten Gewichtungskoeffizient unter Verwendung einer Zufallszahl. Jeder der Knotenprozessoren initialisiert die Gewichtungskoeffizienten parallel.
  • S2 Zuführen von Trainingsdaten
  • Jeder der Knotenprozessoren 410 bis 414 mit Eingabe/Ausgabe-Funktion empfängt aufeinanderfolgend Trainingsdaten vom Hostcomputer, die den Eingangsprozessoren entsprechen. Die empfangenen Trainingsdaten werden in Puffern 445 und 446 aufrechterhalten.
  • S3 Verarbeiten im Grundmodus
  • Bei der Verarbeitung im Grundmodus stellt jeder der Knotenprozessoren einschließlich der Zellenprozessoren aufeinanderfolgend den Ausgangswert zj(n, 0) = vg(j)(n, 0) des Zellenprozessors als Anfangswert gemäß der Gleichung (22) auf Null.
  • Dann wird die folgende Verarbeitung mit m = 0 wiederholt. Obwohl als Beispiel eine Beschreibung für die Verarbeitung in den Synapsenprozessoren und den Zellenprozessoren betreffend den Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte erfolgt, erfolgt dies als Beispiel für die Verarbeitungen, wie sie parallel und gleichzeitig von jedem der Knotenprozessoren ausgeführt wird.
  • (1) Wenn die Spalte k = g(j) betrachtet wird, in der ein Zellenprozessor in einem Rechteckbereich vorhanden ist, dem der Knotenprozessor in der p-ten Zeile und der q-ten Spalte zugeordnet ist, wird der Wert vk(n, m) = Zj(n, m) sukzessive zusammen mit der Spaltenzahl k an den unten benachbarten Knotenprozessor 427 übertragen. Wenn die Spalte h betrachtet wird, in der der Eingangsprozessor vorhanden ist, wird der Wert vh(n, m) = xh(n) sukzessive zusammen mit der Spaltenzahl h an den unteren Knotenprozessor 427 übertragen. Hinsichtlich Spalten, in denen kein Zellenprozessor und kein Eingangsprozessor vorhanden ist, werden sukzessive Signale vi(n)[i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}], wie sie vom oben benachbarten Knotenprozessor 417 übertragen wurden, sukzessive empfangen und im Ausgangsprozessor, im Eingangs/Ausgangs-Prozessor 448 oder den Puffern 470, 473 und 474 für jede der Spalten aufrechterhalten. Gleichzeitig werden die Signale sukzessive zusammen mit der Spaltennummer i an den unten benachbarten Knotenprozessor 427 übertragen. Wenn p = P gilt, wird Vi(n, m) zusammen mit der Spaltennummer i an den untersten Knotenprozessor 412 übertragen.
  • (2) Wenn ein Zellenprozessor im Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte vorhanden ist, werden die Anfangswerte yjq(n, m) = 0 der Partialsumme sukzessive mit der Zeilennummer j, die die Position aller Zellenprozessoren ist, an den benachbarten Knotenprozessor 423 übertragen.
  • (3) Die Partialsumme Bjq(n, m) im Rechteckbereich für den Synapsenprozessor im Rechteckbereich, dem der Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte zugeordnet ist, wird gemäß der Gleichung (34) berechnet. Das Berechnungsergehnis wird in die Puffer 456 bis 460 und 488 bis 498 eingespeichert.
  • (4) Wenn die Partialsumme yjq-1(n, m) zusammen mit der Zeilennummer j vom links benachbarten Knotenprozessor 421 übertragen wurde, wird getestet, ob die Berechnung der Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (35) eine neue Partialsumme yjq(n, m) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich noch nicht abgeschlossen ist, wird die Partialsumme yjq-1(n, m) zeitweilig zusammen mit der Zeilennummer j in den Pufferspeichern 456 bis 460 und 488 bis 492 aufrechterhalten, wobei auf den Abschluss der Berechnung der Partialsumme Bjq(n, m) gewartet wird. Wenn die Partialsumme Bjq(n, m) im Rechteckbereich fertiggestellt ist, wird gemäß der Gleichung (35) unmittelbar anschließend eine neue Partialsumme m) berechnet. Dabei wird getestet, ob ein Zellenprozessor in der j-ten Zeile vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird die neue Partialsumme yjq(n, m) zusammen mit der Zeilennummer j an den rechts benachbarten Knotenprozessor 423 übertragen. Wenn q = Q gilt, wird die Partialsumme yj&sup0; (n, m) = yjQ(n, m) zusammen mit der Zeilennummer j an den ganz linken Knotenprozessor 420 übertraoen. Wenn einer enthalten ist, wird die Partialsumme yjq(n, m) als Ergebnis yj(n, m) der Produkt-Summen-Operation eingetragen.
  • (5) Hinsichtlich der Zeilen, die einen Zellenprozessor enthalten, wird, wenn das Berechnungsergehnis yj(n, m) der Produkt-Summen-Operation fertiggestellt ist, dieses Ergebnis yj(n, m) durch die S-Funktion gemäß der Gleichung (24) in das Ausgangssignal zj(n, m + 1) der Neuralzelle umgesetzt, wobei das Ergebnis dann in die Pufferspeicher eingespeichert wird, die den Zellenprozessoren 467 bis 469 sowie 493 bis 495 zugeordnet sind.
  • Da die Ausgangswerte der Neuronen durch die oben beschriebenen Berechnungen sukzessive von der ersten Zwischenschicht bis zur Ausgangsschicht bestimmt werden, kann das Ausgangssignal zj(n, M) des Zellenprozessors in der Ausgangsschicht dadurch erhalten werden, dass die Berechnungen entsprechend der Anzahl der Zwischenschichten und der Ausgangsschicht, d.h. M mal, wiederholt werden.
  • S4 Zuführen von Zieldaten
  • Beim Zuführen von Zieldaten empfangen die Knotenprozessoren 410 bis 414 mit Eingangs/Ausgangs-Funktion für jede der Spalten der Zellenprozessoren in der Ausgangsschicht Zieldaten tj(n) über den Signalbus 406 vom Hostcomputer, die dann an den unteren Knotenprozessor übertragen werden. Jeder der Knotenprozessoren empfängt den Zieldatenwert vom oben benachbarten Knotenprozessor, um den Zieldatenwert an den unten benachbarten Knotenprozessor zu übertragen. Die Knotenprozessoren, einschließlich jedes der Zellenprozessoren, initialisieren den Zwischenabweichungswert &delta;j(n, l) des Lernvorgangs gemäß der Gleichung (29).
  • (1) Der Knotenprozessor einschließlich des Zellenprozessors in der Ausgangsschicht empfängt den vom oben benachbarten Knotenprozessor übertragenen Zieldatenwert tj(n) und berechnet den Anfangswert für den Zwischenab weichungswert &delta;j(n, 0) gemäß der Gleichung (28) und speichert dann das Ergebnis in den dem Zellenprozessor zugeordneten Speicherbereich ein.
  • (2) Der Knotenprozessor einschließlich des Zellenprozessors in der Zwischenschicht setzt den Anfangswert gemäß der Gleichung (29) auf den Zwischenwert &delta;j(n, 0) und speichert ihn dann in den dem Zellenprozessor zugeordneten Speicherbereich ein.
  • S5 Die Verarbeitung im Lernmodus 1
  • Im Lernmodus 1 wiederholt jeder der Knotenprozessoren die folgende Verarbeitung, nachdem 1 = 0 eingestellt ist. Obwohl die Verarbeitung durch die Synapsenprozessoren und die Zellenprozessoren im Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte als Beispiel beschrieben wird, wird die Verarbeitung durch jeden der Knotenprozessoren parallel und gleichzeitig ausgeführt.
  • (1) Wenn eine Zeile j vorliegt, die den Zellenprozessor in den virtuellen Prozessoren enthält, die dem Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte zugeordnet sind, wird der Zwischenabweichungswert &delta;j(n, l) aus dem Lernvorgang mit der Zeilennummer j an den rechts benachbarten Knotenprozessor 423 übertragen. Wenn in der k-ten Zeile kein Zellenprozessor enthalten ist, werden die Zwischenabweichungswerte &delta;k(n, l) [k&epsi;{Ilq, Jlq+1, ..., Juq-1, Juq}], wie vom links benachbarten Knotenprozessor übertragen, sukzessive empfangen und dann in die Puffer 452 bis 455, 478, 480 und 481 in jeder Zeile eingespeichert. Gleichzeitig wird der Zwischenwert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 423 übertragen. Wenn q = Q gilt, wird der Zwischenwert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den ganz linken Knotenprozessor 420 übertragen.
  • (2) Wenn ein Zellenprozessor in den virtuellen Prozessoren enthalten ist, die dem Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte zugeordnet sind, wird der Anfangswert Sjp(n, l) = 0 der Partialsumme für alle enthaltenen zellenprozessoren mit der Nummer k = g(j) der Spalte, in der der Zellenprozessor liegt, an den unten benachbarten Knotenprozessor 427 übertragen.
  • (3) Die Partialsumme Djp(n, l) für die Synapsenprozessoren im Rechteckbereich, dem der Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte zugeordnet ist, wird für jede der Spalten gemäß der Gleichung (36) berechnet. Wenn die Berechnung abgeschlossen ist, wird das Ergebnis zusammen mit der Zeilennummer k in die Puffer 461 bis 466 sowie 482 bis 487 eingespeichert.
  • (4) Wenn die Partialsumme Sjp-1(n, l) zusammen mit der Spaltennummer k vom oben benachbarten Knotenprozessor 417 übertragen wurde, wird die Tatsache untersucht, ob die Berechnung für die Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (37) eine neue Partialsumme Sjp(n, l) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich noch nicht abgeschlossen ist, wird die Partialsumme Sjp-1(n, l) zusammen mit der Zeilennummer j in den Puffern 461 bis 466 sowie 482 bis 487 zwischengespeichert, um auf dem Abschluss der Berechnung der Partialsumme Djp(n, l) im Rechteckbereich zu warten. Wenn die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist, wird die neue Partialsumme unmittelbar gemäß der Gleichung (37) berechnet. Dabei wird die Tatsache geprüft, ob ein Zellenprozessor in der k-ten Spalte des Rechteckbereichs vorhanden ist. Wenn er dort nicht vorhanden ist, wird die neue Partialsumme Sjp(n, l) zusammen mit der Spaltennummer k an den unten benachbarten Knotenprozessor 427 übertragen. Wenn p = P gilt, wird die Partialsumme Sj&sup0;(n, l) = Sjp(n, l) zusammen mit der Spaltennummer an den obersten Knotenprozessor 412 übertragen. Wenn er vorhanden ist, wird die neue Partialsumme Sjp(n, l) als Ergebnis Sj(n, l) der Produkt-Summen-Operation verwendet.
  • (5) Nachdem die Berechnung des Produkt-Summe-Endergebnisses Sj(n, l) hinsichtlich des Zellenprozessors in der Spalte k = g(j) abgeschlossen wurde, wird aus dem Ergebnis Sj(n, l) der Wert &delta;j(n, l + 1) berechnet und in den dem Zellenprozessor zugeordneten Speicherbereich eingespeichert.
  • Im Lernmodus 1 kann, da die Berechnungen für jede Schicht sukzessive von der Ausgangsschicht bis zur Eingangsschicht auf dieselbe Weise wie im Grundmodus ausgeführt werden, der Zwischenabweichungswert &delta;j(n, l) gemäß dem Lernvorgang dadurch erhalten werden, dass die Berechnungen so oft wiederholt werden, wie es der Anzahl der Zwischenschichten entspricht, d.h. L = M - 1 mal.
  • S6 Verarbeitung im Lernmodus 2
  • Im Lernmodus 2 führt jeder der Knotenprozessoren die folgenden Verarbeitungen aus. Obwohl die Verarbeitung des Synapsenprozessors und der Zellenprozessoren hinsichtlich des Knotenprozessors 422 in der p-ten Zeile und der q-ten Spalte als Beispiel beschrieben wird, wird die Verarbeitung parallel und gleichzeitig von jedem der Knotenprozessoren ausgeführt.
  • (1) Wenn ein Zellenprozessor in der j-ten Zeile und der i = g(j)-ten Spalte in den Gruppen virtueller Prozessoren im Rechteckbereich enthalten ist, dem der Knotenprozessor 422 in der p-ten Zeile und der q-ten Spalte zugeordnet ist, wird der Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer j an den rechts benachbarten Knotenprozessor 423 übertragen. Gleichzeitig wird das Ausgangssignal zj(n) vom Zellenprozessor, d.h. vi(n) = zj(n), zusammen mit der Spaltennummer i an den unten benachbarten Knotenprozessor übertragen. Wenn eine Spalte h existiert, die einen Eingangsprozessor in den virtuellen Prozessoren enthält, wie sie dem Knotenprozessor 422 in der p-ten Zeile und der g-ten Spalte zugeordnet sind, wird dafür gesorgt, dass das Eingangssignal xh(n), d.h. vh(n) = xh(n), zusammen mit der Spaltennummer h an den unten benachbarten Knotenprozessor 427 übertragen wird. Wenn kein Zellenprozessor und kein Eingangsprozessor in der k-ten Zeile vorliegen, werden die Zwischenabweichungswerte &delta;k(n, L) [k&epsi; {Jlp, Jlp+1, ..., Jup-1, Jup}) aus dem Lernvorgang, wie vom links benachbarten Knotenprozessor 421 übertragen, aufeinanderfolgend empfangen und in die Puffer 451 bis 455 sowie 476 bis 481 jeder Zeile eingespeichert. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 423 übertragen.
  • Wenn q = Q gilt, wird der Übertragungsvorgang an den rechts benachbarten Knotenprozessor hinsichtlich des ganz linken Knotenprozessors ausgeführt. Im Fall von p = P wird die Übertragung an den unteren Knotenprozessor hinsichtlich des obersten Knotenprozessors ausgeführt.
  • (2) Wenn im Rechteckbereich, dem der Knotenprozessor in der p-ten Zeile und der q-ten Spalte zugeordnet ist, Synapsenprozessoren existieren, für die das Verbindungsflag = "1" ist, wird der Änderungswert &Delta;wij(n) des Gewichtungskoeffizients wij(n) aus dem Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang, wie vom links benachbarten Knotenprozessor übertragen, und dem vom oben benachbarten Knotenprozessor übertragenen Signal vi(n) gemäß der Gleichung (26) berechnet. Dann wird der Gewichtungskoeffizient wij(n) gemäß der Gleichung (27) aktualisiert. Wenn das Kopplungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • S7 Testen der Lernkonvergenz
  • Beim Testen der Lernkonvergenz testet der Knotenprozessor, der dem Zellenprozessor in der Ausgangsschicht enthält, ob der Mittelwert oder der Maximalwert der Abweichung &xi;j = (tj(n) - zj(n))² zwischen dem Ausgangssignal und dem Zieldatenwert kleiner als ein vorbestimmter Wert ist. So wird der Abschluss des Lernvorgangs ermittelt. Wenn die Abweichung kleiner als der vorbestimmte Wert ist, ist der Lernvorgang abgeschlossen. Wenn die Abweichung größer als der vorbestimmte Wert ist, werden die Trainingsdaten und die Zieldaten wiederholt geliefert, und der Lernvorgang wird ab der Verarbeitung in S2 wiederholt.
  • Wie oben beschrieben, kann die Parallelverarbeitung zur Simulierung von Neuralnetzwerken durch Knotenprozessoren ausgeführt werden, die so verbunden sind, dass sie die Form eines toroidalen Gitters bilden. Jedoch ist die nachste Frage die, wie ein Belastungsausgleich zwischen den Knotenprozessoren erfolgen kann. Nachfolgend wird unter Bezugnahme auf ein spezielles Beispiel eines mehrschichtigen Perzeptrons, wie in Fig. 8 dargestellt, ein Verfahren zum Lösen dieses Problems beschrieben.
  • In Fig. 9 ist der Aufbau eines virtuellen Prozessors zum Simulieren des in Fig. 3 dargestellten dreischichtigen Perzeptrons dargestellt. In Fig. 9 repräsentiert die Markierung ((w)) einen Synapsenprozessor, für den als Verbindungsflag Fij = 1 dargestellt ist, und die Markierung ((0)) repräsentiert einen Synapsenprozessor, für den als Verbindungsflag Fij = 0 dargestellt ist. Synapsenprozessoren, deren Verbindungsflag Fij = 0 ist, müssen die Produkt-Summen-Operation für die Partialsumme nicht ausführen, während nur der Synapsenprozessor, dessen Verbindungsflag Fij = 1 ist, die Produkt- Summen-Operation für die Partialsumme ausführen muss. Obwohl die Anzahl der Zellenprozessoren klein ist, sind die Verarbeitungen im allgemeinen so kompliziert, dass die Verarbeitungsbelastung aller Prozessoren das 10-fache oder mehr der Verarbeitungsbelastung des Synapsenprozessors ist.
  • Fig. 10A ist eine Ansicht, die auf einfache Weise die Anordnung der Synapsenprozessoren mit den Verbindungsflags Fij = 1 und Fij = 0 sowie des Zellenprozessors zeigt. Wie es in der Fig. 10A dargestellt ist, ist bei einem mehrschichtigen Perzeptron das gesamte Gebiet in Rechteckbereiche 700 und 704, die die Synapsenprozessoren mit dem Verbindungsflag Fij = 1 enthalten, Rechteckbereiche 702 und 703, die aus den Synapsenprozessoren mit dem Verbindungsflag Fij = 0 bestehen, und Rechteckbereiche 701 bis 705 unterteilt, in denen ein Synapsenprozessor mit dem Verbindungsflag Fij = 0 und ein Zellenprozessor in gemischter Weise vorhanden sind. Daher kann die Belastung des Knotenprozessors, dem eine größere Anzahl von Synapsenprozessoren zugeordnet ist, deren Verbindungflag Fij = 0 ist, verringert werden. Andererseits wird die Belastung eines Knotenprozessors, dem eine größere Anzahl von Zellenprozessoren oder Synapsenprozessoren mit dem Verbindungsflag Fij = 1 zugeordnet ist, größer. Um die Parallelverarbeitung wirkungsvoll auszuführen, ist es erforderlich, dass jeder der Knotenprozessoren seine Verarbeitung innerhalb derselben Zeitspanne abschließt. Wenn ein Knotenprozessor relativ mehr Zeit als andere Knotenprozessoren zum Abschließen seiner Verarbeitung benötigt, müssen die anderen Knotenprozessoren auf dem Abschluss der Verarbeitung warten, um die Verarbeitungsphase aller Knotenprozessoren zu synchronisieren. Im Ergebnis verringert sich der Wirkungsgrad der Parallelverarbeitung.
  • Fig. 10B ist eine Ansicht, die einen Fall veranschaulicht, bei dem das Gitter aus den Synapsenprozessoren und den Zellenprozessoren mittels kurz gestrichelter horizontaler und vertikaler Linien so in sechs Rechteckteile unterteilt ist, dass die Belastungen von sechs Knotenprozessoren in zwei Zeilen und drei Spalten so gut wie möglich ausgeglichen sind. Im Rechteckbereich 710, dem der Knotenprozessor für die erste Zeile und die erste Spalte zugeordnet ist, existieren 108 Synapsenprozessoren mit dem Verbindungsflag Fij = 1. Andererseits existieren im Rechteckbereich 713, dem der Knotenprozessor in der zweiten Zeile und der ersten Spalte zugeordnet ist, nur 36 Synapsenprozessoren, deren Verbindungsflag Fij = 1 ist sowie andere Synapsenprozessoren, deren Verbindungsflag Fij = 0 ist. Auf ähnliche Weise befinden sich im Rechteckbereich 714, dem der Knotenprozessor in der zweiten Zeile und der zweiten Spalte zugeordnet ist, 42 Synapsenprozessoren mit dem Verbindungsflag Fij = 1 und andere Synapsenprozessoren mit dem Verbindungsflag Fij = 0. Im Rechteckbereich 715, dem der Knotenprozessor in der zweiten Zeile und dritten Spalte zugeordnet ist, befinden sich 48 Synapsenprozessoren mit dem Verbindungsflag Fij = 1 sowie 9 Zellenprozessoren. Andererseits befinden sich im Rechteckbereich 712, dem der Knotenprozessor in der ersten Zeile und dritten Spalte zugeordnet ist, nur fünf Zellenprozessoren sowie andere Synapsenprozessoren, deren Verbindungsflag Fij = 0 ist. Wie oben beschrieben, existiert hinsichtlich der Verteilung zwischen den Knotenprozessoren eine erheblich unausgeglichene Belastung.
  • Um das vorstehend beschriebene Problem zu lösen, wird eine Permutation zwischen Zeilen oder Spalten der virtuellen Prozessoren ausgeführt. Da die in den Gleichungen (23) und (30) dargestellten Produkt-Summen-Operationen nicht durch verschiedene Additionsreihenfolgen beeinflusst werden, können dieselben Ergebnisse selbst dann erhalten werden, wenn eine Permutation zwischen Zeilen oder zwischen Spalten ausgeführt wird. Fig. 11A ist eine Ansicht, die Fälle veranschaulicht, bei denen die Rechteckbereiche 700 und 704, in denen nur Synapsenprozessoren mit dem Verbindungsflag Fij = 1 vorhanden sind, die Rechteckbereiche 702 und 703, in denen nur Synapsenprozes soren mit dem Verbindungsflag Fij = 0 vorhanden sind und die Rechteckbereiche 701 und 705, in denen nur ein Zellenprozessor und Synapsenprozessoren, deren Verbindungsflag Fij = 0 ist, vorhanden sind, jeweils in sechs Bereiche oder 12 Bereiche unterteilt. Die in Fig. 11B dargestellte Anordnung kann dadurch realisiert werden, dass aufeinanderfolgend Permutationen von Zeilen und Spalten mit der Einheit des oben beschriebenen Unterteilungsabschnitts ausgeführt werden. Wenn die in Fig. 11B dargestellte Neuanordnung mittels der Permutationen erhalten ist, kann die Unterteilung des Gitters der virtuellen Prozessoren in sechs Rechteckbereiche leicht erzielt werden, wodurch ein Ausgleich der Belastung der sechs Knotenprozessoren erzielt wird.
  • Fig. 12 ist eine Ansicht, die die Neuanordnung und die Unterteilung des Toroidgitters mit den Synapsenprozessoren, den Zellenprozessoren, den Eingangsprozessoren, den Ausgangsprozessoren und den Eingangs/Ausgangs-Prozessoren veranschaulicht, nachdem die Lastverteilung durch Permutation ausgeglichen wurde. Fig. 13 ist eine Ansicht, die die Architektur eines Neurocomputers veranschaulicht, der aus Knotenprozessoren, die so verbunden sind, dass sie ein Toroidgitter bilden, und virtuellen Prozessoren besteht, die den Knotenprozessoren in der zweiten Zeile und der zweiten Spalte zugeordnet sind.
  • Selbst wenn die Permutation der Zeilen und Spalten des virtuellen Prozessors so wie oben beschrieben ausgeführt wird, können die oben beschriebenen Verarbeitungsvorgänge einfach dadurch ausgeführt werden, dass die Funktion g(j) geändert wird, die die Beziehung zwischen den Zeilen und Spalten ausdrückt, in denen ein Zellenprozessor angeordnet ist. Jedoch ist es hinsichtlich der Eingangsprozessoren, der Ausgangsprozessoren und der Eingangs/Ausgangs-Prozessoren erforderlich, dass sie in der 0-ten Zeile hegen.
  • Gemäß diesem Fall kann, da die Anzahlen der Zeilen und Spalten des virtuellen Prozessors genau durch die Anzahlen der Zeilen und Spalten des Knotenprozessors teilbar sind, die Division so vollständig erfolgen, dass die Belastungen der Knotenprozessoren jeweils dieselben sind. Indessen kann selbst dann, wenn die oben angegebenen Anzahlen nicht genau teilbar sind, der Unterschied zwischen den Belastungen der Knotenprozessoren auf den Bereich der Belastung der virtuellen Prozessoren in einer Zeile oder einer Spalte begrenzt werden.
  • Es werden eine Toroidgitterarchitektur mit einer machbaren Anzahl von Knotenprozessoren und ein Lastausgleichsverfahren für einen parallel-arbeitenden Neurocomputer, der große Neuralnetzwerke simulieren kann, als Simulation eines mehrschichtigen Perzeptrons beschrieben. Obwohl die Beschreibung zum Fall eines mehrschichtigen Perzeptrons erfolgte, kann die Erfindung leicht auf einen anderen Typ von Neuronmodellen, wie das Hopfield-Modell angewandt werden. Insbesondere kann das diskrete Hopfield-Modell durch die Gleichungen (38), (39) und (40) ausgedrückt werden. Daher kann die Simulation des Hopfield-Modells durch dieselbe Verarbeitung wie der des Grundmodus des mehrschichtigen Perzeptrons dadurch ausgeführt werden, dass dafür gesorgt wird, dass die Gleichungen (38) und (39) der Funktion des Zellenkörpers entsprechen, d.h. dem Zellenprozessor, und dass die Gleichung (40) der Funktion der Synapse, d.h. dem Synapsenprozessor, entspricht:
  • yi(t) - yi(t - 1) = - &gamma; yi(t) + Si (38)
  • zi(t) = F(yi(t)) (39)
  • Fig. 14 ist eine Ansicht, die ein Ausführungsbeispiel eines erfindungsgemäßen Neurocomputers veranschaulicht. Der Neurocomputer umfasst einen Hostcomputer 601 und P Q (= 42) körperliche Prozessoren, die in einer Matrix mit der Zeilenanzahl P = 6 und der Spaltenanzahl Q = 7 angeordnet sind. Die Bezugszahlen 611, 612, ..., 617 repräsentieren die körperlichen Prozessoren in der ersten Zeile; 621, 622, ..., 627 repräsentieren dieselben in der zweiten Zeile; 661, 662, ..., 667 repräsentieren dieselben in der sechsten Zeile. Die körperlichen Prozessoren, die so angeordnet sind, dass sie eine Matrix bilden, sind, um ein Gitter zu bilden, mit vier körperlichen Prozessoren verbunden, nämlich dem oberen, unteren, rechten und linken körperlichen Prozessor. Die körperlichen Prozessoren 611, 621, ..., 661 in der ersten Spalte sind mit den körperlichen Prozessoren 617, 627, ..., 667 in der siebten Spalte, jeweils für dieselbe Zeile, verbunden. Die körperlichen Prozessoren 611, 612, ..., 617 in der ersten Zeile sind mit den körperlichen Prozessoren 661, 662, ..., 667 in der sechsten Zeile, jeweils derselben Spalte, verbunden. Die körperlichen Prozessoren 611, 612, ... 617 in der ersten Zeile sind über eine Busleitung 602 mit dem oben angegebenen Hostcomputer verbunden.
  • Nun wird ein Fall beschrieben, bei dem das Modell zu simulierender Neuralnetzwerke ein mehrschichtiges Perzeptron ist, wie in Fig. 15 dargestellt.
  • Das oben beschriebene mehrschichtige Perzeptron dient als Beispiel für das in Fig. 16A dargestellte hierarchische Netzwerk, das vier Schichten umfasst: eine Eingangsschicht, eine erste verborgene Schicht, eine zweite verborgene Schicht und eine Ausgangsschicht. Die Eingangsschicht verfügt über 1 = 3000 Ausseneingänge, während die erste verborgene Schicht, die zweite verborgene Schicht und die Ausgangsschicht 2000, 2000 bzw. 1000 Neuronelemente aufweisen. Das oben beschriebene mehrschichtige Perzeptron enthält 6 10&sup6; Verbindungen zwischen der Eingangsschicht und der ersten verborgenen Schicht, auf ähnliche Weise 4 10&sup6; Verbindungen zwischen der ersten verborgenen Schicht und der zweiten verborgenen Schicht, 2 10&sup6; Verbindungen zwischen der zweiten verborgenen Schicht und der Ausgangsschicht. Wenn das obige Perzeptron durch einen virtuellen Prozessor in Form einer Toroidgitterstruktur oder mit Verbindungen zum Ausbilden eines Rechteckgitters, simuliert wird, wird die Anordnung der Matrix des virtuellen Prozessors so gestaltet, wie es in Fig. 17 dargestellt ist. Die Matrix des obigen virtuellen Prozessors besteht aus (J + 1) = 5001 Zeilen und (I + J) = 8000 Spalten, wobei die Anzahl der Eingänge I und die Anzahl der Neuronelemente J ist. Die Matrix besteht aus Rechteckbereichen 401, 406 und 411, in denen nur Synapsenprozessoren W liegen, Rechteckbereichen 403, 404, 405, 408, 409 und 410, in denen nur Null-Prozessoren 0 liegen, da keine Verbindung vorhanden ist, Quadratbereichen 402, 407 und 412, in denen nur Zellenprozessoren C auf Diagonalkomponenten und nur die Null-Prozessoren O auf den Diagonalkomponenten liegen, und einem Bereich 400 aus den Eingangsprozessoren, den Ausgangsprozessoren und den Eingangs/Ausgangs-Prozessoren in der ersten Zeile gebildet wird. Der durch Zusammenfassen der Rechteckbereiche 401, 405 und 409 gebildete Bereich ist ein solcher, der eine Verbindung vom Eingangsanschluss in der oben angegebenen Eingangsschicht zu den anderen Neuronelementen aufweist, wobei dieser Bereich als "Bereich Ai" bezeichnet wird. Der durch Zusammenfassen der Rechteckbereiche 402, 406 und 410 gebildete Bereich ist ein solcher, der eine Verbindung von den Neuronelementen in der ersten verborgenen Schicht zu den anderen Neuronelementen zeigt; und dieser Bereich wird als "Bereich Bi" bezeichnet. Der durch Zusammenfassen der Rechteckbereiche 403, 407 und 411 gebildete Bereich ist ein solcher, der eine Verbindung von den Neuronelementen in der zweiten verborgenen Schicht zu den anderen Neuronelementen aufweist; dieser Bereich wird als "Bereich Ci" bezeichnet. Der durch die Rechteckbereiche 404, 408 und 412 gebildete Bereich ist ein solcher, der eine Verbindung von den Neuronelementen in der Ausgangsschicht zu den anderen Neuronelementen zeigt; dieser Bereich wird als "Bereich Di" bezeichnet. Der durch die Eingangs-, Ausgangs-und Eingangs/Ausgangs-Prozessoren in der ersten Zeile gebildete Bereich 400 ist als "Bereich Ei" ausgebildet. Ein durch Zusammenfassen der Rechteckbereiche 401, 402, 403 und 404 gebildeter Bereich ist ein solcher, der eine Verbindung von den anderen Neuronelementen zu den Neuronelementen in der ersten verborgenen Schicht zeigt; dieser Bereich wird als "Bereich Fi" bezeichnet. Ein durch Zusammenfassen der Rechteckbereiche 405, 406, 407 und 408 gebildeter Bereich ist ein solcher, der eine Verbindung von den anderen Neuronelementen zu den Neuronelementen in der zweiten verborgenen Schicht zeigt; dieser Bereich wird als "Bereich Gi" bezeichnet. Ein durch Zusammenfassen der Rechteckbereiche 409, 410, 411 und 412 gebildeter Bereich ist ein solcher, der eine Verbindung von den anderen Neuronelementen zu den Neuronelementen in der Ausgangsschicht zeigt; dieser Bereich wird als "Bereich Hi" bezeichnet. Um dafür zu sorgen, dass die Anzahlen der Zeilen und Spalten in den obigen Bereichen jeweils leicht erkennbar sind, sind in Fig. 17 Zeilennummern und Spaltennummern dargestellt.
  • Die oben angegebenen virtuellen Prozessoren sind den körperlichen Prozessoren wie folgt zugeordnet. In diesem Fall sind, da der Zellenprozessor C unter den fünf Typen virtueller Prozessoren die größte Belastung beim Rechenvorgang aufweist, die Rechteckbereiche mit dem Zellenprozessor C in Zeilen- und Spaltenrichtung unterteilt. Ferner sind die Bereiche, die keinen Zellenprozessor C enthalten, in Spaltenrichtung unterteilt (sie sind nicht in Zeilenrichtung unterteilt). Die durch die obige Unterteilung erzeugten kleinen Matrizen (nachfolgend als "Blöcke" bezeichnet) sind jeweils den körperlichen Prozessoren zugeordnet. Die restlichen Zeilen oder Spalten, wie sie bei der obigen Unterteilung erzeugt werden, werden als vorbestimmter Rest zwischengespeichert, bevor sie jeweils den körperlichen Prozessoren zugeordnet werden.
  • (1) Als erstes werden die Rechteckbereiche Ai, in denen kein Zellenprozessor C enthalten ist, in im wesentlichen gleiche Q (= 7) Abschnitte in Spaltenrichtung (in vertikaler Richtung) unterteilt. Im Ergebnis werden 428 Spalten pro Block errichtet und es entsteht ein Rest von vier Spalten. Dann wird jeder der oben angegebenen Blöcke jeder Spalte der sieben Spalten der oben angegebenen körperlichen Prozessoren zugeordnet.
  • (2) Dann werden die Rechteckbereiche Bi mit Zellenprozessor C sowohl in Zeilen- als auch in Spaltenrichtung in P Q (= 42) Abschnitte unterteilt. Die Rechteckbereiche Ci und Di werden auf ähnliche Weise in Zeilen- und Spaltenrichtung in 42 Abschnitte unterteilt. Die oben angegebenen Rechteckbereiche Bi und Ci werden in 47 Spalten pro Block unterteilt, und es wird ein Rest von 26 Spalten erzeugt. Die Rechteckbereiche Di werden in 23 Spalten pro Block unterteilt, und es wird ein Rest von 34 Spalten erzeugt. Fig. 18 ist eine Ansicht, die einen Zustand veranschaulicht, bei dem ein Bereich BiFi vorliegt, in dem die oben angegebenen Rechteckbereiche Bi und Fi überlappen. Dann erfolgt eine Unterteilung dieses Bereichs BiFi sowohl in Spalten- als auch Zeilenrichtung in 42 Abschnitte und in einer Zusammenfassung von jeweils 7 Blöcken werden Bereiche 711, 712, ... gebildet. Diese Bereiche 711, 712, ... enthalten jeweils Blöcke 7111 bis 7117, 7121 bis 7127, ... Die Blöcke im oben angegebenen Rechteckbereich Bi werden mit einem Zyklus von 7 Blöcken entnommen. Sechs der so entnommenen Blöcke werden einer Spalte der körperlichen Prozessoren zugeordnet. Diese Zuordnung von sechs Blöcken wird für jede der Spalten der körperlichen Prozessoren ausgeführt. Im Fall des oben angegebenen Bereichs BiFi werden die virtuellen Prozessoren der ersten Spalte des körperlichen Prozessors mit jeweils 47 Spalten für einen Block (ein Block) mit einem Zyklus von 329 Spalten (7 Blöcke) zugeordnet. Z.B. werden die 6 Blöcke 7111, 7121, 7131, 7141, 7151 und 7161 dem in Fig. 14 dargestellten körperlichen Prozessor 611 zugeordnet. Auf ähnliche Weise werden die Blöcke 7112 bis 7162 dem körperlichen Prozessor 612 zugeordnet, die Blöcke 7113 bis 7163 werden dem körperlichen Prozessor 613 zugeordnet, die Blöcke 7114 bis 7164 werden dem körperlichen Prozessor 614 zugeordnet und die Blöcke 7117 bis 7167 werden dem körperlichen Prozessor 617 zugeordnet.
  • (3) Wenn jeder der Rechteckbereiche ausser dem Rechteckbereich Ei in P Q (= 42) Abschnitte, ähnlich wie für die Spaltenrichtung, in der Zeilenrichtung des oben beschriebenen virtuellen Prozessors unterteilt ist, werden die Rechteckbereiche Bi und Gi jeweils so angeordnet, dass 47 Zeilen pro Block vorliegen, und es entsteht ein Rest von 26 Zeilen. Der Rechteckbereich Hi wird so gestaltet, dass er 23 Zeilen pro Block enthält, und es wird ein Rest von 34 Zeilen erzeugt. Die Zeilen werden nicht permutiert und es werden 7 Blöcke als solche in jedem der Rechteckbereiche zusammengefasst, d.h., dass in den Rechteckbereichen Fi und Gi 329 Zeilen zusammengefasst sind und im Rechteckbereich Hi 161 Zeilen zusammengefasst sind, wie sie jeweils jeder der Zeilen des oben beschriebenen körperlichen Prozessors zugeordnet werden. Z.B. werden die Blöcke 7111 bis 7161 dem körperlichen Prozessors 611 zugeordnet, die Blöcke 7211 bis 7261 werden dem körperlichen Prozessor 621 zugeordnet, die Blöcke 7311 bis 7361 werden dem körperlichen Prozessor 631 zugeordnet und die Blöcke 7611 bis 7661 werden dem körperlichen Prozessor 661 zugeordnet.
  • (4) Nachdem das vorstehend beschriebene Zuordnen jedes Blocks ausgeführt ist, werden die bei den Unterteilungen erzeugten Reste den körperlichen Prozessoren zugeordnet.
  • Als erstes werden die bei den Unterteilungen in Spaltenrichtung erzeugten Reste verarbeitet. Ein Rest wird vorab bereitgestellt und die folgenden 90 Spalten werden in diesen Rest eingespeichert: 4 Spalten (die Spalten 2997, 2998, 2999 und 3000), wie sie beim Unterteilen des oben angegebenen Rechteckbereichs Ai in 7 Abschnitte erzeugt wurden, 26 Spalten (die Spalten 4975 bis 5000), wie sie beim Unterteilen des Rechteckbereichs Bi erhalten wurden, 26 Spalten (die Spalten 6975 bis 7000), wie sie beim Unterteilen des Rechteckbereichs Ci erhalten wurden, und 34 Spalten (die Spalten 7967 bis 8000), wie sie beim Unterteilen des Rechteckbereichs Di erhalten wurden. Die Spalten der Restanordnungen werden den körperlichen Prozessoren von 7 Spalten auf zyklische Weise für jede Spalte zugeordnet. D.h., dass 13 Spalten der Spalten des virtuellen Prozessors von der ersten bis zur sechsten Spalte des körperlichen Prozessors zugeordnet werden und 12 Spalten der Spalten des virtuellen Prozessors der siebten Prozessorspalte zugeordnet werden. Z.B. werden der ersten Spalte des körperlichen Prozessors die folgenden 13 Spalten neu zugeordnet: die Spalten 2997, 4978, 4985, 4992, 4999, 6980, 6987, 6994, 7967, 7974, 7981, 7988 und 7995.
  • Dann wird der Rest verarbeitet, wie er erzeugt wurde, als die Matrix der virtuellen Prozessoren in der Zeilenrichtung unterteilt wurde. Bei den oben angegebenen Restanordnungen werden die folgenden 85 Zeilen abgespeichert: die restlichen 26 Zeilen (die Zeilen 1976 bis 2001), wie sie beim Unterteilen des oben angegebenen Rechteckbereichs Fi erzeugt werden; die 26 Zeilen (die Zeilen 3976 bis 4001), wie sie beim Unterteilen des oben angegebenen Rechteckbereichs Gi erzeugt wurden; und die 34 Zeilen (die Zeilen 4968 bis 5001), wie sie beim Unterteilen des oben angegebenen Rechteckbereichs Hi erzeugt wurden. Dann werden, da der Rechteckbereich Ei der ersten Zeile der oben angegebenen körperlichen Prozessoren zugeordnet ist, die Zeilen der oben angegebenen Restanordnungen ab der zweiten Zeile der körperlichen Prozessoren in sechs Zeilen für jeweils eine Zeile auf zyklische Weise zugeordnet. D.h., dass 15 Zeilen der virtuellen Prozessoren der ersten bis dritten Zeile der körperlichen Prozessoren einschließlich einer Zeile des Rechteckbereichs Ei zugeordnet werden und 15 Zeilen von der vierten bis sechsten Zeile zugeordnet werden. Z.B. sind der ersten Zeile des körperlichen Prozessors die folgenden 15 Zeilen zugeordnet: die Zeilen 1981, 1987, 1993, 1999, 3979, 3985, 3991, 3997, 4969, 4975, 4981, 4987, 4993 und 4999.
  • Fig. 19 ist eine Ansicht, die eine Anordnung veranschaulicht, bei der die oben angegebenen virtuellen Prozessoren dem körperlichen Prozessor 611 in der ersten Zeile und ersten Spalte zugeordnet sind. In der Zeichnung reprasentiert das Symbol a einen Bereich, dem der Rechteckbereich Ai zugeordnet ist; b1, b2, b3, ..., b6 sind Bereiche, denen der Rechteckbereich Bi zugeordnet ist; c1, c2, ..., c6 sind Bereiche, denen der Rechteckbereich Ci zugeordnet ist; d1, d2, ..., d6 sind Bereiche, denen der Rechteckbereich Di zugeordnet ist; und die Bezugszahl 802 kennzeichnet einen Bereich, dem die Reste zugeordnet sind, wie sie bei jeder der Unterteilungen in Spaltenrichtung erzeugt werden. Andererseits repräsentiert das Symbol e einen Bereich, dem der Rechteckbereich Ei zugeordnet ist; f repräsentiert einen Bereich, dem der Rechteckbereich Fi zugeordnet ist; g repräsentiert einen Bereich, dem der Rechteckbereich Gi zugeordnet ist; h repräsentiert einen Bereich, dem der Rechteckbereich Hi zugeordnet ist; und die Bezugszahl 801 repräsentiert einen Bereich, dem der Rest zugeordnet ist, wie er bei der Unterteilung in Zeilenrichtung erzeugt wird. Die Nummern in Spalten-und Zeilenrichtung repräsentieren die Spalten- und Zeilennummern der virtuellen Prozessoren.
  • Demgemäß können der Synapsenprozessor W und der Zellenprozessor, wie sie in jedem Rechteckbereich enthalten sind, im wesentlichen gleichmäßig dadurch einem körperlichen Prozessor zugeordnet werden, dass die virtuellen Prozessoren, die das Perzeptronmodell simulieren können, abgeteilt werden und sie einem tatsächlichen Prozessor zugeordnet werden. Daher kann ein Neurocomputer eine Abweichung zwischen den Berechnungsbelastungen der körperlichen Prozessoren beseitigen und der Wirkungsgrad bei der Parallelverarbeitung kann verbessert werden und die zum Abschließen des Berechnungsvorgangs erforderliche Zeit kann verkürzt werden.
  • Es wird nun eine allgemeine Zuordnungsweise hinsichtlich eines üblichen Perzeptrons beschrieben.
  • Es sei angenommen, dass die Dimension (die Anzahl der Neuronelemente in der 0-ten Schicht) des Eingangsvektors in das Neuralnetzwerk L&sub0; ist, die Anzahl der Schichten einschließlich der Eingangsschicht und der Ausgangsschicht M ist, die Anzahl der Neuronelemente in der k-ten Schicht Lk ist, die Anzahl aller Neuronelemente
  • ist und der hier zu verwendende körperliche Prozessor so angeordnet ist, dass er sich über P Zeilen und Q Spalten (P Q Stück) erstreckt. Der virtuelle Prozessor wird gemäß dem in Fig. 20 dargestellten Ablauf zugeordnet, wobei das Symbol (A mod B) den Rest der Teilung von A durch B repräsentiert und int den ganzzahligen Anteil von x repräsentiert.
  • (5) Als erstes wird die Zeilenadresse permutiert.
  • Es sei angenommen, dass das Symbol s die Spaltenadresse der imaginären Prozessormatrix repräsentiert.
  • (a) wenn 0 < s &le; L&sub0; gilt:
  • Die Permutationsadresse oder Spaltenadresse s wird im aktuellen Prozessor in der Spalte n positioniert:
  • n = int(s/int(L&sub0;/Q)) + 1 (41),
  • in der Spalte u ab dem Vorderende,
  • u = s - (n - 1) int (L&sub0;/Q) (42)
  • und dann, wenn ein Rest vorliegt, d.h. im Fall (L&sub0; mod Q) &ne; 0 wird der folgende Wert s in ein mit "Überschuss" bezeichnetes Array eingespeichert:
  • L&sub0; - (L&sub0; mod Q) < s &le; L&sub0;,
  • mit DkPQ = int (LK/P/Q),
  • (b) wenn Ck < s &le; Ck + Lk gilt:
  • Hierbei gilt: DkPQ = int(Lk/P/Q),
  • Die Permutationsadresse der Spaltenadresse ist im körperlichen Prozessor in der Spalte n:
  • n = (int((s - Ck)/DkPQ)mod Q) + 1 (43),
  • in der Spalte u ab der obersten Spalte des körperlichen Prozessors:
  • wenn ein Rest existiert, d.h. dann, wenn (Lk mod(P Q)) &ne; 0 gilt, wird der Rest wie folgt ausgedrückt:
  • Ck + Lk - (Lk mod(P Q)) < s &le; Ck + Lk (45).
  • S wird in das mit "Überschuss" bezeichnete Array eingespeichert (Schritte s¹ und s²).
  • (6) Dann wird das Überschussarray verarbeitet.
  • Das oben angegebene Überschussarray wird dem körperlichen Prozessor für q Spalten auf zyklische Weise für jede Spalte zugeordnet (Schritt S&sub3;).
  • (7) Dann wird die Zeilenadresse permutiert.
  • Es sei angenommen, dass t eine Zeilenadresse repräsentiert:
  • - wenn t = 1 gilt, erfolgt eine Zuordnung zum Prozessor der ersten Zeile.
  • - wenn Ck + 1 < t &le; Ck + Lk + 1 gilt, mit DkPQ = int(Lk/P/Q), gilt:
  • Die Permutationsadresse der Zeilenadresse t ist für den körperlichen Prozessor in der Zeile m:
  • m = int((t - Ck - 1)/Q/DkPQ) + 1 (46),
  • in der Zeile v ab dem Vorderende:
  • Wenn ein Rest existiert, d.h., wenn (Lk mod(P Q)) &ne; 0, wird t wie folgt ausgedrückt:
  • Ck + Lk - (Lk mod(P Q)) < t &le; Ck + Lk (48)
  • und in das Überschussarray eingespeichert (Schritte S&sub4; und S&sub5;).
  • (8) Abschließend wird das Überschussarray verarbeitet.
  • Das oben angegebene Überschussarray wird ab der zweiten Zeile körperlicher Prozessoren für jede Zeile auf zyklische Weise dem körperlichen Prozessor in der Zeile P zugeordnet (Schritt S&sub6;).
  • Nun wird ein Fall beschrieben, bei dem der oben angegebene Neurocomputer P Q (= 6) körperliche Prozessoren aufweist, die in einer Matrix mit der Zeilenzahl P = 2 und der Spaltenzahl Q = 3 angeordnet sind, wobei das zu simulierende Modell von Neuralnetzwerken das in Fig. 21 dargestellte Hopfield-Modell ist.
  • Dieses Netzwerk vom Hopfield-Typ ist ein Beispiel für die in Fig. 16D dargestellte Struktur, bei der die Anzahl aller Neuronen I = 1000 ist und die Anzahl der Verbindungen (I I) ist. Wenn das Hopfield-Neztwerk durch in einem Toroidgitter oder einem Rechteckgitter miteinander verbundene virtuelle Prozessoren simuliert wird, ist die Matrix des virtuellen Prozessors dergestalt, wie in Fig. 22 dargestellt. Die Matrix dieses virtuellen Prozessors besteht aus (I + 1) = 1001 Zeilen und 21 = 2000 Spalten, wobei diese Matrix aus einem Bereich 1101, in dem nur die Synapsenprozessoren W in der Diagonalkomponente angeordnet sind und nur die Nullprozessoren 0 in der Nichtdiagonalkomponente angeordnet sind, einem Bereich 1102, in dem nur die Zellenprozessoren in der Diagonalkomponente angeordnet sind und nur die Synapsenprozessoren W in der Nichtdiagonalkomponente angeordnet sind, und einem Bereich 1103 (erste Zeile) besteht, in dem die Eingangsprozessoren (durch das Symbol O repräsentiert) und die Ausgangsprozessoren (durch das Symbol I repräsentiert) angeordnet sind.
  • Die oben angegebenen imaginären Prozessoren werden den tatsächlichen Prozessoren beim durch Fig. 23 veranschaulichten Ablauf wie folgt zugeordnet:
  • (9) Die Bereiche 1101 und 1102 werden in Spaltenrichtung im wesentlichen gleichmäßig in P Q (= 6) Blöcke unterteilt. Die Bereiche 1101 und 1102 werden jeweils in 166 Spalten pro Block unterteilt und es wird ein Rest von 4 Spalten erzeugt. Die in den Bereichen 1101 und 1102 zusammengefassten Blöcke werden mit einem Zyklus von 3 Blöcken in Spaltenrichtung entnommen. Die so entnommenen 4 Blöcke werden einer Spalte des körperlichen Prozessors zugeordnet. Jeweils dieselbe Zuordnung von 4 Blöcken wird für die Spalten der körperlichen Prozessoren ausgeführt.
  • Indessen wird der Rest von 8 Spalten, wie bei den oben angegebenen Unterteilungen erzeugt, im Überschussarray zwischengespeichert, das vorab erstellt wurde, um zyklisch einer Restspalte für eine körperliche Spalte zugeordnet zu werden, jeweils ab der ersten Spalte der körperlichen Prozessoren. Z.B. werden 3 Spalten, die Spalten 997, 1000 und 1999 der ersten Spalte des körperlichen Prozessors zugeordnet. Auf ähnliche Weise werden 3 Spalten der restlichen 8 Spalten der Spalte des zweiten körperlichen Prozessors zugeordnet, und die restlichen 2 Spalten des Rests von 8 Spalten werden der dritten Spalte körperlicher Prozessoren zugeordnet.
  • (10) Dann werden die oben angegebenen Bereiche 1101 und 1102 in Zeilenrich tung im wesentlichen gleichmäßig in P Q (= 6) Blöcke unterteilt. Es wird eine Anordnung von 166 Zeilen pro Block ausgebildet und es wird ein Rest von 4 Zeilen erzeugt. Die Reihen werden nicht permutiert, und dieselben werden mit einer Einheit von 3 Blöcken zusammengefasst, um jeder der Zeilen des oben angegebenen körperlichen Prozessors zugeordnet zu werden. Z.B. werden die Zeilen 2 bis 499 des oben angegebenen virtuellen Prozessors der ersten Zeile körperlicher Prozessoren zugeordnet. Die restlichen 4 Zeilen werden im Überschussarray zwischengespeichert, bevor sie zyklisch ab der zweiten Zeile den körperlichen Prozessoren der 2 Zeilen für jede Zeile zugeordnet werden. Z.B. werden die Zeilen 999 und 1001 des virtuellen Prozessors der ersten Zeile körperlicher Prozessoren zugeordnet, und die Zeilen 998 und 1000 des virtuellen Prozessors werden der zweiten Zeile körperlicher Prozessoren zugeordnet.
  • Die Fig. 23A und 23B sind Ansichten, die die Anordnung veranschaulichen, wie sie dadurch erzeugt wird, dass die virtuellen Prozessoren den körperlichen Prozessoren in der ersten Zeile und ersten Spalte sowie in der zweiten Zeile und zweiten Spalte zugeordnet werden.
  • Wie oben beschrieben, kann, wenn ein virtueller Prozessor, der das Hopfield-Modell simulieren kann, so aufgeteilt wird, dass eine Zuordnung zu körperlichen Prozessoren erfolgt, ein Neurocomputer unausgeglichene Berechnungsbelastungen zwischen den körperlichen Prozessoren beseitigen, ähnlich wie beim oben beschriebenen Perzeptronmodell. Im Ergebnis kann der Wirkungsgrad bei der Parallelverarbeitung verbessert werden und die erforderliche Zeit zum Abschließen der Berechnungen kann verkürzt werden.
  • Die allgemeine Zuordnung kann für ein übliches Hopfield-Modell gemäß dem in Fig. 23 dargestellten Ablauf wie folgt ausgeführt werden:
  • (11) Als erstes werden die Spaltenadressen permutiert.
  • Es sei angenommen, dass das Symbol s die Spaltenadresse repräsentiert.
  • (a) Wenn 0 < s &le; 1 gilt, mit DPQ = int(I/P/Q):
  • Die permutierte Adresse der Spaltenadresse ist im körperlichen Prozessor in der Spalte n:
  • n = (int(s/DPQ) mod Q) + 1 (49),
  • in der die Spalte u ab dem Vorderende:
  • u = int(s/Q/DPQ) DPQ + (s mode DPQ) + 1 (50),
  • und wenn ein Rest vorhanden ist, d.h. wenn (I mod (P Q)) &ne; 0 gilt, wird der wie folgt ausgedrückte Wert s in das Überschussarray eingespeichert:
  • I - (I mod (P Q)) < s &le; I
  • (b) Wenn I < s &le; 2I gilt:
  • die permutierte Adresse der Spaltenadresse ist im körperlichen Prozessor in der Spalte n:
  • n = int( (s - I)/Q/DPQ) + 1 (51),
  • in der Spalte u ab dem Vorderende:
  • u = DPQ P int ((s - I)/Q/DPQ) DPQ + ((s - I) mod DPQ) + 1 (52).
  • Wenn ein Rest existiert, d.h, wenn (I mod(P Q)) &ne; 0 gilt, wird der wie folgt ausgedrückte Wert s in das Überschussarray eingespeichert (Schritte S¹ und S&sub2;):
  • 2I - (I mod (P Q)) < s &le; 2I (53).
  • (12) Dann wird das Überschussarray verarbeitet.
  • Das oben angegebene Überschussarray wird zyklisch für jede Spalte aufeinanderfolgend den körperlichen Prozessoren in Q Spalten zugeordnet (Schritt S3).
  • (13) Dann wird die Zeilenadresse permutiert.
  • Es sei angenommen, dass t die Zeilenadresse repräsentiert:
  • - wenn t = 1 gilt, erfolgt eine Zuordnung zum Prozessor in der ersten Zeile;
  • - wenn 1 < t gilt, beträgt die permutierte Adresse zur Zeilenadresse t im körperlichen Prozessor in der Zeile m:
  • m = int ((t - 1)/DPQ/Q) + 1 (54),
  • in der Zeile v ab dem Vorderende:
  • v = t - 1 - (m - 1) Q DPQ + &delta;lm (55).
  • Wenn ein Rest existiert, d.h., wenn (I mod (P Q)) &ne; 0 gilt, wird der wie folgt ausgedrückte Wert t in das mit "Überschuss" benannte Array eingespeichert (Schritte S&sub4; und S&sub5;):
  • I + 1 - (I mod(P Q)) < t &le; I + 1 (56).
  • (14) Abschließend wird das Überschussarray verarbeitet.
  • Der oben angegebene Überschuss wird aufeinanderfolgend den körperlichen Prozessoren in der Zeile P ab der zweiten Zeile körperlicher Prozessoren für jede Zeile auf zyklische Weise zugeordnet (Schritt S&sub6;).
  • Die obige Beschreibung erfolgte zu einem Beispiel, bei dem der erfindungsgemäße Neurocomputer auf das Modell zu einem mehrschichtigen Perzeptron und auf das Hopfield-Modell angewandt ist. Die Erfindung ist nicht auf diese zwei Netzwerkmodelle begrenzt. Z.B. kann die Erfindung auf Netzwerkmodelle von anderem Typ angewandt werden, wie sie in den Fig. 16B und 16C dargestellt sind.
  • Wenn alle Neuronelemente zwischen den Schichten in den in den Fig. 16A und 16B dargestellten Modellen angeschlossen sind, wenn alle Neuronen in derselben Schicht und zwischen den Schichten im in Fig. 16C dargestellten Modell angeschlossen sind, und wenn alle Neuronelemente im in Fig. 16D dargestellten Modelle angeschlossen sind, sorgen imaginäre Prozessoren, die so angeschlossen sind, dass sie ein Toroidgitter oder ein Rechteckgitter bilden, dafür, dass das Muster der Matrix der virtuellen Prozessoren dergestalt ist, wie es in den Fig. 24A, 24B, 24C und 24D dargestellt ist, wobei das Symbol W einen Synapsenprozessor repräsentiert, O einen Nullprozessor repräsentiert (der einem Fall entspricht, bei dem keine Verbindung zwischen den Neuronen vorhanden ist), und C einen Zellenprozessor (nachfolgend gemeinsam vorliegend) repräsentiert. Um die Beschreibung zu vereinfachen, sind aus der Veranschaulichung die Eingangsprozessoren, die Ausgangsprozessoren und die Eingangs/Ausgangs-Prozessoren, die in der ersten Zeile liegen, weggelassen. Wie es in dem Figuren dargestellt ist, erzeugt die Matrix imaginärer Prozessoren einen Rechteckbereich, in dem derselbe Typ von Prozessoren vorliegt, und einen Rechteckbereich, in dem derselbe Prozessortyp auf der Diagonalkomponente vorliegt und die Prozessoren des anderen Typs in der nichtdiagonalen Komponente vorhanden sind. Die oben angegebenen Rechteckbereiche sind in fünf Typen von Rechteckbereichen eingeteilt, wobei die erste Zeile ausgeschlossen ist, wie es in den Fig. 25A bis 25E dargestellt ist. Die Fig. 25A und 25B zeigen den Bereich des erstgenannten Typs, während die Fig. 25C, 25D und 25E den Bereich des letztgenannten Typs zeigen.
  • Wie oben beschrieben, kann gemäß der Erfindung ein Neurocomputer geschaffen werden, der große Neuralnetzwerke mit hoher Geschwindigkeit durch paralleles Betreiben einer Vielzahl von Prozessoren simulieren kann.
  • Insbesondere kann ein Problem hinsichtlich komplizierter Verbindungen zwischen den Prozessoren, wie es auftritt, wenn große Neuralnetzwerke durch Parallelprozessoren auf parallele Weise simuliert werden, durch eine Toroidgitterarchitektur überwunden werden, die für enge Packung extrem praktisch ist. Ferner kann bei der Parallelverarbeitung durch parallele Prozessoren die Belastung dadurch ausgeglichen werden, dass eine Permutation entlang der Zeilen und Spalten der Matrix virtueller Prozessoren erfolgt. Ferner kann Informationsverarbeitung zwischen den körperlichen Prozessoren für jede der Zeilen und Spalten parallel zum Berechnungsvorgang ausgeführt werden. Daher verschlechtert sich die Verarbeitungsfunktion nicht aufgrund der Übertragungskapazität. Daher kann das Funktionsvermögen jedes der Prozessoren in ausreichender Weise realisiert werden. Demgemäß kann die Verarbeitungsfunktion des Neurocomputers proportional zur Anzahl der vorhandenen Prozessoren verbessert werden. Andererseits kann der angegebene Neurocomputer selbst dann, wenn die Anzahl körperlicher Prozessoren bestimmt ist, ein Neuralnetzwerk simulieren, das aus einer nicht festgelegten Anzahl von Neuronen besteht. Jedoch ist die Größe des Neuralnetzwerks, das der Neurocomputer mit Toroidgitterschaltung simulieren kann, durch die Kapazität des Speichers in einem körperlichen Prozessor begrenzt. Dies bedeutet, dass der Neurocomputer in Toroidgitterschaltung ein Neuralnetzwerk unabhängig von seiner Größe simulieren kann, wenn ausreichend große Speicher vorhanden sind. Auf dieselbe Weise nimmt das Funktionsvermögen des Toroidgitter-Neurocomputers proportional zur Anzahl angeschlossener Prozessoren zu. Ferner können, da das durch diese Erfindung beanspruchte Verbindungsmodell die Funktion von Neuronen allgemein repräsentiert, verschiedene Neuralnetzwerkmodelle neben dem Modell mit mehrschichtigem Perzeptron und dem Hopfield- Netzwerkmodell auf diesem Neurocomputer simuliert werden.
  • Nun wird das zweite Ausführungsbeispiel der Erfindung im einzelnen beschrieben, ohne dieselben Teile des ersten Ausführungsbeispiels (mit Ausnahme einer Wiederholung der erforderlichen Gleichungen) zu beschreiben. Beim zweiten Ausführungsbeispiel gilt:
  • yj = wj v (5).
  • Ferner kann durch Zerlegen der Gleichung (5) yji durch die Rekursionsformeln der Gleichungen (6) und (57) wiedergegeben werden:
  • yji = yji-1 + wij vi (6).
  • yji = yji+1 + wij vi (57).
  • Gemäß dem Modell neuraler Netzwerke dieses Typs entsprechen die Gleichungen (3), (5), (6) und (57) der Funktion jeder der Synapsen, wobei die Funktion die Produkt-Summen-Operation zwischen dem Verbindungskoeffizient (der Gewichtung) der Synapse und dem Eingangssignal der Neuralnetzwerke oder dem Ausgangssignal der Neuronenzelle ist. Die Gleichung (4) entspricht der Funktion jedes der Neuronenzellenkörper.
  • Gemäß dem zweiten Ausführungsbeispiel sind zum Ausführen der größten Anzahl von Produkt-Summen-Operationen bei den Berechnungen zu den Neuralnetzwerken auf parallele Weise die Operationen der Gleichungen (6) und (57), gemäß denen die Partialsumme, d.h. die Zerlegung der Produkt-Summen-Operation, berechnet wird, und die Einspeicherung der Gewichtung, die bei dieser Berechnung erforderlich ist, erfolgt, in der Synapsenprozessorfunktion enthalten. Die Berechnung gemäß der Gleichung (4), entsprechend der Funktion des Zellenkörpers wird durch den Zellenprozessor ausgeführt. Die Synapsen prozessoren und die Zellenprozessoren sind über einen bidirektionalen Kanal miteinander verbunden, um ein Rechteckgitter auszubilden, und sie können Information mit dem oberen, dem unteren, dem rechten und dem linken Prozessor austauschen.
  • Im Fall der Gleichung (6), betreffend yji = wij vi wird z.B. die Partialsumme vom ganz linken Synapsenprozessor wie beim ersten Ausführungsbeispiel durch die Synapsenprozessoren in einer Zeile hindurch in der Richtung nach rechts berechnet. Wenn der Prozess den in der Zeile liegenden Zellenprozessor erreicht, ist die Produkt-Summen-Operation abgeschlossen.
  • Indessen empfängt der Synapsenprozessor im Fall der Gleichung (57) das vom oberen Synapsenprozessor übertragene Signal vi und er führt die Produktoperation zwischen der Gewichtung wij des Synapsenprozessors und dem Signal vj aus. Dann wird die vom rechten Synapsenprozessor empfangene Partialsumme yji+1 zum Ergebnis der Produktoperation addiert, so dass eine neue Partialsumme yji = yji+1 + wij vi erhalten ist. Abschließend wird die so erhaltene neue Partialsumme an den linken Synapsenprozessor übertragen. Andererseits überträgt der Synapsenprozessor das vom oberen Synapsenprozessor übertragene Signal vi an den unteren Synapsenprozessor.
  • Die Partialsumme yj = WH+J, j VH+J, wie vom ganz rechten Synapsenprozessor berechnet, durchläuft die Synapsenprozessoren in einer Zeile in der Richtung nach links. Wenn der Prozess den in der Zeile liegenden Zellenprozessor erreicht, ist die Summenbildung zur Produktoperation abgeschlossen.
  • Wenn die Ergebnisse der Summen der Produkte aus den beiden Richtungen addiert werden, wird das Additionsergebnis bei der Berechnung zur Gleichung (4) im Zellenprozessor verwendet. Das berechnete Ausgangssignal zj aus dem Zellenkörper wird in die Zellenprozessoren eingespeichert und dann an den oberen und unteren Synapsenprozessor übertragen, um bei der folgenden Berechnung verwendet zu werden.
  • Wenn angenommen wird, dass der Synapsenprozessor, der Zellenprozessor, der Eingangsprozessor, der Ausgangsprozessor, der Eingangs/Ausgangs-Prozessor virtuelle Prozessoren sind, werden die Gruppen virtueller Prozessoren so angeordnet, dass J + 1 Zeilen und H + J Spalten gebildet sind, die in vertikaler Richtung in P Abschnitte und in horizontaler Richtung in Q Abschnitte unterteilt werden, wobei jedem wie oben beschrieben unterteilten Rechteckbereich ein körperlicher Prozessor zugeordnet wird, und jeder körperliche Prozessor wird so angeschlossen, dass ein Rechteckgitter mit P Zeilen und Q Spalten gebildet ist&sub1; wobei jeder der körperlichen Prozessoren die vom Synapsenprozessor ausgeführte Produkt-Summen-Operation parallel ausführen kann. Die Gleichungen (6) und (57) können für jeden der körperlichen Prozessoren wie folgt in Gleichungen umgeschrieben werden:
  • wobei Ilq und Iuq die erste bzw. letzte Spaltennummer des Rechteckbereichs repräsentieren, der dem körperlichen Prozessor in der Zeile P und der Spalte Q entspricht. Die Produkt-Summen-Operation in der hinteren Hälfte auf den rechten Seiten der Gleichungen (7) und (58) kann für jeden der körperlichen Prozessoren parallel ausgeführt werden, wie oben beschrieben, wobei durch weitere Zerlegung der Gleichung (23) yjk (n, m) mittels der Rekursionsformeln der Gleichungen (58) bis (61) als Partialsumme ausgedrückt werden kann:
  • yjl(n,m) = wlj(n) vl(n,m) (58)
  • yjk(n,m) = yjk-1(n,m) + wk,j(n) vk(n, m)
  • [k= 2, ..., g(j)] (59)
  • yjH+J(n,m) = wH+J,j(n) vH+J(n,m) (60)
  • yjk(n,m) = yjk+l(n,m) + wk,j(n) vk(n,m)
  • [k = g(j)+1, ..., H+J-l) (61)
  • Auf ähnliche Weise kann die Gleichung (30) unter Verwendung von Sjk(n) durch die Rekursionsformeln der Gleichungen (62) bis (65) ausgedrückt werden:
  • Sjl(n,l) = &delta;l(n.l) wg(j),l(n) (62)
  • Sjk(n,l) = Sjk-l(n,l) + &delta;k (n,l) ' wjk(n)
  • [k = 2, .., j] (63)
  • SjJ(n,l) = &delta;J(n,l) wg(j), J(n) (64)
  • Sjk(n,l) = Sjk+l(n,l) + &delta;k(n,l) wg(j),k(n)
  • [k = j+l, ..., J-l] (65)
  • In Fig. 26 ist eine Ansicht dargestellt, die die Architektur des Parallelverarbeitungssystems des zweiten Ausführungsbeispiels veranschaulicht, bei der fünf Typen von Prozessoren gebildet sind: Synapsenprozessoren, Zellenprozessoren, Eingangsprozessoren, Ausgangsprozessoren sowie Eingangs/Ausgangs-Prozessoren, wobei einen Synapsenprozessor repräsentiert, einen Zellenprozessor repräsentiert, einen Eingangsprozessor repräsentiert, einen Ausgangsprozessor repräsentiert und einen Eingangs/Ausgangs-Prozessor repräsentiert.
  • In der Zeile 0 ist die Anzahl H von Eingangsprozessoren 100 bis 102, die Anzahl 1 von Ausgangsprozessoren 103 bis 106 und die Anzahl (J-I) an Eingangs/Ausgangs-Prozessoren 107 bis 108 angeordnet. Von der ersten bis zur J-ten Zeile sind (H + J - 1) Synapsenprozessoren, 110 bis 112, 114 bis 121, 123 bis 133, 135 bis 143, 145 bis 146, 150 bis 151, 153 bis 163, 165 bis 169 und 180 bis 188 sowie jeweils ein Zellenprozessor 113, 122, 134, 144, 152, 164, 178 und 189 angeordnet. Die Zellenprozessoren sind in einer diagonalen Linie von der ersten Zeile und der (H + 1)-ten Spalte zur J-ten Zeile und der (H + J)-ten Spalte angeordnet.
  • Jeder der Synapsenprozessoren und der Zellenprozessoren sind mit dem oberen, unteren, rechten und linken Synapsenprozessor oder Zellenprozessor über einen bidirektionalen Kanal in Form eines Rechteckgitters verbunden. Es existiert keine Verbindung an der linken Seite der ganz linken Prozessoren, der rechten Seite der ganz rechten Prozessoren und der Unterseite der ganz unten liegenden Prozessoren.
  • Die Eingangsprozessoren 103 bis 106 und die Eingangs/Ausgangs-Prozessoren 107 bis 108 in der obersten Zeile sind jeweils über Signalleitungen 190 bis 198 mit einem externen Prozessor verbunden. Als Ergebnis der errichteten Verbindungen bilden die Synapsenprozessoren, die Zellenprozessoren, die Ausgangsprozessoren und die Eingangs/Ausgangs-Prozessoren ein ebenes Rechteckgitter. Es wird nun eine Weise beschrieben, gemäß der die Lernverarbeitung des in Fig. 5 dargestellten mehrschichtigen Perzeptrons mit den Prozessorgruppen ausgeführt wird, die mit der in Fig. 26 dargestellten Rechteckgitterform verbunden sind.
  • S1 Initialisierung von Gewichtungen
  • Die Gewichtung wij(n), wie sie durch die Synapsenprozessoren, deren Verbindungskoeffizienten Fij = 1 unter den Synapsenprozessoren 110 bis 112, 114 bis 121, 123 bis 133, 135 bis 143, 145 bis 146, 150 bis 151, 153 bis 163, 165 bis 169 und 180 bis 188 gespeichert werden, werden mit einer Zufallszahl initialisiert.
  • S2 Zuführen von Trainingsdaten
  • Beim Zuführen von Trainingsdaten empfangen die Eingangsprozessoren von einem externen Prozessor Trainingsdaten Xh(n), halten diese als Vh(n, m) aufrecht und übertragen sie wie beim ersten Ausführungsbeispiel an die unten benachbarten Prozessoren.
  • S3 Verarbeitung im Grundmodus
  • Bei der Verarbeitung im Grundmodus werden alle Ausgangswerte zj(n, 0) der Zellenprozessoren 113, 122, 134, 144, 152, 164, 170 und 189 durch die Gleichungen (23) bis (25) auf Null gesetzt. Jeder der Synapsenprozessoren und der Zellenprozessoren führt die folgenden Berechnungen aus, wobei als repräsentatives Beispiel die Berechnungsverarbeitung für die folgenden Fälle beschrieben wird: den Synapsenprozessor 126 in der Spalte 1 und der Zeile i, den Synapsenprozessor 129 in der Zeile i und der Spalte h, dem Synapsenprozessor 137 in der Zeile i und der Spalte (H + j), den Synapsenprozessor 140 in der Zeile i und der Spalte (H + J) und den Zellenprozessor 134 in der Zeile i und der Spalte (H + i).
  • [Synapsenprozessor 126 in der Zeile i und der Spalte 1]
  • (1) Er empfängt das vom oben benachbarten Synapsenprozessor 120 übertragene Signal v&sub1;(n, m) und überträgt es an den unten benachbarten Synapsenprozessor 141.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal v&sub1;(n, m) und der abgespeicherten Gewichtung wij(n) als Anfangswert für die Partialsumme yi¹(n, m) an den rechts benachbarten Synapsenprozessor 127 übertragen, wie durch die Gleichung (58) dargestellt. Wenn das Verbindungsflag = "0" ist, wird die Anfangspartialsumme yi¹(n, m) = 0 an den rechten Synapsenprozessor 127 übertragen.
  • [Synapsenprozessor 129 in der Zeile i und der Spalte h]
  • (1) Er empfängt das vom oben benachbarten Synapsenprozessor 121 übertragene Signal vh(n, m) und überträgt es an den unten benachbarten Synapsenprozessor 142.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vh(n) und der abgespeicherten Gewichtung whj(n) zur Partialsumme yih-1(n, m) addiert, die vom links benachbarten Synapsenprozessor 128 übertragen wurde, wie durch die Gleichung (59) dargestellt, so dass dann eine neue Partialsumme yih(n, m) an den rechten Synapsenprozessor 130 übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die vom links benachbarten Synapsenprozessor 128 übertragene Partialsumme yih-1(n, m) als yih(n, m) an den rechts benachbarten Synapsenprozessor 130 übertragen.
  • [Synapsenprozessor 137 in der Zeile i und der Spalte (H+j)]
  • (1) Er empfängt das vom oben benachbarten Synapsenprozessor 124 übertragene Signal vk(n, m) und überträgt es an den unten benachbarten Synapsenprozessor 145.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vk(n, m) und der abgespeicherten Gewichtung wki(n) zur Partialsumme yiK+1(n, m) addiert, die vom rechts benachbarten Synapsenprozessor 138 übertragen wurde, wie durch die Gleichung (61) angegeben, so dass dann eine neue Partialsumme Yik(n, m) an den links benachbarten Synapsenprozessor 136 übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die vom rechts benachbarten Synapsenprozessor 138 übertragene Partialsumme yik+1(n, m) als yik(n, m) an den linken Synapsenprozessor 136 übertragen.
  • [Synapsenprozessor 140 in der Zeile i und der Spalte (k = H+J)]
  • (1) Er empfängt das vom oben benachbarten Synapsenprozessor 125 empfangene Signal vk(n, m) und überträgt es an den unten benachbarten Synapsenprozessor 146.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal vk(n, m) und der abgespeicherten Gewichtung wki(n) als Anfangswert für die Partialsumme yik(n, m) an den links benachbarten Synapsenprozessor 139 übertragen, wie durch die Gleichung (60) angegeben. Wenn das Verbindungsflag = "0" ist, wird die Anfangspartialsumme yjk(n, m) = 0 an den links benachbarten Synapsenprozessor 139 übertragen.
  • [Zellenprozessor 134 in der Zeile i und der Spalte (k = H+i)]
  • (1) Er überträgt das Ausgangssignal zi(n, m) des Zellenprozessors als vg(i)(n, m) = vH+i(n, m) an den oben benachbarten Synapsenprozessor 123 und den unten benachbarten Synapsenprozessor 143.
  • (2) Wenn das Verbindungsflag = "1" ist, werden das Produkt aus dem Signal vk(n) und der abgespeicherten Gewichtung wki(n) sowie ferner eine vom rechts benachbarten Synapsenprozessor 135 übertragene Partialsumme yjk+1(n, m) zur vom links benachbarten Synapsenprozessor 133 übertragenen Partialsumme yik-1(n, m) addiert, so dass eine abschließende Produkt-Summe yi(n, m) = yik(n, m) + yik+1 (n, m) erhalten ist. Wenn das Verbindungsflag = "0" ist, wird die vom links benachbarten Synapsenprozessor 133 übertragene Partialsumme yik-1(n, m) zur vom rechts benachbarten Synapsenprozessor 135 übertragenen Partialsumme yik+1(n, m) addiert, um die endgültige Produkt- Summe yi(n, m) = yik-1(n, m) + yik+1 (n, m) zu bilden.
  • (3) Gemäß der Gleichung (24) wird die endgültige Produkt-Summe yi(n, m) in eine S-Funktion eingesetzt, so dass das Ausgangssignal zi(n, m+1), der Neuronenzelle erhalten wird.
  • Wie oben beschrieben, wird in einem Synapsenprozessor links vom Zellenprozessor die Berechnung der Partialsumme von links nach rechts ausgeführt, während an einem Synapsenprozessor rechts vom Zellenprozessor die Berech nung der Partialsumme von rechts nach links ausgeführt wird.
  • Da die Ausgangswerte bei den oben angegebenen Berechnungen aufeinanderfolgend ab der ersten Zwischenschicht ermittelt werden, kann das Ausgangssignal zi(n, M) des Zellenprozessors in der Ausgangsschicht dadurch erhalten werden, dass eine Wiederholung der Anzahl entspricht, die der Anzahl der Zwischenschichten und der Ausgangsschichten entspricht, d.h. M mal.
  • Im Grundmodus wird nach dem Ausführen der obigen Berechnungen ein Ausgangssignal zi(n, M) von jedem der Zellenprozessoren an Ausgangsprozessoren und Eingangs/Ausgangs-Prozessoren übertragen&sub1; wobei es die Synapsenprozessoren in der Richtung nach oben durchläuft, und ferner kann das Ausgangssignal zj(n, M) von den Ausgangsprozessoren und den Eingangs/Ausgangs-Prozessoren an externe Ausrüstung übertragen werden.
  • S4 Zuführen von Zieldaten
  • Beim Zuführen von Zieldaten empfangen die Eingangs/Ausgangs-Prozessoren, z.B. 107 und 108, die den Zellenprozessoren entsprechen, die das Ergebnis an den externen Prozessor ausgeben können, Zieldaten tj(n) über die Signalleitungen 197 bis 198 vom externen Prozessor, und sie speichern die Zieldaten tj(n) ein und übertragen sie dann an den unten benachbarten Synapsenprozessor oder den Zellenprozessor.
  • [Zellenprozessor 164 (Ausgangsschicht) in der Zeile j und der Spalte (k = H+j)]
  • Der Zellenprozessor in der Ausgangsschicht empfängt die vom oben benachbarten Synapsenprozessor 153 übertragenen Zieldaten tj(n) und berechnet den Anfangswert des Zwischenwerts &delta;j(n, 0) gemäß der Gleichung (28).
  • [Zellenprozessor 134 (Zwischenschicht) in der Zeile i und der Spalte (k = H+i)]
  • Im Zellenprozessor in der Zwischenschicht wird der Anfangswert des Zwischenwerts &delta;1(n, 0) gemäß der Gleichung (29) auf Null gesetzt.
  • S5 Verarbeitung im Lernmodus 1
  • Im Lernmodus 1 werden zum Herleiten des Zwischenabweichungswerts &delta;i(n, L) beim Lernvorgang alle Eingangsprozessoren, der Ausgangsprozessor und die Eingangs/Ausgangs-Prozessoren in einen Ruhezustand versetzt und jeder der Synapsenprozessoren und jeder der Zellenprozessoren führt die folgenden Berechnungen gemäß den Gleichungen (30) und (31) aus. Hierbei sind die Berechnungen durch den Synapsenprozessor 156 in der Zeile j und der Spalte h, im Synapsenprozessor 115 in der Zeile i und der Spalte (H+i), im Synapsenprozessor 161 in der Zeile j und der Spalte (H+i), dem Synapsenprozessor 186 in der Zeile j und der Spalte (H+i), dem Synapsenprozessor 137 in der Zeile i und der Spalte (H+j), dem Zellenprozessor 134 in der Zeile i und der Spalte (H+i) und dem Zellenprozessor in der Zeile j und der Spalte (H+j) als repräsentative Beispiele angegeben.
  • [Synapsenprozessor 156 in der Zeile j und der Spalte h]
  • (1) Er empfängt das vom rechts benachbarten Prozessor 157 übertragene Signal &delta;j(n, l) und überträgt es an den links benachbarten Synapsenprozessor 155.
  • [Synapsenprozessor 155 in der Zeile 1 und der Spalte (k = H+i)]
  • (1) Er empfängt das vom links benachbarten Synapsenprozessor 114 übertragene Signal &delta;i(n, l) und überträgt es an den rechts benachbarten Synapsenprozessor 116.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal &delta;&sub1;(n, l) und der abgespeicherten Gewichtung wkl(n) gemäß der Gleichung (62) als Anfangswert für die Partialsumme Si¹(n, l) an den unten benachbarten Synapsenprozessor 119 übertragen. Wenn das Verbindungsflag = "0" ist, wird die Partialsumme Si¹(n, l) = 0 an den unten benachbarten Synapsenprozessor 119 übertragen.
  • [Synapsenprozessor 137 in der Zeile i und der Spalte (k = H+j)]
  • (1) Er empfängt das vom links benachbarten Synapsenprozessor 136 übertrage ne Signal &delta;i(n, l) und überträgt es an den rechts benachbarten Synapsenprozessor 138.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal &delta;i(n, l) und der abgespeicherten Gewichtung wki(n) zur vom oben benachbarten Synapsenprozessor 124 übertragenen Partialsumme Sji-1(n, l) addiert, wie durch die Gleichung (63) angegeben, so dass dann eine neue Partialsumme Sji(n, l) zum unten benachbarten Synapsenprozessor 145 übertragen wird.
  • Wenn das Verbindungsflag = "0" ist, wird die vom oben benachbarten Synapsenprozessor 124 übertragene Partialsumme Sji-1) als Sji(n, l) an den unten benachbarten Synapsenprozessor 145 übertragen.
  • [Synapsenprozessor 146 in der Zeile j und der Spalte (k = H+i)]
  • (1) Er empfängt das vom rechts benachbarten Synapsenprozessor 187 übertragene Signal &delta;J(n, l) und überträgt es an den links benachbarten Synapsenprozessor 185.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal &delta;J(n, l) und der abgespeicherten Gewichtung wkj(n) gemäß der Gleichung (64) als Anfangswert der Partialsumme SiJ(n, l) an den oben benachbarten Synapsenprozessor 180 übertragen. Wenn das Verbindungsflag = "0" ist, wird die Partialsumme SiJ(n, l) = 0 an den oben benachbarten Synapsenprozessor 180 übertragen.
  • [Synapsenprozessor 161 in der Zeile j und der Spalte (k = H+i)]
  • (1) Er empfängt das vom rechts benachbarten Synapsenprozessor 162 übertragene Signal &delta;j(n, l) und überträgt es an den links benachbarten Synapsenprozessor 160.
  • (2) Wenn das Verbindungsflag = "1" ist, wird das Produkt aus dem Signal &delta;j(n, l) und der abgespeicherten Gewichtung wkj(n) zur vom unten benachbarten Synapsenprozessor 168 übertragenen Partialsumme Sij+1(n, l) addiert, wie durch die Gleichung (65) angegeben, so dass dann eine neue Partialsumme Sij(n, l) an den oben benachbarten Synapsenprozessor 151 übertragen wird. Wenn das Verbindungsflag = "0" ist, wird die vom unten benachbarten Synapsenprozessor 168 übertragene Partialsumme sij+1(n, l) als Sij(n, l) an den oben benachbarten Synapsenprozessor 151 übertragen.
  • [Zellenprozessor (Ausgangsschicht) 164 in der Zeile j und der Spalte (k = H+j)]
  • (1) Der Zwischenwert &delta;j(n, l) beim Lernvorgang wird an den links benachbarten Synapsenprozessor 163 und den rechts benachbarten Synapsenprozessor 165 übertragen.
  • (2) In der Ausgangsschicht wird &delta;j(n, l+1) = &delta;j(n, l) gesetzt, da der Zwischenwert &delta;j(n, l) gemäß der Gleichung (28) nicht durch 1 geändert wird.
  • [Zellenprozessor (Zwischenschicht) 134 in der Zeile i und der Spalte (k = H+i)]
  • (1) Der Zwischenabweichungswert &delta;i(n, l) beim Lernvorgang wird an den links benachbarten Synapsenprozessor 133 und den rechts benachbarten Synapsenprozessor 135 übertragen.
  • (2) Wenn das Verbindungsflag = "1" ist, werden das Produkt aus dem Signal &delta;i(n, l) und der abgespeicherten Gewichtung wki(n) sowie ferner die vom unten benachbarten Synapsenprozessor 143 übertragene Partialsumme Sii+1(n, l) zur vom oben benachbarten Synapsenprozessor 123 übertragenen Partialsumme Sii-1(n, l) addiert, so dass die endgültige Produkt-Summe Si(n, 1) = Sii(n, l) + Sii+l(n, l) erhalten wird. Wenn das Verbindungsflag = "0" ist, wird die endgültige Produkt-Summe Si(n, l) = Sii-1(n, l) + Sii+l(n, l) dadurch erhalten, dass die vom oben benachbarten Synapsenprozessor übertragene Partialsumme Sii-1(n, l) zur vom unten benachbarten Synapsenprozessor übertragenen Partialsumme Sii+l(n, l) addiert wird.
  • (3) Aus der endgültigen Produkt-Summe Si(n, l) und dem Ausgangswert zi(n) wird gemäß der Gleichung (31) ein neuer Zwischenabweichungswert &delta;i(n, l+1) berechnet.
  • Wie oben beschrieben, wird in einem Synapsenprozessor, der in der Richtung nach oben ausgehend vom Zellenprozessor liegt, die Berechnung der Partialsumme von oben nach unten übertragen, und in einem Synapsenprozessor, der in der Richtung nach unten ausgehend vom Zellenprozessor liegt, wird die Berechnung der Partialsumme von unten nach oben übertragen. Ferner werden in einer Spalte ohne Zellenprozessor die Daten nur in der Querrichtung (von rechts nach links oder umgekehrt) ohne Berechnungsverarbeitung in der Längsrichtung (d.h. parallel zu Spalten) übertragen.
  • S6 Verarbeitung im Lernmodus 2
  • Im Lernmodus 2 führen die Synapsenprozessoren, die Zellenprozessoren und die Eingangsprozessoren jeweils Berechnungsverarbeitungen gemäß den Gleichungen (26) und (27) aus. In diesem Modus wird die Gewichtung so aktualisiert, dass alle Ausgangsprozessoren und Eingangs/Ausgangs-Prozessoren in einen Ruhezustand versetzt sind. Als repräsentative Beispiele werden die Verarbeitungen im Eingangsprozessor 101 in der Zeile 0 und der Spalte h, im Synapsenprozessor 156 in der Spalte h und der Zeile i, im Synapsenprozessor 137 in der Zeile i und der Spalte (H+j) und im Zellenprozessor 134 in der Zeile 1 und der Spalte (H+i) beschrieben.
  • [Eingangsprozessor 101 in der Zeile 0 und der Spalte h]
  • (1) Er überträgt ein Trainingsdatensignal xh(n) als vh(n, M) an den unten benachbarten Synapsenprozessor 111.
  • [Synapsenprozessor 156 in der Zeile j und der Spalte h]
  • (1) Er empfängt den Zwischenabweichungswert &delta; aus dem Lernvorgang, wie er vom rechts benachbarten Synapsenprozessor157 übertragen wurde, und er überträgt ihn an den links benachbarten Synapsenprozessor 155. Im Fall h=1 erfolgt diese Übertragung nicht.
  • (2) Er empfängt den Zwischenabweichungswert Vh(n) aus dem Lernvorgang, wie er vom oben benachbarten Synapsenprozessor 150 übertragen wurde, und er überträgt ihn an den unten benachbarten Synapsenprozessor 167. Im Fall j=J erfolgt diese Übertragung nicht.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung &Delta;whj(n) zur Gewichtung whj(n) aus dem Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang, wie vom rechts benachbarten Synapsenprozessor 157 übertragen, und aus dem vom oben benachbarten Synapsenprozessor 150 übertragenen Signal vh(n, m) gemäß der Gleichung (26) berechnet. Dann wird die Gewichtung whj(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag "0" ist, wird keine Verarbeitung ausgeführt.
  • [Synapsenprozessor 137 in der Zeile i und der Spalte (k = H+j)]
  • (1) Er empfängt den vom links benachbarten Synapsenprozessor 136 übertragenen Zwischenabweichungswert &delta;i(n, L) aus dem Lernvorgang und überträgt ihn an den rechts benachbarten Synapsenprozessor 138.
  • (2) Er empfängt das vom unten benachbarten Synapsenprozessor 145 übertragene Signal vg(j)(n, M) = Vk(n, M) und überträgt es an den oben benachbarten Synapsenprozessor 124.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung &Delta;wki(n) der Gewichtung wki(n) aus dem vom rechts benachbarten Synapsenprozessor übertragenen Zwischenabweichungswert &delta;i(n, L) aus dem Lernvorgang und dem vom unteren Synapsenprozessor 145 übertragenen Signal vk(n, M) gemäß der Gleichung (26) berechnet. Dann wird die Gewichtung wki(n) gemäß der Gleichung (27) auf wki(n+1) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • [Zellenprozessor 164 in der Zeile j und der Spalte (k=H+j)
  • (1) Er überträgt den Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang des Zellenprozessors an den links benachbarten Synapsenprozessor 163 und den rechts benachbarten Synapsenprozessor 165.
  • (2) Das Ausgangssignal zj(n, M) des Zellenprozessors wird als Vg(j)(n, M) = Vk(n, M) an den oberen Synapsenprozessor 153 und den unteren Synapsenprozessor 169 übertragen.
  • (3) Wenn das Verbindungsflag = "1" ist, wird der Wert der Änderung &Delta;wkj(n) der Gewichtung wkj(n) aus dem Zwischenabweichungswert &delta;j(n, L) des Lernvorgangs im Zellenprozessor und dem Ausgangssignal Vk(n, M) gemäß der Gleichung (26) berechnet. Dann wird die Gewichtung wkj(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • S7 Testen der Lernkonvergenz
  • Beim Testen der Lernkonvergenz wird getestet, ob der Mittelwert oder der Maximalwert der Abweichung &xi;j = (tj(n) -zj(n))² zwischen dem Ausgangssignal des Zellenprozessors in der Ausgangsschicht und dem Zieldatenwert größer als ein vorbestimmter Wert ist. So wird die Tatsache ermittelt, ob der Lernvorgang abgeschlossen ist oder nicht. Wenn die Abweichung kleiner als der vorbestimmte Wert ist, ist der Lernvorgang abgeschlossen. Andererseits kehrt, wenn die Abweichung größer als der vorbestimmte Wert ist, der Prozessor zu S2 zurück, wo der Lernvorgang dadurch wiederholt wird, dass die Trainingsdaten und die Zieldaten wiederholt zugeführt werden.
  • Wie oben beschrieben, ist die Architektur eines Neurocomputers angegeben, der eine Parallelverarbeitung bei der Simulation des oben angegebenen mehrschichtigen Perzeptrons als Beispiel von Neuralnetzwerken ausführen kann.
  • Jedoch ist bei einem Neurocomputer mit Prozessorgruppen, die so miteinander verbunden sind, dass sie ein Rechteckgitter bilden, das so beschaffen ist, dass es auf einer ebenen Unterlage ausgebildet ist, eine extrem große Anzahl von Prozessoren, nämlich (J + 1) (H + J) erforderlich, wenn das Ausmaß der Neuralnetzwerke zunimmt. Daher kann er hinsichtlich einer praxisgerechten Verwendung nicht mit Vorteil genutzt werden. Demgemäß offenbart die Erfindung ferner eine Einrichtung, die große Neuralnetzwerke mit einer machbaren Anzahl von Prozessoren simulieren kann, wobei die Maßnahmen auf Grundlage der oben beschriebenen Rechteckgitterverbindung ergriffen sind.
  • Vorausgesetzt, dass alle oben angegebenen Synapsenprozessoren, Zellenprozessoren, Eingangsprozessoren, Ausgangsprozessoren und Eingangs/Ausgangs- Prozessoren virtuelle Prozessoren sind, werden die Gruppen virtueller Prozessoren, die so angeordnet sind, dass ein Gitter mit J + 1 Zeilen und H + J Spalten gebildet ist, in Zeilenrichtung in P (P < J + 1) Teile und in Spaltenrichtung in Q (Q < H + J) Teile unterteilt, wie es in Fig. 27 dargestellt ist.
  • Wie es in Fig. 28A dargestellt ist, sind körperliche Prozessoren 410 bis 434 jeweils einem Rechteckbereich zugeordnet, wie er durch die Unterteilung erzeugt wurde. Im Ergebnis ist eine Anordnung aus körperlichen Prozessoren in P Zeilen und Q Spalten erzeugt.
  • Jeder der körperlichen Prozessoren ist in Gitterweise durch vier bidirektionale Kanäle mit dem oberen, unteren, linken und rechten benachbarten körperlichen Prozessor verbunden.
  • Jedoch sind die ganz rechts liegenden körperlichen Prozessoren 414, 419, 424, 429 und 434 nicht mit dem rechten Teil verbunden. Die ganz linken körperlichen Prozessoren 410, 415, 420, 425 und 430 sind nicht mit dem linken Teil verbunden. Die untersten körperlichen Prozessoren 430 bis 434 sind nicht mit dem unteren Teil verbunden. Um dafür zu sorgen, dass mindestens einer der körperlichen Prozessoren 410 bis 414 in jeder der Spalten über Eingabe/Ausgabe-Funktion verfügt, ist er über die Signalleitungen 401 bis 405 mit einer Busleitung 406 eines Hostcomputers 400 verbunden.
  • Wie es in Fig. 288 dargestellt ist, führt der so mit Eingabe/Ausgabe-Funktion versehene körperliche Prozessor die Berechnungsoperation und die Einspeicherungsoperation der Eingangsprozessoren, der Ausgangsprozessoren, der Eingangs/Ausgangs-Prozessoren, der Synapsenprozessoren und der Zellenprozessoren aus, wie sie im zugeordneten Rechteckbereich enthalten sind. Wie es in Fig. 28C dargestellt ist, führen die anderen körperlichen Prozessoren die Berechnungsoperation und die Einspeicherungsoperation der Synapsenprozessoren und der Zellenprozessoren in den zugeordneten Rechteckbereichen aus.
  • Demgemäß kann ein Neurocomputer, der eine Parallelverarbeitung für große Neuralnetzwerke mit einer machbaren Anzahl von Prozessoren ausführen kann, unter Verwendung der Knotenprozessorgruppen realisiert werden, die so verbunden sind, dass eine Rechteckgitterform gebildet ist, bei der P und Q geeignet bestimmt sind. Jeder der Knotenprozessoren führt eine sequentielle Verarbeitung aus, wobei die P Q Knotenprozessoren eine Parallelverarbeitung ausführen. Insbesondere kann hinsichtlich der Produkt-Summen-Operation, die übermäßig viel Zeit benötigt, die Berechnung der Partialsummen, die von den Synapsenprozessoren einzeln ausgeführt wurden, individuell von jedem der Knotenprozessoren als Berechnungen von Partialsummen im Rechteckbereich verarbeitet werden, wie er jedem der Knotenprozessoren entspricht.
  • Die Produkt-Summen-Operationen, wie sie durch die Gleichungen (59) bis (62) ausgedrückt werden, können dann, wenn ein Knotenprozessor, der einen in der j-ten Zeile liegenden Zellenprozessor enthält, in der Zeile U(J) und der Spalte R(j) liegt, in die Gleichungen (67) und (71) zerlegt werden:
  • wobei Iuq die Spaltennummer am rechten Ende des Rechteckbereichs repräsentiert, während Ilq die Spaltennummer am linken Ende desselben repräsentiert.
  • Gemäß den Gleichungen (67) - (71) ist ein Knotenprozessor, der links von einem einen Zellenprozessor enthaltenden Knotenprozessor liegt, so ausgebildet, dass er die Berechnung der Partialsumme von links nach rechts ausführt, und ein rechts von einem einen Zellenprozessor enthaltenden Knotenprozessor liegender Knotenprozessor ist so ausgebildet, dass er die Berechnung der Partialsumme von rechts nach links ausführt.
  • Die Produkt-Summen-Operationen, wie sie durch die Gleichungen (63) - (66) ausgedrückt werden, können, wenn ein einen in der Zeile j liegenden Zellenprozessor enthaltender Prozessor in der Zeile U(j) und der Spalte R(j) liegt, in die Gleichungen (72) und (76) zerlegt werden:
  • wobei Jup die Nummer der untersten Zeile im Rechteckbereich repräsentiert, während Jlp die Nummer der obersten Zeile repräsentiert.
  • Gemäß den obigen Gleichungen (72) - (76) ist ein Knotenprozessor, der oberhalb eines einen Zellenprozessor enthaltenden Knotenprozessors liegt, so ausgebildet, dass er die Berechnung der Partialsumme von oben nach unten ausführt, und ein unterhalb eines einen Zellenprozessor enthaltenden Knotenprozessor liegender Knotenprozessor ist so ausgebildet, dass er die Berechnung der Partialsumme von unten nach oben ausführt.
  • Jedoch werden in Spalten ohne Zellenprozessor die Signale nur von rechts nach links oder umgekehrt übertragen und es werden keine durch die Gleichungen (72) - (76) wiedergegebene Berechnungen ausgeführt.
  • Daher werden die Gleichungen (67) und (72) von jedem der Knotenprozessoren parallel berechnet, während die Gleichungen (79), (71) sowie (73), (76) während des Durchlaufens der Partialsumme yjq(n, m) und von Sjp(n, l) durch die Reihe der Knotenprozessoren aufeinanderfolgend berechnet werden.
  • In den Fig. 28B und 28C repräsentiert die Markierung ((B)) einen Pufferspeicher.
  • Unter den so, wie oben beschrieben, erstellten Bedingungen, wird nun unter Bezugnahme auf die Fig. 28A, 288 und 28C in Übereinstimmung mit dem in Fig. 5 dargestellten Flussdiagramm für die Simulation eines mehrschichtigen Perzeptrons die Parallelverarbeitung durch den Rechteckgitter-Neurocomputer beschrieben.
  • S1 Initialisierung der Gewichtung
  • Jeder der Knotenprozessoren initialisiert sukzessive die vom entsprechenden Synapsenprozessor abgespeicherte Gewichtung unter Verwendung einer Zufallszahl. Jeder der Knotenprozessoren initialisiert die Gewichtungskoeffizienten parallel.
  • S2 Zuführen von Trainingsdaten
  • Jeder der Knotenprozessoren 410 bis 414 mit Eingabe/Ausgabe-Funktion empfängt aufeinanderfolgend Trainingsdaten vom Hostcomputer, die den Eingangsprozessoren entsprechen. Die empfangenen Trainingsdaten werden in Puffern 445 und 446 aufrechterhalten.
  • S3 Verarbeitung im Grundmodus
  • Bei der Verarbeitung im Grundmodus setzt jeder der die Zellenprozessoren enthaltenden Knotenprozessoren aufeinanderfolgend den Ausgangswert zj(n, 0) = vg(j)(n, 0) des Zellenprozessors als Anfangswert gemäß der Gleichung (22) auf Null.
  • Dann wird die folgende Verarbeitung mit m = 0 wiederholt. Obwohl die Verarbeitung der Synapsenprozessoren und der Zellenprozessoren im Knotenprozessor 412 in der Zeile 1 und der Spalte q, im Knotenprozessor 420 in der Zeile p und der Spalte 1, im Knotenprozessor 424 in der Zeile p und der Spalte Q und im Knotenprozessor 422 in der Zeile p und der Spalte q als Beispiel beschrieben wird, wird die Verarbeitung parallel und gleichzeitig von jedem der Knotenprozessoren ausgeführt.
  • [Knotenprozessor 412 (Fig. 28A) in der Zeile 1 und Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, eine Spalte k = g(i) existiert, in der ein Zellenprozessor vorhanden ist, wird der Wert vk(n, m) = Zj(n, m), vk(n, m) sukzessive zusammen mit der Spaltennummer k an den unten benachbarten Knotenprozessor übertragen. Wenn eine Spalte h existiert, in der ein Eingangsprozessor vorhanden ist, empfängt dieser Knotenprozessor einen vom Hostcomputer übertragenen Trainingsdatenwert, stellt vh(n, m) = xh(n) ein, speichert vh(n, m) in den Eingangsprozessor ein und überträgt gleichzeitig und sukzessive vh(n, m) zusammen mit der Spaltennummer h an den unteren Knotenprozessor. Was Spalten betrifft, in denen kein Zellenprozessor und kein Eingangsprozessor vorhanden ist, werden vom unten benachbarten Knotenprozessor übertragene Signale vi(n) [i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] sukzessive empfangen und im Puffer aufrechterhalten.
  • (2) Die Partialsumme Bjq(n, m) im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, wird gemäß der Gleichung (67) für jede Zeile berechnet. Das Berechnungsergebnis wird in die Puffer 456 bis 460 eingespeichert.
  • (3) Wenn die Partialsumme yjq-1(n, m) zusammen mit der Zeilennummer j vom links benachbarten Knotenprozessor übertragen wurde, wird getestet, ob die Berechnung der Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird eine neue Partialsumme m) gemäß der Gleichung (69) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme m) zusammen mit der Zeilennummer j in den Puffern 456 bis 460 zwischengespeichert und es wird der Abschluss der Berechnung der Partialsumme m) abgewartet. Wenn die Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist, wird unmittelbar eine neue Partialsumme yjq(n, m) gemäß der Gleichung (69) berechnet. Dabei wird getestet, ob ein Zellenprozessor in der Zeile j vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird die neue Partialsumme yjq(n, m) zusammen mit der Zeilennummer j an den rechts benachbarten Knotenprozessor übertragen. Wenn einer vorhanden ist, wird der vom rechten Knotenprozessor übertragene Wert yjq+1(n, m) zu einer neuen Partialsumme yjq(n, m) addiert und das Ergebnis yj(n, m) = yjq(n, m) + yjq+1(n, m) wird als Ergebnis der Produkt-Summen-Operation eingetragen.
  • Wenn die Partialsumme yjq+1(n, m) zusammen mit der Zeilennummer j übertragen wird, wird die neue Partialsumme yjq(n, m) gemäß der Gleichung (71) auf ähnliche Weise für den linken Knotenprozessor berechnet.
  • Hierbei wird das Vorhandensein eines Zellenprozessors in der Zeile j im Rechteckbereich getestet, und wenn kein Zellenprozessor vorhanden ist, wird die neue Partialsumme yjq(n, m) zusammen mit der Zeilennummer j an den rechten Knotenprozessor übertragen. Wenn ein Zellenprozessor vorhanden ist, wird der vom linken Knotenprozessor übertragene Wert yjq-1(n, m) zu einer neuen Partialsumme yjq(n, m) addiert, um yj(n, m) = yjq(n, m) + yjq-1(n, m) als Ergebnis der Produkt-Summen-Operation zu bilden.
  • (4) Hinsichtlich der einen Zellenprozessor enthaltenden Zeilen wird, wenn die Berechnung des Ergebnisses yj(n, m) der Produkt-Summen-Operation abgeschlossen ist, das Ergebnis yj(ni m) durch eine S-Funktion gemäß der Gleichung (24) in das Ausgangssignal zj(n, m + 1) der neuralen Zelle umgesetzt, und das Ergebnis wird dann in den Speicherbereich eingespeichert, der den Zellenprozessoren 467 bis 469 entspricht.
  • [Knotenprozessor 420 (Fig. 28A) in der Zeile p und der Spalte 1]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 420 in der Zeile p und der Spalte 1 zugeordnet ist, eine Spalte k = g(i) existiert, in der ein Zellenprozessor vorhanden ist, wird der Wert vk(n, m) = Zj(n, m) sukzessive zusammen mit der Spaltennummer k an den oben benachbarten Knotenprozessor 415 und den unten benachbarten Knotenprozessor 425 übertragen. Hinsichtlich der Spalten, in denen kein Zellenprozessor vorhanden ist, werden sukzessive Signale vi(n) [i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}], wie sie vom oben benachbarten Knotenprozessor 415 übertragen wurden, sukzessive empfangen und für jede der Spalten in den Puffern 470, 473 und 474 aufrechterhalten. Gleichzeitig werden die Signale zusammen mit der Spaltennummer i sukzessive an den unteren Knotenprozessor 425 übertragen. Im Fall p = P erfolgt keine übertragung in der Richtung nach unten. Vom unten benachbarten Knotenprozessor 425 übertragene Signale Vi(n) [i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] werden sukzessive empfangen und in die Puffer 470, 473 und 474 eingespeichert. Gleichzeitig werden die Signale vi(n) sukzessive zusammen mit der Spaltennummer i an den oben benachbarten Knotenprozessor 415 übertragen. Jedoch erfolgt im Fall p = 1 keine Übertragung in der Richtung nach oben.
  • (2) Die Partialsumme Bj¹( n, m) im Rechteckbereich, dem der Knotenprozessor 420 in der Zeile p der Spalte 1 zugeordnet ist, wird für jede Spalte gemäß der Gleichung (67) berechnet. Das Berechnungsergebnis wird in die Puffer 488 bis 493 eingespeichert.
  • (3) Dabei wird getestet, ob in der Zeile j ein Zellenprozessor vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird der Anfangswert der Partialsumme als yj¹(n, m) = Bj¹( n, m) gesetzt und zusammen mit der Zeilennummer j an den rechten Knotenprozessor übertragen.
  • (4) Wenn in der Zeile j ein Zellenprozessor enthalten ist, wird, wenn die Partialsumme yj²(n, m) zusammen mit der Zeilennummer j vom rechten Knotenprozessor übertragen wurde, getestet, ob die Berechnung der Partialsumme Bj (n, m) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird eine neue Partialsumme yj¹(n, m) gemäß der Gleichung (71) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich noch nicht abgeschlossen ist, wird die Partialsumme yj²(n, m) zusammen mit der Zeilennummer j in den Puffern 488 bis 493 zwischengespeichert, um den Abschluss der Berechnungen zur Partialsumme Bj¹( n, m) abzuwarten. Wenn die Partialsumme Bj¹( n, m)) im Rechteckbereich fertiggestellt ist, wird gemäß der Gleichung (71) unmittelbar eine neue Partialsumme yj¹(n, m) berechnet und die neue Partialsumme yj¹(n, m) wird als Ergebnis yj(n, m) der Produkt- Summen-Operation in den Speicherbereich für den Zellenprozessor eingespeichert.
  • [Knotenprozessor 424 (Fig. 2) in der Zeile p und der Spalte Q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 424 in der Zeile p und der Spalte Q zugeordnet ist, eine Spalte k = g(i) existiert, in der ein Zellenprozessor vorhanden ist, wird der Wert vk(n, m) = zj(n, m), vk(n, m) sukzessive zusammen mit der Spaltennummer k an den oben benachbarten Knotenprozessor 419 und den unten benachbarten Knotenprozessor 429 übertragen. Hinsichtlich Spalten, in denen kein Zellenprozessor vorhanden ist, werden vom oben benachbarten Knotenprozessor 419 übertragene Signale Vi(n) [i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] sukzessive für jede Spalte empfangen und in die Puffer 417, 473 und 774 eingespeichert. Gleichzeitig werden die Signale Vi(n, m) sukzessive zusammen mit der Spaltennummer i an den unten benachbarten Knotenprozessor 429 übertragen. Wenn p = P gilt, erfolgt keine Übertragung in der Richtung nach unten. Vom unten benachbarten Knotenprozessor 429 übertragene Signale Vi(n)[i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] werden sukzessive empfangen und in die Puffer 470, 473 und 474 eingespeichert. Gleichzeitig werden die Signale Vi(n) zusammen mit der Spaltennummer i sukzessive an den oben benachbarten Knotenprozessor 419 übertragen. Jedoch erfolgt im Fall p = 1 keine Übertragung in der Richtung nach oben.
  • (2) Die Partialsumme BjQ(n, m) im Rechteckbereich, dem der Knotenprozessor 424 in der Zeile p und der Spalte Q zugeordnet ist, wird gemäß der Gleichung (67) berechnet. Das Berechnungsergebnis wird in die Puffer 488 bis 493 eingespeichert.
  • (3) Dabei wird getestet, ob ein Zellenprozessor in der Zeile j vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird der Anfangswert der Partialsumme auf yjQ(n, m) = BjQ(n, m) gesetzt und zusammen mit der Zeilennummer j an den linken Knotenprozessor übertragen.
  • (4) Wenn die Partialsumme yjQ-1(n, m) zusammen mit der Zeilennummer j vom linken Knotenprozessor übertragen wurde, wird getestet, ob die Berechnung der Partialsumme Bj¹(n, m) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (71) eine neue Partialsumme yjQ(n, m) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme yjQ-1(n, m) zusammen mit der Zeilennummer j in den Puffern 488 bis 492 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme BjQ(n, m) abzuwarten. Wenn die Partialsumme BjQ(n, m) im Rechteckbereich abgeschlossen ist, wird gemäß der Gleichung (69) unmittelbar eine neue Partialsumme yjQ(n, m) berechnet.
  • (5) Hinsichtlich der einen Zellenprozessor enthaltenden Zeilen wird dann, wenn die Berechnung des Ergebnisses yj(n, m) der Produkt-Summen-Operation abgeschlossen ist, das Ergebnis yj(n, m) durch die S-Funktion gemäß der Gleichung (24) in das Ausgangssignal zj(n, m+1) der neuralen Zelle umge-20 setzt, wobei das Ergebnis dann in die den Zellenprozessoren 493 bis 496 zugeordneten Speicherbereiche eingespeichert wird.
  • [Knotenprozessor 422 in der Zeile p und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 422 in der Zeile p und der Spalte q zugeordnet ist, eine Spalte k = g(i) existiert, in der ein Zellenprozessor vorhanden ist, werden die Werte vk(n, m) = Zj(n, m) zusammen mit der Spaltennummer k sukzessive an den oben benachbarten Knotenprozessor 417 und den unten benachbarten Knotenprozessor 427 übertragen. Hinsichtlich der Spalten, in denen kein Zellenprozessor und kein Eingangsprozessor vorhanden ist, werden vom oben benachbarten Knotenprozessor 417 übertragene Signale vi(n) [i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] sukzessive für jede der Spalten empfangen und in die Puffer 470, 473 und 474 eingespeichert. Gleichzeitig werden die Signale sukzessive zusammen mit der Spaltennummer i an den unten benachbarten Knotenprozessor 427 übertragen. Im Fall p = P erfolgt keine Übertragung in der Richtung nach unten. Vom unten benachbarten Knotenprozessor 427 übertragene Signale vi(n)[i&epsi;{Ilp, Ilp + 1, ..., Iup-1, Iup}] werden sukzessive empfangen und in den Puffern 470, 473 und 474 abgespeichert. Gleichzeitig werden die Signale vi(n) sukzessive zusammen mit der Spaltennummer i an den unten benachbarten Knotenprozessor 417 übertragen. Jedoch erfolgt im Fall p = 1 keine Übertragung in der Richtung nach oben.
  • (2) Die Partialsumme Bjq(n, m) im Rechteckbereich, dem der Knotenprozessor 422 in der Zeile p und der Spalte q zugeordnet ist, wird gemäß der Gleichung (67) berechnet. Das Berechnungsergebnis wird in die Puffer 488 bis 493 eingespeichert.
  • (3) Wenn die Partialsumme yjq-1(n, m) zusammen mit der Zeilennummer j vom links benachbarten Knotenprozessor 421 übertragen wurde, wird geprüft, ob die Berechnung der Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (68) eine neue Partialsumme yjq(n, m) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme m) zusammen mit der Zeilennummer j in den Puffern 488 bis 493 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme Bjq(n, m) abzuwarten. Wenn die Berechnung der Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist, wird gemäß der Gleichung (69) unmittelbar eine neue Partialsumme yjq(n, m) berechnet. Dabei wird getestet, ob ein Zellenprozessor in der Zeile j vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird die neue Partialsumme yjq(n, m) zusammen mit der Zeilennummer j an den rechts benachbarten Knotenprozessor 423 übertragen.
  • Wenn ein Zellenprozessor vorhanden ist, wird der zusammen mit der Zeilennummer j vom rechten Knotenprozessor 423 übertragene Wert yjq+1(n, m) zu einer neuen Partialsumme yjq(n, m) addiert, um als Ergebnis der Produkt- Summen-Operation yj(n, m) = yjp(n, m) + yjq+1(n, m) zu bilden.
  • Ferner wird dann, wenn yjq+1(n, m) zusammen mit der Zeilennummer j vom rechts benachbarten Knotenprozessor 423 übertragen wird, getestet, ob die Berechnung der Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist. Wenn sie abgeschlossen ist, wird eine neue Partialsumme yjq(n, m) gemäß der Gleichung (71) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme yjq+1(n, m) zusammen mit der Zeilennummer j in den Puffern 476 bis 481 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme Bjq(n, m) abzuwarten. Wenn die Partialsumme Bjq(n, m) im Rechteckbereich abgeschlossen ist, wird gemäß der Gleichung (71) unmittelbar eine neue Partialsumme yjq(n, m) berechnet. Dabei wird getestet, ob in der Zeile j ein Zellenprozessor vorhanden ist oder nicht. Wenn keiner vorhanden ist, wird die neue Partialsumme yjq(n, m) zusammen mit der Zeilennummer j an den links benachbarten Knotenprozessor 421 übertragen. Wenn einer vorhanden ist, wird der vom links benachbarten Knotenprozessor 421 zusammen mit der Zeilennummer j übertragene Wert yjq- 1 (n, m) zu einer neuen Partialsumme yjq(n, m) addiert, um yj(n, m) = yjq- 1(n, m) + yiq(n, m) als Ergebnis der Produkt-Summen-Operation zu bilden. Wenn einer vorhanden ist, wird die neue Partialsumme yjq(n, m) als Ergebnis yj(n, m) der Produkt-Summen-Operation in den Speicherbereich für den Zellenprozessor eingespeichert.
  • (4) Hinsichtlich der einen Zellenprozessor enthaltenden Zeilen wird, wenn die Berechnung des Ergebnisses yj(n, m) der Produkt-Summen-Operation abgeschlossen ist, das Ergebnis yj(n, m) durch die 5-Funktion gemäß der Gleichung (24) in das Ausgangssignal zj(n, m+1) der neuralen Zelle umgesetzt, wobei das Ergebnis dann in den Speicherbereich eingespeichert wird, der den Zellenprozessoren 494 bis 496 zugeordnet ist.
  • Die obigen Berechnungen können auf solche Weise ausgeführt werden, dass ein Knotenprozessor, der links von einem einen Zellenprozessor enthaltenden Knotenprozessor liegt, so ausgebildet ist, dass er die Berechnung der Partialsumme von links nach rechts ausführt, während ein Knotenprozessor, der rechts von einem einen Zellenprozessor enthaltenden Knotenprozessor liegt, so ausgebildet ist, dass er die Berechnung der Partialsumme für jede Zeile von rechts nach links ausführt.
  • Da die Ausgangswerte bei den oben angegebenen Berechnungen sukzessive von der ersten Zwischenschicht aus ermittelt werden, kann das Ausgangssignal zj(n, M) des Zellenprozessors in der Ausgangsschicht dadurch erhalten werden, dass die Berechnungen so oft ausgeführt werden, wie es der Anzahl der Zwischenschichten und der Ausgangsschichten entspricht, d.h., M mal.
  • S4 Zuführen von Zieldaten
  • Beim Zuführen von Zieldaten empfangen die Knotenprozessoren 410 bis 414 mit Eingangs/Ausgangs-Prozessoren, die in jeder der Spalten angeordnet sind, in denen Zellenprozessoren in der Ausgangsschicht liegen, Zieldaten tj(n) zusammen mit der Spaltennummer j über den Signalbus 406 vom Hostcomputer, und sie werden dann an den unten benachbarten Knotenprozessor übertragen. Jeder der Knotenprozessoren empfängt die Zieldaten vom oben benachbarten Knotenprozessor und überträgt die Zieldaten dann an den unten benachbarten Knotenprozessor.
  • SB Verarbeitung im Lernmodus 1
  • Im Lernmodus 1 wiederholt jeder der Knotenprozessoren den folgenden Ablauf mit dem Anfangswert l = 0.
  • Obwohl die Verarbeitung der Synapsenprozessoren und der Zellenprozessoren im Knotenprozessor 412 in der Zeile 1 und der Spalte q, im Knotenprozessor 432 in der Zeile p und der Spalte q und im Knotenprozessor 422 in der Zeile p und der Spalte q als Beispiel beschrieben wird, wird die Verarbeitung parallel und gleichzeitig von jedem der Knotenprozessoren ausgeführt.
  • [Knotenprozessor 412 (Fig. 28a) in der Zeile 1 und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, eine Zeile j existiert, die einen Zellenprozessor enthält, wird der Zwischenabweichungswert &delta;j(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer j an den links benachbarten Knotenprezessor 411 und den rechts benachbarten Knotenprozessor 413 übertragen. Hinsichtlich einer Zeile, in der kein Zellenprozessor enthalten ist, werden die vom linken Knotenprozessor 411 übertragenen Zwischenwerte &delta;k(n, l)[k&epsi;{Jlq+1, ..., Juq-1, Juq}] aus dem Lernvorgang sukzessive empfangen, um für jede Zeile in die Puffer 452, 455 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 413 übertragen. Wenn q = Q gilt, erfolgt keine Übertragung in der Richtung nach rechts. Die vom rechts benachbarten Knotenprozessor empfangenen Zwischenabweichungswerte &delta;k(n, l)[k&epsi;{Jlq+1, ..., Juq-1, Juq}] aus dem Lernvorgang werden sukzessive empfangen, um für jede Zeile in die Puffer 457, 460 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den links benachbarten Knotenprozessor 411 übertragen. Im Fall mit q = Q erfolgt keine Übertragung in der Richtung nach rechts.
  • (2) Die Partialsumme Dj¹(n, l) im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, wird gemäß der Gleichung (72) für jede der Zeilen berechnet. Wenn die Berechnung abgeschlossen ist, wird das Ergebnis in die Puffer 461 bis 466 eingespeichert.
  • (3) Wenn im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, kein Zellenprozessor vorhanden ist, wird der Anfangswert Sj¹(n, l) = Dj¹(n, l) der Partialsumme zusammen mit der Spaltennummer j an den unten benachbarten Knotenprozessor übertragen.
  • (4) Wenn in der Zeile j des Rechteckbereichs ein Zellenprozessor vorhanden ist und wenn die Partialsumme Sj²(n, l) zusammen mit der Spaltennummer j vom unten benachbarten Knotenprozessor übertragen wurde, wird die Tatsache getestet, ob die Berechnung der Partialsumme Dj¹(n, l) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (76) eine neue Partialsumme Sj¹(n, l) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich noch nicht abgeschlossen ist, wird die Partialsumme Sj²(n, l) zusammen mit der Zeilennummer j in den Puffern 461 bis 466 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme Dj¹(n, l) im Rechteckbereich abzuwarten. Wenn die Berechnung der Partialsumme Dj¹(n, l) im Rechteckbereich abgeschlossen ist, wird die neue Partialsumme Sj¹(n, l) gemäß der Gleichung (76) unmittelbar berechnet. Die neue Partialsumme Sj¹(n, l) wird als Ergebnis der Produkt-Summen-Operation Sj(n, l) in den Speicherbereich für den Zellenprozessor eingespeichert.
  • (5) Hinsichtlich einer Spalte, die einen Zellenprozessor enthält, wird, wenn die Berechnung der endgültigen Produkt-Summe Sj(n, l) abgeschlossen ist, der Wert &delta;j(n, l+1) aus dem Ergebnis Sj(n, l) berechnet, um ihn in den dem Zellenprozessor zugeordneten Speicherbereich einzuspeichern.
  • [Knotenprozessor 432 in der Zeile p und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 432 in der Zeile P und der Spalte g zugeordnet ist, eine einen Zellenprozessor enthaltende Zeile j vorhanden ist, wird der Zwischenabweichungswert &delta;j(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer j an den links benachbarten Knotenprozessor 431 und den rechts benachbarten Knotenprozessor 433 übertragen. Hinsichtlich einer Zeile, in der kein Zellenprozessor vorhanden ist, werden die Zwischenabweichungswerte &delta;k(n, l)[k&epsi;{Ilq, Ilq+1, ..., Juq-1, Juq}] aus dem Lernvorgang, wie vom links benachbarten Knotenprozessor 431 übertragen, aufeinanderfolgend empfangen, um für jede Zeile in die Puffer 478, 480 und 481 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechten Knotenprozessor 433 übertragen. Im Fall q = Q erfolgt keine Übertragung in der Richtung nach rechts. Der Zwischenwert &delta;k(n, l)[k&epsi;{Jlq+1, ..., Juq-1, Juq}] aus dem Lernvorgang, wie vom rechts benachbarten Knotenprozessor übertragen, wird sukzessive empfangen, um in die Puffer 490, 492, 493 für jede Zeile eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den links benachbarten Knotenprozessor 431 übertragen. Wenn q = Q gilt, erfolgt keine Übertragung in der Richtung nach rechts.
  • (2) Die Partialsumme Djp(n, l) im Rechteckbereich, dem der Knotenprozessor 432 in der Zeile P und der Spalte q zugeordnet ist, wird gemäß der Gleichung (72) für jeden der Zeilen berechnet. Wenn die Berechnung abgeschlossen ist, wird das Ergebnis in die Puffer 470 bis 475 eingespeichert.
  • (3) Wenn im Rechteckbereich, dem der Knotenprozessor 432 in der Zeile P und der Spalte q zugeordnet ist, kein Zellenprozessor vorhanden ist, wird der Anfangswert Sjp(n, l) = Djp(n, l) der Partialsumme zusammen mit der Spaltennummer j an den unten benachbarten Knotenprozessor übertragen.
  • (4) Wenn in der Zeile j des Rechteckbereichs ein Zellenprozessor vorhanden ist und die Partialsumme Sjp-1(n, l) zusammen mit der Spaltennummer j vom unten benachbarten Knotenprozessor übertragen wurde, wird die Tatsache getestet, ob die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird eine neue Partialsumme Sjp(n, l) gemäß der Gleichung (74) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme Sjp-1(n, l) zusammen mit der Zeilennummer j in den Puffern 461 bis 466 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme 0 (n, l) im Rechteckbereich abzuwarten. Wenn die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist, wird die neue Partialsumme Sjp(n, l) unmittelbar gemäß der Gleichung (76) berechnet. Die neue Partialsumme Sjp(n, l) wird als Ergebnis der Produkt-Summen-Operation Sjp(n, l) in den Speicherbereich für alle Prozessoren eingespeichert.
  • (5) Hinsichtlich einer einen Zellenprozessor enthaltenden Spalte wird, wenn die Berechnung der endgültigen Produkt-Summe Sj(n, l) abgeschlossen ist, der Wert &delta;j(n, l+1) aus dem Ergebnis Sj(n, l) berechnet, um ihn in den den Zellenprozessoren 493 bis 495 zugeordneten Speicherbereich einzuspeichern.
  • [Knotenprozessor 422 in der Zeile p und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 422 in der Zeile p und der Spalte q zugeordnet ist, eine einen Zellenprozessor enthaltende Zeile j existiert, wird der Zwischenabweichungswert &delta;j(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer j an den links benachbarten Knotenprozessor 421 und den rechts benachbarten Knotenprozessor 423 übertragen. Hinsichtlich einer Zeile, in der kein Zellenprozessor enthalten ist, werden die vom links benachbarten Knotenprozessor 421 übertragenen Zwischenabweichungswerte &delta;k(n, l)[k&epsi;{Jlq, Jlq + 1, ..., Juq-, Jug}] aus dem Lernvorgang sukzessive empfangen, um für jede Zeile in die Puffer 478, 480 und 481 eingespeichert zu werden. Gleichzeitig wird der Zwischenwert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 423 übertragen. Im Fall q = Q erfolgt keine Übertragung nach rechts. Die Zwischenabweichungswerte &delta;k(n, l)[k&epsi;{Jlq, Jlq+1, ..., Juq-1, Juq}] aus dem Lernvorgang, wie vom rechts benachbarten Knotenprozessor 423 übertragen, werden sukzessive empfangen, um für jede Zeile in die Puffer 490, 492, 493 eingespeichert zu werden. Gleichzeitig wird der Zwischenwert &delta;k(n, l) aus dem Lernvorgang zusammen mit der Zeilennummer k an den links benachbarten Knotenprozessor 421 übertragen. Im Fall q = Q erfolgt keine Übertragung nach rechts.
  • (2) Die Partialsumme Djp(n, l) im Rechteckbereich, dem der Knotenprozessor 422 in der Zeile p und der Spalte q zugeordnet ist, wird für jede der Zeilen gemäß der Gleichung (72) berechnet. Wenn die Berechnung abgeschlossen ist, wird das Ergebnis in die. Puffer 482 bis 487 eingespeichert.
  • (3) Wenn die Partialsumme Sjp-1(n zusammen mit der Spaltennummer k vom oben benachbarten Knotenprozessor 417 übertragen wurde, wird die Tatsache getestet, ob die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (74) eine neue Partialsumme Sjp(n, l) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich noch nicht abgeschlossen ist, wird die Partialsumme Sjp-1(n zusammen mit der Zeilennummer j in dem Puffern 482 bis 487 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abzuwarten. Wenn die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist, wird die neue Partialsumme Sjp(n, l) unmittelbar gemäß der Gleichung (74) berechnet. Dabei wird die Tatsache getestet, ob in der Spalte j im Rechteckbereich ein Zellenprozessor enthalten ist oder nicht. Wenn einer dort enthalten ist, wird die neue Partialsumme Sjp(n, l) zusammen mit der Zeilennummer j an den unten benachbarten Knotenprozessor 427 übertragen. Wenn einer vorhanden ist, wird die vom unten benachbarten Knotenprozessor 427 übertragene Partialsumme Sjp+1(n, m) zu einer neuen Partialsumme Sjp(n, m) addiert und das Ergebnis Sj(n, m) = Sjp(n, m) + Sjp+1(n, m) wird als Ergebnis der Produkt- Summen-Operation in den Speicherbereich für den Zellenprozessor eingespeichert.
  • Wenn die Partialsumme Sjp+1(n, l) zusammen mit der Spaltennummer j vom unten benachbarten Knotenprozessor 427 übertragen wurde, wird die Tatsache getestet, ob die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist oder nicht. Wenn sie abgeschlossen ist, wird gemäß der Gleichung (76) eine neue Partialsumme Sjp(n, l) berechnet. Wenn die Berechnung der Partialsumme im Rechteckbereich nicht abgeschlossen ist, wird die Partialsumme Sjp+1(n, l) zusammen mit der Zeilennummer j in den Puffern 470 bis 475 zwischengespeichert, um den Abschluss der Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abzuwarten. Wenn die Berechnung der Partialsumme Djp(n, l) im Rechteckbereich abgeschlossen ist, wird die neue Partialsumme Sjp(n, l) unmittelbar gemäß der Gleichung (76) berechnet. Dabei wird die Tatsache getestet, ob in der Spalte j im Rechteckbereich ein Zellenprozessor enthalten ist oder nicht. Wenn einer dort enthalten ist, wird die neue Partialsumme Sjp(n, l) zusammen mit der Zeilennummer j an dem unten benachbarten Knotenprozessor 427 übertragen. Wenn einer enthalten ist, wird die Partialsumme Sjp-1(n, l) zusammen mit der Zeilennummer j vom oben benachbarten Knotenprozessor 407 zur neuen Partialsumme Sjp(n, l) addiert, um als Ergebnis der Produkt-Summen-Operation Sj(n, l) = Sjp(n, l) + Sjp-1(n, l) zu erzeugen.
  • (4) Hinsichtlich einer einen Zellenprozessor enthaltenden Spalte wird, wenn die Berechnung der endgültigen Produkt-Summe Sj(n, l) abgeschlossen ist, der Wert &delta;j(n, l+1) gemäß der Gleichung (31) aus dem Ergebnis Sj(n, l) berechnet, um ihn in den dem Zellenprozessor zugeordneten Speicherbereich einzuspeichern.
  • Die obige Berechnung kann auf eine solche Weise ausgeführt werden, dass für einen Knotenprozessor, der oberhalb eines einen Zellenprozessor enthaltenden Knotenprozessors liegt, die Berechnung von oben nach unten ausgeführt wird, während für einen Knotenprozessor, der unterhalb eines einen Zellenprozessor enthaltenden Knotenprozessors liegt, die Berechnung von unten nach oben ausgeführt wird.
  • Im Lernmodus 1 kann, da die Berechnungen von der Ausgangsschicht bis zur Eingangsschicht für jede Schicht wie im Grundmodus sukzessive ausgeführt werden, der Zwischenabweichungswert &delta;j(n, l) aus dem Lernvorgang dadurch erhalten werden, dass die Berechnungen so oft wiederholt werden, wie es der Anzahl der Zwischenschichten entspricht, d.h. L = M - 1 mal.
  • S6 Verarbeitung im Lernmodus 2
  • Im Lernmodus 2 führt jeder der Knotenprozessoren die folgenden Verarbeitungen aus. Obwohl die Verarbeitung der Synapsenprozessoren und der Zellenprozessoren im Knotenprozessor 417 in der Zeile 1 und der Spalte q sowie im Knotenprozessor 422 in der Zeile p und der Spalte g als Beispiele beschrieben wird, wird die Verarbeitung parallel und gleichzeitig von jedem der Knotenprozessoren ausgeführt.
  • [Knotenprozessor 412 in der Zeile 1 und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist&sub1; ein Zellenprozessor in der Zeile j und der Spalte g(j) vorhanden ist, wird der Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer g(j) an den links benachbarten Knotenprozessor 411 und den rechts benachbarten Knotenprozessor 413 übertragen. Gleichzeitig wird das Ausgangssignal zj(n) des Zellenprozessors als vg(j) (n) = zj(n) zusammen mit der Spaltennummer g(j) an den unten benachbarten Knotenprozessor übertragen. Wenn in den virtuellen Prozessoren, denen der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, eine einen Eingangsprozessor enthaltende Spalte h vorliegt, wird däs Eingangssignal xh(n) zusammen mit der Spaltennummer h als vh(n) = xh(n) an den unten benachbarten Knotenprozessor übertragen. Hinsichtlich Zeilen, in denen kein Zellenprozessor und kein Eingangsprozessor vorhanden ist, werden die vom links benachbarten Knotenprozessor 411 übertragenen Zwischenabweichungswerte &delta;k(n, L) [k&epsi;{Jlp, Jlp+1, ..., Jup-1, Jup}) aus dem Lernvorgang sukzessive empfangen, um in die Puffer 452, 455 für jede Zeile eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert Sk(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 413 übertragen. Die vom rechts benachbarten Knotenprozessor 413 übertragenen Zwischenabweichungswerte &delta;k(n, L) [k&epsi;{Jlp, Jlp+1,..., Jup-1, Jup}] aus dem Lernvorgang werden sukzessive empfangen, um für jede Zeile in die Puffer 457, 460 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer k an den links benachbarten Knotenprozessor 411 übertragen.
  • Andererseits empfängt der Knotenprozessor hinsichtlich solcher Spalten, die keinen Zellenprozessor und keinen Eingangsprozessor enthalten, den zusammen mit der Spaltennummer i vom unten benachbarten Knotenprozessor übertragenen Wert vi(n) und speichert diesen in den den Spalten zugeordneten Puffer 464 ein.
  • (2) Hinsichtlich der Synapsenprozessoren in den Rechteckbereichen, denen der Knotenprozessor 412 in der Zeile 1 und der Spalte q zugeordnet ist, wird, wenn das Verbindungsflag = "1" ist, die Änderungsgröße &Delta;wij(n) des Gewichtungskoeffizients wij(n) aus dem Zwischenabweichungswert &delta;&xi;(n, L) aus dem Lernvorgang, wie entweder vom links benachbarten Knotenprozessor 411 oder vom rechts benachbarten Knotenprozessor 413 empfangen, und dem vom unten benachbarten Knotenprozessor übertragenen Signal vi(n) gemäß der Gleichung (26) berechnet. Dann wird der Gewichtungskoeffizient wij(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • [Knotenprozessor 422 in der Zeile p und der Spalte q]
  • (1) Wenn im Rechteckbereich, dem der Knotenprozessor 422 in der Zeile p und der Spalte g zugeordnet ist, in der Zeile j und der Spalte g(j) ein Zellenprozessor vorhanden ist, wird der Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer j an den links benachbarten Knotenprozessor 421 und den rechts benachbarten Knotenprozessor 423 übertragen. Gleichzeitig wird das Ausgangssignal zj(n) vom Zellenprozessor als vi(n) = zj(n) zusammen mit der Spaltennummer q(j) an den oben benachbarten Knotenprozessor 417 und den unten benachbarten Knotenprozessor 427 übertragen. Hinsichtlich Zeilen, in denen kein Zellenprozessor und kein Eingangsprozessor vorhanden ist, werden die vom linken Knotenprozessor 421 übertragenen Zwischenabweichungswerte &delta;k(n, L) [k&epsi;{Jlp, Jlp+1, ..., Jup-1, Jup}] sukzessive empfangen um für jede Zeile in die Puffer 478, 480 und 481 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer k an den rechts benachbarten Knotenprozessor 423 übertragen. Die Zwischenabweichungswerte &delta;k(n, L) [k&epsi;{Jlp, Jlp+1, ..., Jup-1, Jup}) aus dem Lernvorgang, wie vom rechten Knotenprozessor 423 übertragen, werden sukzessive empfangen, um für jede Zeile in die Puffer 490, 492, 493 eingespeichert zu werden. Gleichzeitig wird der Zwischenabweichungswert &delta;k(n, L) aus dem Lernvorgang zusammen mit der Zeilennummer k an den links benachbarten Knotenprozessor 421 übertragen.
  • Andererseits empfängt der Knotenprozessor für Spalten, die keinen Zellenprozessor enthalten, den vom oben benachbarten Knotenprozessor übertragenen Wert v&sub1;(n) zusammen mit der Spaltennummer i und speichert sie dann in die Puffer 470, 473 und 474 ein, wie sie jeder der Spalten zugeordnet sind. Gleichzeitig wird der Wert vi(n) zusammen mit der Zeilennummer i an den unten benachbarten Knotenprozessor 427 übertragen.
  • Wenn der Wert v&sub1;(n) zusammen mit der Zeilennummer i vom unten benachbarten Knotenprozessor übertragen wurde, werden sie empfangen und in die Puffer 482, 485, 486 eingespeichert. Gleichzeitig wird vi(n) zusammen mit der Zeilennummer i an den oben benachbarten Knotenprozessor 417 übertragen.
  • (2) Hinsichtlich der Synapsenprozessoren in den Rechteckbereichen, denen der Knotenprozessor 422 in der Zeile p und der Spalte q zugeordnet ist, wird, falls das Verbindungflag = "1" ist, die Änderungsgröße &Delta;wij(n) des Gewichtungskoeffizients wij(n) aus dem entweder vom links benachbarten Knotenprozessor 421 oder dem rechts benachbarten Knotenprozessor 423 übertragenen Zwischenabweichungswert &delta;j(n, L) aus dem Lernvorgang und dem entweder vom oben benachbarten Knotenprozessor 417 oder vom unten benachbarten Knotenprozessor 427 übertragenen Signal vi(n) gemäß der Gleichung (26) berechnet. Dann wird der Gewichtungskoeffizient wij(n) gemäß der Gleichung (27) aktualisiert. Wenn das Verbindungsflag = "0" ist, wird keine Verarbeitung ausgeführt.
  • S7 Testen der Lernkonvergenz
  • Beim Testen der Lernkonvergenz testet der Knotenprozessor mit dem Zellenprozessor in der Ausgangsschicht, ob der Mittelwert oder der Maximalwert der Abweichung &xi;j = (tj(n) -zj(n))² zwischen dem Ausgangssignal und dem Zieldatenwert kleiner als ein vorbestimmter Wert ist. So wird der Abschluss des Lernvorgangs ermittelt. Wenn die Abweichung kleiner als der vorbestimmte Wert ist, ist der Lernvorgang abgeschlossen. Wenn die Abweichung größer als der vorbestimmte Wert ist, werden die Trainingsdaten und die Zieldaten wiederholt zugeführt und der Lernvorgang wird ab der Verarbeitung in 52 wiederholt.
  • Wie oben beschrieben, kann eine Parallelverarbeitung zum Simulieren von Neuralnetzwerken durch die Knotenprozessoren ausgeführt werden, die so miteinander verbunden sind, dass sie eine Rechteckgitterform bilden.
  • Die Anordnung der virtuellen Prozessoren zum Simulieren des in Fig. 8 dargestellten dreischichtigen Perzeptrons ist dergestalt, wie es in Fig. 29 dargestellt ist. In Fig. 29 repräsentiert die Markierung ((w)) einen Synapsenprozessor mit dem Verbindungsflag Fij = 1, die Markierung ((0)) repräsentiert einen Synapsenprozessor mit dem Verbindungsflag Fij = 0. Für einen Synapsenprozessor, dessen Verbindungsflag Fij = 0 ist, ist es nicht erforderlich, die Produkt-Summen-Operation für die Partialsumme auszuführen, sondern nur ein Synapsenprozessor, dessen Verbindungsflag Fij = 1 ist, muss die Produkt-Summen-Operation für die Partialsumme ausführen. Obwohl die Anzahl der Zellenprozessoren klein ist, sind die Verarbeitungen in den Zellenprozessoren kompliziert. Daher ist die Belastung der Zellenprozessoren das 10-fache oder mehr der Belastung der Synapsenprozessoren, obwohl dies vom Neuronmodell abhängt.
  • Fig. 30 ist eine Ansicht, die eine Umordnung und Unterteilung eines Rechteckgitters mit Synapsenprozessoren, Zellenprozessoren, Eingangsprozessoren, Ausgangsprozessoren sowie Eingangs/Ausgangs-Prozessoren zeigt, nachdem die Belastungen zwischen den Knotenprozessoren durch Permutation ausgeglichen wurden. Fig. 31 ist eine Ansicht, die die Architektur eines Neurocomputers veranschaulicht, der aus Knotenprozessoren, die so verbunden sind, dass sie ein Rechteckgitter bilden, und virtuellen Prozessoren besteht, die den Knotenprozessoren in der Zeile 2 und der Spalte 2 zugeordnet sind.
  • Es können viele stark verschiedene Ausführungsformen der Erfindung aufgebaut werden, ohne vom Schutzumfang der vorliegenden Ansprüche abzuweichen. Es ist zu beachten, dass die Erfindung nicht auf die in dieser Beschreibung beschriebenen speziellen Ausführungsbeispiele beschränkt ist, sonde nur auf das, was in den beigefügten Ansprüchen definiert ist.

Claims (11)

1. Neurocomputer, der mit einem Hostcomputer (400) verbunden ist und eine Anzahl verschiedener Arten von Verarbeitungselementen aufweist, die an jedem Knoten eines Gitters liegen und mit benachbarten Verarbeitungselementen verbunden sind, wobei das Gitter der Verarbeitungselemente erste Rechteckbereiche (1-P, 1-Q) von Verarbeitungselementen aufweist und die Anzahl der Verarbeitungselemente (O, C) in eine erste und einen zweite Gruppe unterteilt ist, wobei die erste Gruppe aus Arten der Verarbeitungselemente besteht, die Daten vom und an den Hostcomputer empfangen bzw. senden und vom und an jedes der benachbarten Verarbeitungselemente in einer zweiten Gruppe der zwei Gruppen empfangen bzw. senden können, und wobei die zweite Gruppe aus Arten der Verarbeitungselemente besteht, die Daten von und an jedes der benachbarten Verarbeitungselemente in entweder der ersten Gruppe oder der zweiten Gruppe empfangen bzw. senden können, gekennzeichnet durch:
- eine Anzahl zweiter Rechteckbereiche (1-p, 1-q) des Gitters aus Verarbeitungselementen, wobei jeder der zweiten Rechteckbereiche einem Prozessor einer Anzahl körperlicher Prozessoren (410-435) entspricht und eine Anzahl verschiedener Arten der Verarbeitungselemente enthält, so daß eine Anzahl der Verarbeitungselemente jeweils auf jeden der körperlichen Prozessoren abgebildet ist; wobei jeder der körperlichen Prozessoren mit denjenigen körperlichen Prozessoren verbunden ist, die benachbart zu ihm liegen, und eine Teilgruppe der körperlichen Prozessoren dazu in der Lage ist, Empfangs-und Ausgabevorgänge von bzw. zum Hostcomputer auszuführen; und
- eine Einrichtung (S1-S6; Fig. 20) zum Verteilen eines Abschnitts oder einer Anzahl unterteilter Abschnitte, wie in der Anzahl erster Rechteckbereiche von Verarbeitungselementen ausgebildet, an die Anzahl körperlicher Prozessoren auf solche Weise, daß die zweiten Rechteckbereiche, wie sie jedem der körperlichen Prozessoren zugeordnet sind, eine gleiche oder beinahe gleiche Anzahl der Anzahl unterteilter Abschnitte enthalten;
- wobei die Verteilungseinrichtung einen Abschnitt oder eine Anzahl unterteilter Abschnitte, wie in der Anzahl erster Rechteckbereiche von Verarbeitungselementen ausgebildet, an die ersten Prozessoren verteilen kann, wobei die unterteilten Abschnitte dadurch erzeugt werden, daß die Anzahl der Spalten der Verarbeitungselemente in jedem der ersten Rechteckbereiche genau oder mit einem jeweiligen Rest durch die Anzahl aller körperlichen Prozessoren oder durch die Anzahl der körperlichen Prozessoren in einer Spalte geteilt wird und die Anzahl der Zeilen der Verarbeitungselemente in jedem der ersten Rechteckbereiche genau oder mit einem jeweiligen Rest durch die Anzahl aller körperlichen Prozessoren oder durch die Anzahl körperlicher Prozessoren in einer Zeile geteilt wird, und daß einer oder eine Anzahl der unterteilten Abschnitte in jedem der ersten Rechteckbereiche mit gleicher oder beinahe gleicher Anzahl jedem der körperlichen Prozessoren durch Permutation von Spalten und Zeilen im Gitter der Verarbeitungselemente zugeordnet wird, so daß ein Ausgleich der Belastungen zwischen körperlichen Prozessoren unter der Anzahl der jedem der körperlichen Prozessoren zugeordneten Verarbeitungselemente erzielt wird.
2. Neurocomputer nach Anspruch 1, bei dem einer oder eine Anzahl der unterteilten Abschnitte in jedem der ersten Rechteckbereiche jedem der zweiten Rechteckbereiche durch Permutation von Spalten und Zeilen im Gitter der Verarbeitungselemente auf solche Weise zugeordnet wird, daß jeder der zweiten Rechteckbereiche die unterteilten Abschnitte in jedem der ersten Rechteckbereiche enthält, wobei für jeden dieselbe Restzahl dadurch erzeugt ist, daß von der Spaltenanzahl jedes der Abschnitte im ersten Rechteckbereich eins subtrahiert wird und das Ergebnis durch die Anzahl der körperlichen Prozessoren in einer Spalte dividiert wird, wenn die um eins verringerte Spaltennummer des körperlichen Prozessors dem zweiten Rechteckbereich entspricht, und derselbe Rest durch Subtrahieren von eins von der Zeilenanzahl jeder der Abschnitte im ersten Rechteckbereich und durch Teilen des Ergebnisses durch die Anzahl körperlicher Prozessoren in einer Zeile erzeugt wird, wenn die um eins verringerte Zeilennummer des körperlichen Prozessors dem zweiten Rechteckbereich entspricht.
3. Neurocomputer nach Anspruch 1, bei dem die ersten Rechteckbereiche gleichmäßig mit Resten unterteilt werden, wie sie während der Erzeugung der zugehörigen unterteilten Abschnitte erzeugt werden, wobei alle erzeugten Reste für Zeilen und Spalten individuell in jedem unter einer Anzahl von Restarrays für Zeilen bzw. Spalten abgespeichert werden.
4. Neurocomputer nach Anspruch 3, bei dem die Reste von Zeilen und Spalten in der Anzahl von Restarrays sukzessive jeder der Zeilen und Spalten der körperlichen Prozessoren durch Permutationen von Spalten und Zeilen im Gitter der Verarbeitungselemente so zugeordnet werden, daß für jeden der zweiten Rechteckbereiche, wie sie jedem der körperlichen Prozessoren entsprechen, die Differenzen hinsichtlich der Anzahlen der Zeilen und Spalten des zweiten Rechteckbereichs, wie sie jedem der körperlichen Prozessoren zugeordnet sind, auf eine Zeile oder eine Spalte begrenzt sind.
5. Neurocomputer nach Anspruch 1, bei dem die Verarbeitungselemente in der ersten der zwei Gruppen eine Anzahl von Eingangsprozessoren, Ausgangsprozessoren und Eingangs/Ausgangs-Prozessoren enthalten.
6. Neurocomputer nach Anspruch 1, bei dem die Verarbeitungselemente in der zweiten Gruppe in zwei Typen unterteilt sind, wobei die Verarbeitungselemente gemäß einem der zwei Typen Produkt-Summen-Funktionen und Gewichtungsaktualisierungsfunktionen entsprechend den Funktionen einer Synapse ausführen können, und die Verarbeitungselemente gemäß dem anderen der zwei Typen Schwellenwertfunktionen und neurodynamische Funktionen entsprechend den Aktivierungsfunktionen eines Neuronenzellenkörpers ausführen können.
7. Neuroromputer nach Anspruch 6, bei dem die Verarbeitungselemente in der zweiten Gruppe eine Anzahl von Synapsenprozessoren und Zellenprozessoren umfassen.
8. Neurocomputer nach Anspruch 1, bei dem das Gitter von Verarbeitungselementen ein Toroidgitter ist und die Konfiguration der Verbindungen der körperlichen Prozessoren ein Toroidgitter ist.
9. Neurocomputer nach Anspruch 1, bei dem das Gitter der Verarbeitungselemente ein Rechteckgitter ist und die Konfiguration der Verbindungen der körperlichen Prozessoren ein Rechteckgitter ist.
10. Neurocomputer nach Anspruch 1, bei dem die ersten Rechteckbereiche solche gemäß einem Plan und/oder homogene umfassen.
11. Neurocomputer nach Anspruch 1, bei dem die Prozessorelemente der zweiten Gruppe so angeordnet sind, daß die ganz rechten Prozessorelemente nicht mit den ganz linken Prozessorelementen verbunden sind und die ganz oben liegenden Prozessorelemente nicht mit den ganz unten liegenden Prozessorelementen verbunden sind.
DE68927474T 1988-12-29 1989-12-29 Neuro-Rechner Expired - Fee Related DE68927474T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP63330971A JPH0690704B2 (ja) 1988-12-29 1988-12-29 ニューロコンピュータ
JP1024307A JPH0736182B2 (ja) 1989-02-01 1989-02-01 ニューロコンピュータ
JP1127274A JPH0782482B2 (ja) 1989-05-19 1989-05-19 ニューロコンピュータの負荷配分方法

Publications (2)

Publication Number Publication Date
DE68927474D1 DE68927474D1 (de) 1997-01-02
DE68927474T2 true DE68927474T2 (de) 1997-05-22

Family

ID=27284589

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68927474T Expired - Fee Related DE68927474T2 (de) 1988-12-29 1989-12-29 Neuro-Rechner

Country Status (3)

Country Link
US (1) US5170463A (de)
EP (1) EP0377221B1 (de)
DE (1) DE68927474T2 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68922567T2 (de) * 1988-10-06 1995-08-17 Toshiba Kawasaki Kk Neuronales Netzwerksystem.
DE3909153A1 (de) * 1989-03-21 1990-09-27 Bodenseewerk Geraetetech Parallelrechnerstruktur zum modellieren und trainieren kuenstlicher neuronaler netze
WO1991018351A1 (en) * 1990-05-22 1991-11-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
KR930009066B1 (ko) * 1990-08-18 1993-09-22 정호선 다층신경회로망 및 그 회로설계방법
GB9027663D0 (en) * 1990-12-20 1991-02-13 Sandoz Ltd Light-stabilizing compositions
US5214747A (en) * 1990-12-24 1993-05-25 Eastman Kodak Company Segmented neural network with daisy chain control
US5394553A (en) * 1991-06-12 1995-02-28 Lee Research, Inc. High performance array processor with nonlinear skewing of elements
WO1993010500A1 (en) * 1991-11-13 1993-05-27 Iowa State University Research Foundation, Inc. Improved memory capacity neural network
US5454064A (en) * 1991-11-22 1995-09-26 Hughes Aircraft Company System for correlating object reports utilizing connectionist architecture
US5276771A (en) * 1991-12-27 1994-01-04 R & D Associates Rapidly converging projective neural network
FR2690772A1 (fr) * 1992-04-29 1993-11-05 Philips Electronique Lab Processeur neuronal muni de moyens pour calculer une norme ou une distance.
US5479572A (en) * 1992-06-17 1995-12-26 Siemens Corporate Research, Inc. Artificial neural network (ANN) classifier apparatus for selecting related computer routines and methods
JPH06195322A (ja) * 1992-10-29 1994-07-15 Hitachi Ltd 汎用型ニューロコンピュータとして用いられる情報処理装置
US5412670A (en) * 1992-11-30 1995-05-02 Ricoh Corporation N-bit parity neural network encoder
US6145071A (en) * 1994-03-03 2000-11-07 The George Washington University Multi-layer multi-processor information conveyor with periodic transferring of processors' states for on-the-fly transformation of continuous information flows and operating method therefor
US5835902A (en) * 1994-11-02 1998-11-10 Jannarone; Robert J. Concurrent learning and performance information processing system
US5956703A (en) * 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
US6216119B1 (en) 1997-11-19 2001-04-10 Netuitive, Inc. Multi-kernel neural network concurrent learning, monitoring, and forecasting system
US6269354B1 (en) * 1998-11-30 2001-07-31 David W. Arathorn General purpose recognition e-circuits capable of translation-tolerant recognition, scene segmentation and attention shift, and their application to machine vision
US6618631B1 (en) * 2000-04-25 2003-09-09 Georgia Tech Research Corporation Adaptive control system having hedge unit and related apparatus and methods
US7266255B1 (en) * 2003-09-26 2007-09-04 Sun Microsystems, Inc. Distributed multi-sample convolution
US9244798B1 (en) * 2011-06-20 2016-01-26 Broadcom Corporation Programmable micro-core processors for packet parsing with packet ordering
US9455598B1 (en) 2011-06-20 2016-09-27 Broadcom Corporation Programmable micro-core processors for packet parsing
US9390368B2 (en) * 2013-10-21 2016-07-12 International Business Machines Corporation Coupling parallel event-driven computation with serial computation
CA2984155A1 (en) * 2015-05-21 2016-11-24 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
JP6691297B2 (ja) 2016-07-13 2020-04-28 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
US20210224633A1 (en) * 2019-12-18 2021-07-22 California Institute Of Technology Self organization of neuromorphic machine learning architectures

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
NL8204038A (nl) * 1982-10-20 1984-05-16 Philips Nv Multiprocessorrekenmachinesysteem, bevattende n parallel werkende rekenmachinemodules, en rekenmachinemodule te gebruiken in zo een multiprocessorrekenmachinesysteem.
US4644496A (en) * 1983-01-11 1987-02-17 Iowa State University Research Foundation, Inc. Apparatus, methods, and systems for computer information transfer
US4709327A (en) * 1983-05-31 1987-11-24 Hillis W Daniel Parallel processor/memory circuit
US4660166A (en) * 1985-01-22 1987-04-21 Bell Telephone Laboratories, Incorporated Electronic network for collective decision based on large number of connections between signals
US4739476A (en) * 1985-08-01 1988-04-19 General Electric Company Local interconnection scheme for parallel processing architectures
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4796199A (en) * 1987-02-24 1989-01-03 Oregon Graduate Center Neural-model, information-handling architecture and method
US4809193A (en) * 1987-03-16 1989-02-28 Jourjine Alexander N Microprocessor assemblies forming adaptive neural networks
US4858147A (en) * 1987-06-15 1989-08-15 Unisys Corporation Special purpose neurocomputer system for solving optimization problems
US4942517A (en) * 1987-10-08 1990-07-17 Eastman Kodak Company Enhanced input/output architecture for toroidally-connected distributed-memory parallel computers
US4908751A (en) * 1987-10-15 1990-03-13 Smith Harry F Parallel data processor
US4891782A (en) * 1987-12-17 1990-01-02 United States Of America As Represented By The Secretary Of The Army Parallel neural network for a full binary adder
US4918618A (en) * 1988-04-11 1990-04-17 Analog Intelligence Corporation Discrete weight neural network
US4951239A (en) * 1988-10-27 1990-08-21 The United States Of America As Represented By The Secretary Of The Navy Artificial neural network implementation
US4918617A (en) * 1988-11-10 1990-04-17 Oregon Graduate Center Neural-model computational system with multi-directionally overlapping broadcast regions
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
US4912647A (en) * 1988-12-14 1990-03-27 Gte Laboratories Incorporated Neural network training tool

Also Published As

Publication number Publication date
EP0377221A2 (de) 1990-07-11
DE68927474D1 (de) 1997-01-02
US5170463A (en) 1992-12-08
EP0377221B1 (de) 1996-11-20
EP0377221A3 (de) 1991-07-03

Similar Documents

Publication Publication Date Title
DE68927474T2 (de) Neuro-Rechner
DE69300041T2 (de) Mehrfachprozessor-Datenverarbeitungssystem.
DE3689820T2 (de) Verfahren und Gerät zur Simulierung von durch partielle differentiale Gleichungen beschriebenen Systemen.
DE3854663T2 (de) Neurorechnersystem zur lösung von optimierungsproblemen.
DE69520974T2 (de) Eine integrierte Halbleiterschaltung
DE69130656T2 (de) Neuronale Netzwerke
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE102018105457A1 (de) Transponieren von Matrizen neuronaler Netze in Hardware
DE69707710T2 (de) Verfahren zur plazierung einer programmierbaren logischen vorrichtung unter verwendung der gewichtungsfunktion zur vereinfachung der pinverriegelung
DE69314824T2 (de) Neuronaler Prozessor mit verteilten synaptischen Zellen
DE69218941T2 (de) Neuronale netzwerk architektur
DE112019000226T5 (de) Neuromorpher chip zum aktualisieren präziser synaptischer gewichtswerte
JPH0310378A (ja) 配置最適化方法及び配置最適化装置と回路設計装置
DE3437511A1 (de) Integrationsschaltung fuer grossschaltkreise, die in isochrone gebiete unterteilt ist, verfahren zum maschinengesteuerten entwerfen einer derartigen schaltung und verfahren zum maschinengesteuerten pruefen einer derartigen schaltung
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE60005670T2 (de) Aktualisierung der platzierung während der technologieabbildung
DE3882990T2 (de) Verfahren und gerät zur simulation von m-dimensionalen verbindungsnetzwerken in einem n-dimensionalen netzwerk, worin m kleiner ist als n.
DE69129721T2 (de) Verfahren zur Bildglättung
DE112017008040T5 (de) Rechenoperationsschaltung, rechenoperationsverfahren und programm
DE3587055T2 (de) Verfahren zur verteilung der leitungsbelastung auf einer schaltkarte oder auf einem verbindungspackage mit jeweils mehreren verdrahtungsebenen.
DE102022100920A1 (de) Compute-in-memory-akkumulator
DE3909153C2 (de)
WO1992009040A1 (de) Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
EP0349819B1 (de) In integrierter Schaltungstechnik ausgeführtes digitales neuronales Netz
DE69425101T2 (de) Rechner für die diskrete Cosinustransformation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee