-
Beschreibung der verwandten Kunst
-
Künstliche neuronale Netze sind eine Familie technischer Modelle, die vom biologischen Nervensystem inspiriert sind und zur Schätzung oder Annäherung von Funktionen verwendet werden, die durch komplexe Dateneingaben dargestellt werden. Ein neuronales Netzwerk kann als ein System miteinander verbundener „Neuronen“ dargestellt werden, die Nachrichten untereinander austauschen. Die Verbindungen können numerische Gewichte haben, die basierend auf Erfahrung abgestimmt werden können, wodurch neuronale Netze an Eingaben angepasst werden und maschinelles Lernen möglich sind. Künstliche neuronale Netze können eine Vielzahl von Anwendungen haben, einschließlich Funktionsnäherung, Klassifizierung, Datenverarbeitung, Robotik und numerische Computersteuerung.
-
Figurenliste
-
Die vorliegende Offenbarung wird gemäß einer oder mehreren verschiedenen Ausführungsformen detailliert unter Bezugnahme auf die folgenden Figuren beschrieben. Die Figuren dienen nur zur Veranschaulichung und zeigen lediglich typische oder beispielhafte Ausführungsformen.
- 1 zeigt ein neuronales Netzwerksystem zum Lösen von NP-Schweren/Vollständigen-Problemen gemäß einer Ausführungsform der offenbarten Technologie.
- 2 zeigt ein Corssbar-Array gemäß einer Ausführungsform der offenbarten Technologie.
- 3 zeigt ein rekursives neuronales Netzwerksystem gemäß einer Ausführungsform der offenbarten Technologie.
- 4 ist ein Blockdiagramm einer beispielhaften Rechenkomponente oder - vorrichtung zum Lösen von NP-Schweren/Vollständige-Problemen unter Verwendung von abgestuften neuronalen Netzen gemäß einer Ausführungsform.
- 5 zeigt eine beispielhafte vorläufige Lösung, die von einem tiefen neuronalen Netzwerk für ein Reiseverkaufsproblem gemäß einer Ausführungsform der offenbarten Technologie bereitgestellt wird.
- 6 setzt das Beispiel von 5 fort.
- 7 zeigt ein Blockdiagramm eines beispielhaften Computersystems, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können.
-
Die Zeichnungen erheben keinen Anspruch auf Vollständigkeit und beschränken die vorliegende Offenbarung nicht auf die genaue offenbarte Form.
-
Detaillierte Beschreibung
-
Einige neuronale Netze, wie beispielsweise neuronale Hopfield-Netze, können zum Lösen von NP-Problemen verwendet werden, wie z.B. das Problem des Handlungsreisenden, die Ressourcenplanung und dergleichen. Diese Netzwerke sind jedoch durch die Qualität der anfänglichen Schätzungen begrenzt, die als Ausgangspunkt dienen. Um diese anfänglichen Vermutungen zu erzeugen, kann die offenbarte Technologie ein tiefes neuronales Netzwerk verwenden. Die vom tiefen neuronalen Netzwerk erzeugte vorläufige Lösung kann als Ausgangspunkt für ein rekursives neuronales Netzwerk verwendet werden. Das rekursive neuronale Netzwerk kann eine Energieminimierungssuche implementieren, beispielsweise unter Verwendung eines Hopfield-Netzwerks oder dergleichen. Die rekursiven Netzwerke können wiederkehrende Netzwerke und dergleichen umfassen.
-
Ein Vorteil des abgestuften Ansatzes ist die kürzere Zeit, die erforderlich ist, um zu einer Lösung zu gelangen. Tiefe neuronale Netze sind ungenau, aber schnell und werden daher in der offenbarten Technologie verwendet, um eine gute vorläufige Lösung bereitzustellen. Rekursive neuronale Netze sind präzise, aber langsam, insbesondere wenn von einer schlechten Anfangslösung ausgegangen wird. Durch die Bereitstellung einer guten vorläufigen Lösung wird die Zeit reduziert, die ein rekursives neuronales Netzwerk benötigt, um eine endgültige Lösung zu erzielen. Die Verwendung dieser neuronalen Netze in der hier beschriebenen abgestuften Weise reduziert die Gesamtzeit, die erforderlich ist, um zu einer endgültigen Lösung für ein schweres/vollständiges NP-Problem zu gelangen.
-
1 zeigt ein neuronales Netzwerksystem zum Lösen von NP-Schweren/Vollständige-Problemen gemäß einer Ausführungsform der offenbarten Technologie. Bezugnehmend auf 1 kann das neuronale Netzwerksystem 100 ein oder mehrere tiefe neuronale Netzwerke 102a-n enthalten. Ein tiefes neuronales Netzwerk kann sich auf ein künstliches neuronales Netzwerk beziehen, das viele Schichten zwischen einer Eingangsschicht und einer Ausgangsschicht aufweist. Die tiefen neuronalen Netze 102 können anwendungsspezifische Systeme wie Gesichtserkennungshardware enthalten. Die tiefen neuronalen Netze 102 können eine Anzahl von Algorithmen implementieren, beispielsweise Einspeisungsalgorithmen, Inferenzalgorithmen, Rückausbreitungsalgorithmen und dergleichen. Die tiefen neuronalen Netze 102 können auf beliebigen Hardwareplattformen basieren, beispielsweise auf feldprogrammierbaren Gate-Arrays (FPGA), grafischen Verarbeitungseinheiten (GPU), Memristoren, integrierten photonischen Schaltungen, Matrix-Vektor-Multiplikatoren, die auf Freiraumoptiken basieren, und dergleichen und Kombinationen davon.
-
Das neuronale Netzwerksystem 100 kann eine Eingangsschaltung 108 enthalten. Gemäß Ausführungsformen der offenbarten Technologie kann die Eingangsschaltung 108 die tiefen neuronalen Netze 102 unter Verwendung gelöster NP-Schweren/Vollständige-Probleme und der Lösungen für diese Probleme trainieren. Nach dem Training kann die Eingangsschaltung 108 die tiefen neuronalen Netze 102 mit einem ungelösten NP-Schweren/Vollständige-Problem versorgen, das den gelösten NP-Schweren/Vollständige-Problemen ähnlich ist, die zum Trainieren der Deep Neural Networks verwendet werden, und für die eine vorläufige Lösung erwünscht ist. Jedes der tiefen neuronalen Netze 102 kann eine vorläufige Lösung für das Problem bereitstellen.
-
Das neuronale Netzwerksystem 100 kann eine neuronale Netzwerkschnittstelle 106 und ein oder mehrere rekursive neuronale Netzwerke 104a-n enthalten. Die rekursiven neuronalen Netze 104 können als jedes neuronale Netz implementiert werden, das so programmiert werden kann, dass es eine Eingabe einer Matrix akzeptiert, die einen Hamilton-Operator eines schweren/vollständigen NP-Problems darstellt, und in Richtung einer Lösung der Matrix iteriert. Das rekursive neuronale Netzwerk 104 kann ein Hopfield-Netzwerk, einen autoassoziativen Speicher, eine restriktive Boltzmann-Maschine, eine optische Ising-Maschine und dergleichen und Kombinationen davon umfassen. Das Hopfield-Netzwerk kann als Crossbar-Array von Speicherelementen implementiert werden. Die Speicherelemente können als Memristoren oder dergleichen implementiert sein. Die rekursiven neuronalen Netze können auf Hardwareplattformen implementiert werden, einschließlich GPUs, CMOS-basierten Netzwerken (Complementary Metal Oxide Semiconductor), memristorbasierten Netzwerken und dergleichen und Kombinationen davon.
-
Wenn das neuronale Netzwerksystem 100 nur ein tiefes neuronales Netzwerk 102 enthält, kann die neuronale Netzwerkschnittstelle 106 die rekursiven neuronalen Netzwerke 104 mit der vorläufigen Lösung programmieren, die von diesem tiefen neuronalen Netzwerk 102 bereitgestellt wird. Wenn das neuronale Netzwerksystem 100 mehrere tiefe neuronale Netzwerke 102 enthält, kann die neuronale Netzwerkschnittstelle 106 die rekursiven neuronalen Netzwerke 104 mit einer oder mehreren der vorläufigen Lösungen, einer Synthese der vorläufigen Lösungen oder ausgewählten der vorläufigen Lösungen programmieren. In einigen Ausführungsformen kann das tiefe neuronale Netzwerk 102 Parameter zum Abtasten aus einer Verteilung der vorläufigen Lösungen bereitstellen, und die neuronale Netzwerkschnittstelle 106 kann ein oder mehrere Abtastwerte aus der Verteilung verwenden, um vorläufige Lösungen für die rekursiven neuronalen Netzwerke 104 zu erzeugen. Jede dieser Techniken kann allein oder in Kombination verwendet werden. Die neuronale Netzwerkschnittstelle 106 kann einen oder mehrere anfängliche Eingabevektoren für die rekursiven neuronalen Netzwerke 104 bereitstellen.
-
Rekursive neuronale Netze 104 können viele Male iterieren, um eine endgültige Lösung bereitzustellen. Die rekursiven neuronalen Netze können die endgültige Lösung für eine Ausgangsschaltung 110 bereitstellen. Die Eingangsschaltung 108 und die Ausgangsschaltung 110 können beliebige Schaltungen enthalten, die zur Schnittstelle mit den tiefen neuronalen Netzen 102 bzw. den rekursiven neuronalen Netzen 104 erforderlich sind. Die Schaltungen können beispielsweise Eingangsschaltungen, Ausgangsschaltungen, Analog-Digital-Wandler, Digital-Analog-Wandler, Speicher, Prozessoren und dergleichen umfassen.
-
In einigen Ausführungsformen umfasst das neuronale Netzwerksystem 100 eine Rückkopplungsschleife 112. Die Rückkopplungsschleife 112 kann Ausgänge des rekursiven neuronalen Netzwerks 104 von der Ausgangsschaltung 110 zur Eingangsschaltung 108 bereitstellen. Diese Ausgaben können endgültige Lösungen, andere Daten, die von den rekursiven neuronalen Netzen 104 bereitgestellt werden, Produkte, die von den endgültigen Lösungen oder anderen Daten abgeleitet sind, oder eine beliebige Kombination davon umfassen. Die Rückkopplungsschleife 112 kann Daten von der neuronalen Netzwerkschnittstelle 106 bereitstellen. Diese Daten können die vorläufigen Lösungen, andere Daten, die von den tiefen neuronalen Netzen 102 bereitgestellt werden, andere Daten, die den rekursiven neuronalen Netzen bereitgestellt werden, Produkte, die von diesen vorläufigen Lösungen und Daten abgeleitet sind, oder eine beliebige Kombination davon umfassen. Mit dieser Rückkopplungsschleife 112 kann das gesamte neuronale Netzwerksystem 100, einschließlich der tiefen neuronalen Netzwerke 102 und der rekursiven neuronalen Netzwerke 104, so oft wie gewünscht iterieren, um eine verbesserte endgültige Lösung zu erhalten.
-
In solchen Ausführungsformen kann die Eingangsschaltung 108 die Rückkopplungsdaten oder daraus abgeleitete Produkte an die tiefen neuronalen Netze 102 liefern. Beispielsweise können diese Daten in unbeaufsichtigten Trainingstechniken oder beim Lernen zur Stärkung und dergleichen verwendet werden. Beispielsweise wird beim Verstärkungslernen eine Gesamtleistungszahl für das neuronale Netzwerk verfolgt, und die Gewichte des neuronalen Netzwerks werden gemäß der Leistungszahl angepasst.
-
In einigen Ausführungsformen können die neuronalen Netze in der ersten Stufe des neuronalen Netzwerksystems 100, dh die tiefen neuronalen Netze 102, durch andere Arten von neuronalen Netzen ersetzt werden. Beispielsweise können eines oder mehrere der tiefen neuronalen Netze 102 durch ein rekursives neuronales Netzwerk, ein vorwärts gerichtetes neuronales Netzwerk, ein Reservoir-Computernetzwerk und dergleichen ersetzt werden. Eines oder mehrere dieser Netzwerke können in Hardware, Software oder einer Kombination davon implementiert sein.
-
2 zeigt ein rekursives neuronales Netzwerksystem gemäß einer Ausführungsform der offenbarten Technologie. Bezugnehmend auf 2 kann das rekursive neuronale Netzwerksystem 200 ein rekursives neuronales Netzwerk 230 enthalten. Das rekursive neuronale Netzwerk kann ein Crossbar-Array 202 enthalten. 3 zeigt eine Crossbar-Array 202 gemäß einer Ausführungsform der offenbarten Technologie. Bezugnehmend auf 3 enthält das Crossbar-Array 202 mehrere Zeilenlinien R, wobei drei Zeilenlinien R1, R2 und R3 gezeigt sind. Das Crossbar-Array 202 enthält auch mehrere Spaltenlinien C, wobei drei Spaltenlinien C1, C2 und C3 gezeigt sind. Das Crossbar-Array 202 enthält auch mehrere Speicherzellen G. Jede Speicherzelle G ist zwischen einer jeweiligen Kombination einer der Zeilenleitungen R und einer der Spaltenleitungen C gekoppelt. Beispielsweise ist die Speicherzelle G 1,1 zwischen gekoppelt Zeilenzeile R1 und Spaltenzeile C1. Das Crossbar-Array 202 kann beliebige geeignete Abmessungen aufweisen.
-
Vor dem Betrieb des Crossbar-Arrays 202 kann eine Matrix von Gewichten in den Speicherzellen G gespeichert werden. Während des Betriebs des Crossbar-Arrays 202 können die Spaltenleitungen C Eingaben gemäß einem Eingabevektor empfangen, und jede Zeilenzeile kann eine liefern Ausgabe, die ein Punktprodukt des Eingabevektors und der Gewichte in der Zeilenzeile darstellt.
-
Die Speicherelemente G des Crossbar-Arrays 202 können als Memristoren implementiert sein. Memristoren sind Geräte, die als Komponenten in einer Vielzahl von elektronischen Schaltungen verwendet werden können, wie z.B. Speichern, Schaltern, Hochfrequenzschaltungen sowie Logikschaltungen und -systemen. In einer Speicherstruktur kann ein Crossbar-Array von Speichervorrichtungen mit Memristoren verwendet werden. In Speichervorrichtungen können Memristoren verwendet werden, um Informationsbits 2 oder 0 zu speichern. Der Widerstand eines Memristors kann durch Anlegen eines elektrischen Stimulus wie einer Spannung oder eines Stroms durch den Memristor geändert werden. Im Allgemeinen kann mindestens ein Kanal gebildet werden, der zwischen zwei Zuständen umgeschaltet werden kann - einer, in dem der Kanal einen elektrisch leitenden Pfad bildet („ein“) und einer, in dem der Kanal einen weniger leitenden Pfad bildet („aus“) . In einigen anderen Fällen stehen leitende Pfade für „Aus“ und weniger leitende Pfade für „Ein“. Darüber hinaus können sich Memristoren auch als analoge Komponente mit variabler Leitfähigkeit verhalten.
-
In einigen Anwendungen kann ein Speicher-Crossbar-Array verwendet werden, um Vektormatrixberechnungen durchzuführen. Beispielsweise wird ein Eingangsspannungssignal von jeder Spaltenleitung des Crossbars mit der Leitfähigkeit der Widerstandsvorrichtungen in jeder Zeilenleitung gewichtet und als der von jeder Zeilenleitung ausgegebene Strom akkumuliert. Wenn Drahtwiderstände ignoriert werden können, wird der aus dem Crossbar-Array fließende Strom (
1) idealerweise in der folgenden Gleichung ungefähr dargestellt:
-
Dabei ist V die Eingangsspannung und G die Leitfähigkeitsmatrix.
-
Das Memristor-Crossbar-Array ist so konfiguriert, dass Beiträge von jedem Memristor in das Crossbar-Array aufgenommen werden. Die Verwendung von Memristoren an Verbindungsstellen oder Kreuzungspunkten des Crossbar-Array ermöglicht die Programmierung des Widerstands (oder der Leitfähigkeit) an jeder solchen Verbindungsstelle.
-
Unter erneuter Bezugnahme auf 2 kann das rekursive neuronale Netzwerk 230 einen oder mehrere Filter 204 enthalten. Die Filter 204 empfangen Ausgänge 208 von den Zeilenlinien R des Crossbar-Arrays 202 und erzeugen einen neuen Eingabevektor 210 für das Crossbar-Array 202 basierend auf den Ausgängen 208. Die Filter können linear oder nichtlinear sein und können einfache Filter wie Schwellenwertfilter, komplexe Filter wie Sigmoidfilter, andere Filter und Kombinationen davon umfassen.
-
Das rekursive neuronale Netzwerk 230 kann einen oder mehrere Puffer 206 enthalten. Die Puffer 206 speichern den neuen Eingabevektor 210 und liefern Signale 212, die den neuen Eingabevektor 210 darstellen, an die Spaltenlinien C des Crossbar-Arrays 202.
-
Das rekursive neuronale Netzwerksystem 200 kann einen Speicher 222 zum Speichern einer Gewichtsmatrix 224 enthalten. Die Gewichtsmatrix 224 kann ein zu lösendes Problem darstellen. Das zu lösende Problem kann ein NP-schweres Problem umfassen, wie beispielsweise ein Problem mit reisenden Verkäufern, ein Max-Cut-Problem, ein Job- oder Flugplanungsproblem oder dergleichen. Das Problem kann als eine Matrix ausgedrückt werden, die einen Hamilton-Operator eines schweren/vollständigen NP-Problems darstellt.
-
Das rekursive neuronale Netzwerksystem 200 kann eine Steuerung 220 enthalten. Die Steuerung 220 kann die Gewichtungsmatrix 224 in die Speicherelemente G des Crossbar-Arrays 202 programmieren. Die Steuerung 220 kann auch andere Funktionen ausführen, wie die hier beschriebenen. Die Steuerung 220 kann als Prozessor, dedizierte Schaltung oder dergleichen oder Kombinationen davon implementiert sein.
-
4 ist ein Blockdiagramm einer beispielhaften Rechenkomponente oder Vorrichtung 400 für Lösen von NP-Problemen mit Hilfe vollständiger neuronaler Netze gemäß einer Ausführungsform. Die Rechenkomponente 400 kann beispielsweise ein Servercomputer, eine Steuerung oder eine andere ähnliche Rechenkomponente sein, die Daten verarbeiten kann. In der beispielhaften Implementierung von 4 umfasst die Computerkomponente 400 einen Hardwareprozessor 402 und ein maschinenlesbares Speichermedium 404. In einigen Ausführungsformen kann die Rechenkomponente 400 eine Ausführungsform der Eingangsschaltung 108, der neuronalen Netzwerkschnittstelle 106 oder einer beliebigen Kombination davon sein.
-
Der Hardwareprozessor 402 kann eine oder mehrere Zentraleinheiten (CPUs), halbleiterbasierte Mikroprozessoren und/oder andere Hardwarevorrichtungen sein, die zum Abrufen und Ausführen von Anweisungen geeignet sind, die in einem maschinenlesbaren Speichermedium 404 gespeichert sind. Der Hardwareprozessor 402 kann Anweisungen wie die Anweisungen 406 bis 414 abrufen, decodieren und ausführen, um Prozesse oder Operationen zum Lösen von NP-Schweren/Vollständige-Problemen unter Verwendung von gestuften neuronalen Netzen zu steuern. Alternativ oder zusätzlich zum Abrufen und Ausführen von Anweisungen kann der Hardwareprozessor 402 eine oder mehrere elektronische Schaltungen enthalten, die elektronische Komponenten zum Ausführen der Funktionalität einer oder mehrerer Anweisungen enthalten, wie beispielsweise ein feldprogrammierbares Gate-Array (FPGA), anwendungsspezifisch integriert Schaltung (ASIC) oder andere elektronische Schaltungen.
-
Ein maschinenlesbares Speichermedium, wie beispielsweise ein maschinenlesbares Speichermedium 404, kann eine beliebige elektronische, magnetische, optische oder andere physische Speichervorrichtung sein, die ausführbare Anweisungen enthält oder speichert. So kann ein nichtflüchtiges maschinenlesbares Speichermedium 404 beispielsweise ein Arbeitsspeicher (RAM), ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM - Electrically Erasable Programmable Read-Only Memory), ein Speichergerät, eine optische Speicherplatte und ähnliches sein. In einigen Ausführungsformen kann das maschinenlesbare Speichermedium 404 ein nicht vorübergehendes Speichermedium sein, wobei der Begriff „nicht vorübergehend“ keine vorübergehenden Ausbreitungssignale umfasst. Wie nachstehend ausführlich beschrieben, kann das maschinenlesbare Speichermedium 404 mit ausführbaren Anweisungen codiert werden, beispielsweise mit den Anweisungen 406 bis 414.
-
Der Hardwareprozessor 402 kann den Befehl 406 ausführen, um mehrere schwere/vollständige Probleme des zweiten NP zu identifizieren, wobei jedes der schweren/vollständigen Probleme des zweiten NP dem ersten schweren/vollständigen NP-Problem ähnlich ist, für das eine Lösung gewünscht wird. Der Hardwareprozessor 402 kann den Befehl 408 ausführen, um Lösungen für die zweiten schweren/vollständigen NP-Probleme zu identifizieren. Der Hardwareprozessor 402 kann den Befehl 410 ausführen, um das tiefe neuronale Netzwerk 102 mit den zweiten schweren/vollständigen NP-Problemen und ihren Lösungen zu trainieren. Diese überwachte Lerntechnik kann verwendet werden, um das tiefe neuronale Netzwerk 102 zu trainieren, um Muster, Trends und Heuristiken zu finden, die sich auf diese Probleme und ihre Lösungen beziehen.
-
Der Hardwareprozessor 402 kann den Befehl 412 ausführen, um das erste NP-Schwere/Vollständige-Problem für das trainierte tiefe neuronale Netzwerk bereitzustellen, wobei das trainierte Deep-Neural-Netzwerk eine vorläufige Lösung für das erste NP-Schweren/Vollständige-Problem erzeugt. Die vorläufige Lösung sollte eine gute erste Vermutung für das erste NP-Problem sein. Die neuronale Netzwerkschnittstelle 106 kann die vorläufige Lösung anhand von Zielkriterien testen, um zu bestimmen, ob der Prozess mit dieser vorläufigen Lösung fortfahren soll. Wenn die vorläufige Lösung diese Zielkriterien nicht erfüllt, kann sie verworfen und eine neue vorläufige Lösung generiert werden. Wenn die vorläufige Lösung die Zielkriterien erfüllt, kann sie den rekursiven neuronalen Netzen 104 bereitgestellt werden.
-
5 zeigt eine beispielhafte vorläufige Lösung, die von einem tiefen neuronalen Netzwerk für ein Problem des Handlungsreisenden gemäß einer Ausführungsform der offenbarten Technologie bereitgestellt wird. Bezugnehmend auf 5 ist ein 10-Städte-Problem mit reisenden Verkäufern dargestellt. Jede Stadt wird als Punkt dargestellt. Die gewünschte Lösung ist die kürzeste Hin- und Rückfahrt, die jede Stadt durchquert. Eine anfängliche Lösung ist bei 502 durch gestrichelte Linien dargestellt. Die anfängliche Lösung ist ein Kreis, der nur zwei der Städte verbindet. Dies ist keine sehr gute Lösung, bietet jedoch einen angemessenen Ausgangspunkt für ein tiefes neuronales Netzwerk. Eine vorläufige Lösung, die durch ein tiefes neuronales Netzwerk bereitgestellt wird, ist bei 504 dargestellt. Dies ist eine ziemlich gute Lösung, da nicht nur eine der 10 Städte durchquert werden kann.
-
Der Hardwareprozessor 402 kann den Befehl 414 ausführen, um die vorläufige Lösung für ein rekursives neuronales Netzwerk bereitzustellen, das konfiguriert ist, um eine Energieminimierungssuche auszuführen, wobei das rekursive neuronale Netzwerk eine endgültige Lösung für das Problem basierend auf der vorläufigen Lösung erzeugt. Die Energieminimierungssuche kann eine klassische Glühensuche umfassen. Die Energieminimierungssuche kann andere Techniken anstelle oder zusätzlich zu einer klassischen Glühensuche umfassen, wie beispielsweise simuliertes adiabatisches Tempern, Bit-Slicing, Auferlegen von Beschränkungen und dergleichen und Kombinationen davon.
-
6 setzt das Beispiel von 5 fort. Die vorläufige Lösung für das 10-Städte-Problem des Handlungsreisenden ist bei 504 dargestellt. Wie oben erwähnt, ist dies eine ziemlich gute Lösung, kann jedoch eine der 10 Städte nicht durchqueren. Da diese vorläufige Lösung jedoch eine einigermaßen gute Lösung darstellt, bietet sie einen guten Ausgangspunkt für das rekursive neuronale Netzwerk 104. Eine endgültige Lösung, die durch das rekursive neuronale Netzwerk 104 bereitgestellt wird, ist bei 602 dargestellt. Wie zu sehen ist, war nur eine geringe Anpassung der vorläufigen Lösung erforderlich, um die endgültige Lösung zu erhalten.
-
Energieminimierungssuchen implementieren Techniken, um die Energie des rekursiven neuronalen Netzwerks auf ein globales Minimum zu reduzieren, wobei die Energie des Netzwerks die Zustände der Knoten im neuronalen Netzwerk darstellt. In vielen Fällen kann das rekursive neuronale Netzwerk jedoch eher bei einem lokalen Minimum als bei einem globalen Minimum konvergieren. Es stehen viele Techniken zur Verfügung, um eine Konvergenz auf einem lokalen Minimum zu verhindern. Eine solche Lösung ist das simulierte Tempern durch Chaos. Diese Lösungen verbrauchen jedoch zusätzliche Ressourcen. Die Verwendung eines trainierten tiefen neuronalen Netzwerks als erste Stufe mit dem rekursiven neuronalen Netzwerk als zweiter Stufe mildert diese Probleme, indem das rekursive neuronale Netzwerk näher am globalen Minimum gestartet wird. Die Verwendung eines tiefen neuronalen Netzwerks oder eines rekursiven neuronalen Netzwerks allein kann diese Ergebnisse nicht erzielen.
-
7 zeigt ein Blockdiagramm eines beispielhaften Computersystems 700, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können. Das Computersystem 700 enthält einen Bus 702 oder eine anderen Kommunikationsmechanismus zum Kommunizieren von Informationen, ein oder mehr Hardware-Prozessoren 704 , gekoppelt mit dem Bus 702 zum Verarbeiten von Information. Hardwareprozessor(en) 704 können beispielsweise ein oder mehrere Allzweck-Mikroprozessoren sein.
-
Das Computersystem 700 enthält auch einen Hauptspeicher 706, wie einen Direktzugriffsspeicher (RAM), einen Cache und/oder andere dynamische Speichervorrichtungen, die mit dem Bus 702 gekoppelt sind, um Informationen und Anweisungen zu speichern, die vom Prozessor 704 ausgeführt werden sollen. Der Hauptspeicher 706 kann auch zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Anweisungen verwendet werden, die vom Prozessor 704 ausgeführt werden sollen. Wenn solche Anweisungen auf Speichermedien gespeichert sind, auf die der Prozessor 704 zugreifen kann, machen sie das Computersystem 700 zu einer Spezialmaschine, die angepasst ist, um die in den Anweisungen angegebenen Operationen auszuführen.
-
Das Computersystem 700 enthält ferner einen Nur-Lese-Speicher (ROM) 708 oder eine andere statische Speichervorrichtung, die mit dem Bus 702 gekoppelt ist, um statische Informationen und Anweisungen für den Prozessor 704 zu speichern. Eine Speichervorrichtung 710, wie eine Magnetplatte, eine optische Platte oder ein USB-Stick (Flash-Laufwerk) usw., ist vorgesehen und mit dem Bus 702 zum Speichern von Informationen und Anweisungen verbunden.
-
Das Computersystem 700 kann über den Bus 702 mit einerAnzeige 712 gekoppelt sein, beispielsweise einer Flüssigkristallanzeige (LCD) (oder einem Touchscreen), um einem Computerbenutzer Informationen anzuzeigen. Eine Eingabevorrichtung 714, die alphanumerische und andere Schlüssel enthält, ist mit dem Bus 702 verbunden, um Informationen und Befehlsauswahlen an den Prozessor 704 zu übermitteln. Ein anderer Typ einer Benutzereingabevorrichtung ist die Cursorsteuerung 716, wie beispielsweise eine Maus, ein Trackball oder Cursorrichtungs-Tasten zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an den Prozessor 704 und zum Steuern der Cursorbewegung auf der Anzeige 712. In einigen Ausführungsformen können die gleichen Richtungsinformationen und Befehlsauswahlen wie bei der Cursorsteuerung durch Empfangen von Berührungen auf einem Touchscreen ohne Cursor implementiert werden.
-
Das Computersystem 700 kann ein Benutzerschnittstellenmodul zum Implementieren einer GUI enthalten, die in einer Massenspeichervorrichtung als ausführbare Softwarecodes gespeichert sein kann, die von den Computervorrichtungen ausgeführt werden. Dieses und andere Module können beispielsweise Komponenten wie Softwarekomponenten, objektorientierte Softwarekomponenten, Klassenkomponenten und Aufgabenkomponenten, Prozesse, Funktionen, Attribute, Prozeduren, Unterprogramme, Segmente des Programmcodes, Treiber, Firmware, umfassen. Mikrocode, Schaltkreise, Daten, Datenbanken, Datenstrukturen, Tabellen, Arrays und Variablen.
-
Im Allgemeinen kann sich das Wort „Komponente“, „Engine“, „System“, „Datenbank“, „Datenspeicher“ und dergleichen, wie hierin verwendet, auf Logik beziehen, die in Hardware oder Firmware enthalten ist, oder auf eine Sammlung von Softwareanweisungen Möglicherweise mit Ein- und Ausstiegspunkten, die in einer Programmiersprache wie z.B. Java, C oder C ++ geschrieben sind. Eine Softwarekomponente kann kompiliert und zu einem ausführbaren Programm verknüpft, in einer dynamischen Linkbibliothek installiert oder in einer interpretierten Programmiersprache wie beispielsweise BASIC, Perl oder Python geschrieben werden. Es versteht sich, dass Softwarekomponenten von anderen Komponenten oder von sich selbst aus aufgerufen werden können und/oder als Reaktion auf erkannte Ereignisse oder Interrupts aufgerufen werden können. Softwarekomponenten, die für die Ausführung auf Computergeräten konfiguriert sind, können auf einem computerlesbaren Medium wie einer CD, einer digitalen Videodisk, einem Flash-Laufwerk, einer Magnetplatte oder einem anderen materiellen Medium oder als digitaler Download bereitgestellt werden (und können ursprünglich gespeichert werden) in einem komprimierten oder installierbaren Format, das vor der Ausführung installiert, dekomprimiert oder entschlüsselt werden muss). Ein solcher Softwarecode kann teilweise oder vollständig auf einer Speichervorrichtung der ausführenden Rechenvorrichtung zur Ausführung durch die Rechenvorrichtung gespeichert werden. Softwareanweisungen können in Firmware wie ein EPROM eingebettet sein. Es versteht sich ferner, dass Hardwarekomponenten aus verbundenen Logikeinheiten wie Gates und Flip-Flops bestehen können und/oder aus programmierbaren Einheiten wie programmierbaren Gate-Arrays oder Prozessoren bestehen können.
-
Das Computersystem 700 kann die hier beschriebenen Techniken unter Verwendung einer kundenspezifischen fest verdrahteten Logik, eines oder mehrerer ASICs oder FPGAs, einer Firmware und/oder einer Programmlogik implementieren, die in Kombination mit dem Computersystem bewirkt oder programmiert, dass das Computersystem 700 eine Spezialmaschine ist. Gemäß einer Ausführungsform werden die hierin enthaltenen Techniken von dem Computersystem 700 als Reaktion auf den Prozessor 704 ausgeführt, der eine oder mehrere Sequenzen eines oder mehrerer im Hauptspeicher 706 enthaltener Befehle ausführt. Solche Anweisungen können von einem anderen Speichermedium, wie beispielsweise der Speichervorrichtung 710, in den Hauptspeicher 706 eingelesen werden. Die Ausführung der im Hauptspeicher 706 enthaltenen Befehlssequenzen bewirkt, dass die Prozessoren 704 die hier beschriebenen Prozessschritte ausführen. In alternativen Ausführungsformen können fest verdrahtete Schaltungen anstelle von oder in Kombination mit Softwareanweisungen verwendet werden.
-
Der Begriff „nicht vorübergehende Medien“ und ähnliche Begriffe, wie sie hier verwendet werden, beziehen sich auf alle Medien, die Daten und/oder Anweisungen speichern, die bewirken, dass eine Maschine auf eine bestimmte Weise arbeitet. Solche nichtflüchtigen Medien können nichtflüchtige Medien und/oder flüchtige Medien umfassen. Nichtflüchtige Medien umfassen beispielsweise optische oder magnetische Platten, wie beispielsweise die Speichervorrichtung 710. Flüchtige Medien umfassen einen dynamischen Speicher, wie beispielsweise den Hauptspeicher 706. Übliche Formen von nicht vorübergehenden Medien umfassen beispielsweise eine Diskette, eine flexible Platte, eine Festplatte, ein Solid-State-Laufwerk, ein Magnetband oder ein anderes magnetisches Datenspeichermedium, eine CD-ROM oder ein anderes optisches Datenspeichermedium. Jedes physische Medium mit Lochmustern, ein RAM, ein PROM und ein EPROM, ein FLASH-EPROM, ein NVRAM, ein beliebiger anderer Speicherchip oder eine andere Kassette sowie vernetzte Versionen derselben.
-
Nicht-vorübergehende Medien unterscheiden sich von Übertragungsmedien, können jedoch in Verbindung mit diesen verwendet werden. Übertragungsmedien sind an der Übertragung von Informationen zwischen nicht vorübergehenden Medien beteiligt. Zum Beispiel umfassen Übertragungsmedien Koaxialkabel, Kupferdraht und Glasfaser, einschließlich der Drähte, die den Bus 702 umfassen. Übertragungsmedien können auch die Form von akustischen oder Lichtwellen annehmen, wie sie beispielsweise während der Funkwellen- und Infrarot-Datenkommunikation erzeugt werden.
-
Das Computersystem 700 enthält auch eine Kommunikationsschnittstelle 718, die mit dem Bus 702 verbunden ist. Die Netzwerkschnittstelle 718 stellt eine bidirektionale Datenkommunikationskopplung mit einer oder mehreren Netzwerkverbindungen bereit, die mit einem oder mehreren lokalen Netzwerken verbunden sind. Beispielsweise kann die Kommunikationsschnittstelle 718 eine ISDN-Karte (Integrated Services Digital Network), ein Kabelmodem, ein Satellitenmodem oder ein Modem sein, um eine Datenkommunikationsverbindung zu einem entsprechenden Typ einer Telefonleitung bereitzustellen. Als ein anderes Beispiel kann die Netzwerkschnittstelle 718 eine LAN-Karte (Local Area Network) sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN (oder eine WAN-Komponente zur Kommunikation mit einem WAN) bereitzustellen. Drahtlose Verbindungen können ebenfalls implementiert werden. In einer solchen Implementierung sendet und empfängt die Netzwerkschnittstelle 718 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, die verschiedene Arten von Informationen darstellen.
-
Eine Netzwerkverbindung stellt normalerweise eine Datenkommunikation über ein oder mehrere Netzwerke zu anderen Datengeräten bereit. Beispielsweise kann eine Netzwerkverbindung eine Verbindung über ein lokales Netzwerk zu einem Host-Computer oder zu Datengeräten bereitstellen, die von einem Internetdienstanbieter (ISP) betrieben werden. Der ISP wiederum stellt Datenkommunikationsdienste über das weltweite Paketdatenkommunikationsnetz bereit, das heute allgemein als „Internet“ bezeichnet wird. Das lokale Netzwerk und das Internet verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung und über die Kommunikationsschnittstelle 718, die die digitalen Daten zum und vom Computersystem 700 übertragen, sind beispielhafte Formen von Übertragungsmedien.
-
Das Computersystem 700 kann Nachrichten senden und Daten, einschließlich Programmcode, über das Netzwerk, die Netzwerkverbindung und die Kommunikationsschnittstelle 718 empfangen. In dem Internet-Beispiel könnte ein Server einen angeforderten Code für ein Anwendungsprogramm über das Internet, den ISP, das lokale Netzwerk und die Kommunikationsschnittstelle 718 übertragen.
-
Der empfangene Code kann vom Prozessor 704 ausgeführt werden, wenn er empfangen und/oder in der Speichervorrichtung 710 oder einem anderen nichtflüchtigen Speicher zur späteren Ausführung gespeichert wird.
-
Jeder der in den vorhergehenden Abschnitten beschriebenen Prozesse, Verfahren und Algorithmen kann in Codekomponenten enthalten sein, die von einem oder mehreren Computersystemen oder Computerprozessoren, die Computerhardware umfassen, ausgeführt werden, und diese vollständig oder teilweise automatisieren. Das eine oder die mehreren Computersysteme oder Computerprozessoren können auch arbeiten, um die Leistung der relevanten Vorgänge in einer „Cloud-Computing“ -Umgebung oder als „Software as a Service“ (SaaS) zu unterstützen. Die Prozesse und Algorithmen können teilweise oder vollständig in anwendungsspezifischen Schaltungen implementiert sein. Die verschiedenen oben beschriebenen Merkmale und Verfahren können unabhängig voneinander verwendet oder auf verschiedene Weise kombiniert werden. Verschiedene Kombinationen und Unterkombinationen sollen in den Geltungsbereich dieser Offenbarung fallen, und bestimmte Verfahren oder Prozessblöcke können in einigen Implementierungen weggelassen werden. Die hier beschriebenen Verfahren und Prozesse sind auch nicht auf eine bestimmte Sequenz beschränkt, und die dazugehörigen Blöcke oder Zustände können in anderen Sequenzen ausgeführt werden, die geeignet sind, oder können parallel oder auf eine andere Weise durchgeführt werden. Blöcke oder Zustände können zu den offenbarten beispielhaften Ausführungsformen hinzugefügt oder daraus entfernt werden. Die Leistung bestimmter Vorgänge oder Prozesse kann auf Computersysteme oder Computerprozessoren verteilt werden, die sich nicht nur auf einem einzelnen Computer befinden, sondern auf mehreren Computern bereitgestellt werden.
-
Wie hierin verwendet, kann eine Schaltung unter Verwendung irgendeiner Form von Hardware, Software oder einer Kombination davon implementiert werden. Beispielsweise können ein oder mehrere Prozessoren, Controller, ASICs, PLAs, PALs, CPLDs, FPGAs, logische Komponenten, Softwareroutinen oder andere Mechanismen implementiert werden, um eine Schaltung zu bilden. Bei der Implementierung können die verschiedenen hier beschriebenen Schaltungen als diskrete Schaltungen implementiert werden, oder die beschriebenen Funktionen und Merkmale können teilweise oder insgesamt auf eine oder mehrere Schaltungen aufgeteilt werden. Obwohl verschiedene Merkmale oder Elemente der Funktionalität einzeln als separate Schaltkreise beschrieben oder beansprucht werden können, können diese Merkmale und Funktionen von einem oder mehreren gemeinsamen Schaltkreisen gemeinsam genutzt werden, und eine solche Beschreibung erfordert oder impliziert nicht, dass separate Schaltkreise erforderlich sind, um solche Merkmale oder Funktionen zu implementieren Funktionalität. Wenn eine Schaltung ganz oder teilweise unter Verwendung von Software implementiert wird, kann eine solche Software implementiert werden, um mit einem Computer- oder Verarbeitungssystem zu arbeiten, das in der Lage ist, die diesbezüglich beschriebenen Funktionen auszuführen, wie beispielsweise dem Computersystem 700.
-
Wie hierin verwendet, kann der Begriff „oder“ entweder in einem inklusiven oder einem exklusiven Sinne ausgelegt werden. Darüber hinaus darf die Beschreibung von Ressourcen, Operationen oder Strukturen im Singular nicht gelesen werden, um den Plural auszuschließen. Bedingte Sprache wie unter anderem „kann“, „könnte“, „könnte“ oder „kann“, sofern nicht ausdrücklich anders angegeben oder im verwendeten Kontext anderweitig verstanden, soll im Allgemeinen vermitteln, dass bestimmte Ausführungsformen Folgendes umfassen: während andere Ausführungsformen bestimmte Merkmale, Elemente und/oder Schritte nicht enthalten.
-
In diesem Dokument verwendete Begriffe und Ausdrücke sowie Variationen davon sollten, sofern nicht ausdrücklich anders angegeben, als offen und nicht als einschränkend ausgelegt werden. Adjektive wie „konventionell“, „traditionell“, „normal“, „Standard“, „bekannt“ und Begriffe mit ähnlicher Bedeutung sollten nicht so ausgelegt werden, dass sie den beschriebenen Artikel auf einen bestimmten Zeitraum oder auf einen Artikel beschränken, der ab einem verfügbar ist gegebene Zeit, sondern sollte gelesen werden, um konventionelle, traditionelle, normale oder Standardtechnologien zu umfassen, die jetzt oder zu irgendeinem Zeitpunkt in der Zukunft verfügbar oder bekannt sein können. Das Vorhandensein von erweiterten Wörtern und Phrasen wie „einem oder mehreren“, „zumindest“, „aber nicht beschränkt auf“ oder ähnlichen Phrasen in einigen Fällen bedeutet nicht, dass der engere Fall in Fällen beabsichtigt oder erforderlich ist, in denen solche verbreiternden Sätze können fehlen.