Kann Programmierung "mutieren"?

Kann sich die Programmierung einfacher Nanobots zufällig ändern, um einen ähnlichen Effekt wie Mutationen in der DNA zu erzielen? Diese Frage hat eine sehr ähnliche Idee wie ich wollte, obwohl die Nanobots in diesem Fall in der Lage sind, sich selbst zu aktualisieren: Nanobots Ecosystem, is it possible?

Für meine Geschichte frage ich mich, was dazu führen könnte, dass der selbstreplizierende Prozess für einige der Nanobots schief geht, und wie bei der Evolution werden einige dieser Änderungen nicht vorteilhaft sein, aber für andere werden und könnten sie zu immer komplexeren Robotern führen, vorausgesetzt genug Zeit.

Ist es möglich, dass die Programmierung zur Selbstreplikation zufällig unterschiedliche Ergebnisse erzeugen kann?

Irgendwie, wenn Ihre Bots einen "fehlerhaften" Speicher haben, können sich Fehler ansammeln und sie während der Selbstreplikation weitergeben.
Als Suchbegriff schlage ich "simulierte Evolution" vor. Beginnen Sie auch mit der Arbeit von Lawrence J. Fogel in den 1960er Jahren und suchen Sie nach seinen Nachkommen.
Genetische Algorithmen existieren und werden tatsächlich verwendet. Wer sagt, dass die fraglichen Nanobots solche Techniken nicht verwenden?
Danke für die Vorschläge alle :)
@AlexP Es gibt auch eine genetische Programmierung für GAs. Während GAs eine Lösung entwickeln, die einem Kriterium entspricht, entwickeln GPs einen Algorithmus, der eine bestimmte Lösung erzeugt.
Da es keine Möglichkeit gibt, Fehler beim Kopieren auszuschließen (sogar die Prüfsummenmaschine kann versagen), werden Sie irgendwann Mutationen bekommen. Dies ist tatsächlich ein großes Problem bei sich selbst replizierenden Maschinen. Kosmische Strahlung, Chemikalien, radioaktiver Zerfall eines Atoms hier und da, und es kann Probleme geben, wenn ein selbstreplizierender Nanobot weiter funktioniert.
Es ist wichtig zu erkennen, dass lebende Zellen Nanobots sind , und zwar sehr komplexe. Es gibt eine unrealistische Vorstellung von menschengemachten Nanobots, die „im Grunde normale Roboter, aber verkleinert“ sind, die winzige Leiterplatten haben und einzelne Moleküle mit Armen mit Allzweck-Endeffektoren manipulieren. Auf molekularer Ebene ist es sehr ineffizient zu versuchen, einzelne Moleküle auf diese Weise zu manipulieren, anstatt zu tun, was Zellen tun, und viele Komponenten herauszupumpen, die energetisch bevorzugt sind, um sich zu dem gewünschten Reaktionsprodukt zu kombinieren.
Philip K. Dicks Second Variety und der auf dieser Geschichte basierende Film Screamers basieren auf dieser Idee, obwohl die fraglichen Maschinen nicht im Nanomaßstab sind.
Das Buch „Diamond Age“ von Neil Stephenson behandelt ausführlich die allgegenwärtige Nanotechnologie sowie ein wenig die Schnittmenge von Nanotechnologie und genetischen Algorithmen. Es ist im Allgemeinen großartig und das Ende ist "meh", wie so viele seiner Bücher. Tolles Setting, tolle Charaktere, tolle Handlung, meh Ende.
Sie können nur mutieren, wenn Sie sie auf Mutation programmieren. Es wird nicht von alleine. Alle heutigen Lebewesen sind darauf programmiert, jedes Mal, wenn sie sich fortpflanzen, ein wenig zu mutieren. Wenn Sie erwartet haben, dass etwas Komplexes ohne Hilfe von selbst mutiert, werden Sie lange warten.
Da ein Programm über einen bestimmten Zeitraum hinweg wiederholt "gepflegt" wird, kann es sicherlich mutieren.
Schauen Sie sich vielleicht auch Core War an , um zu sehen, wie ein Programm in einer vereinfachten Umgebung andere und möglicherweise sich selbst verändern könnte.
@AaronRotenberg Es ist wichtig zu erkennen, dass lebende Zellen keine Maschinen sind. "Die organische Komplexität körperlicher Mechanismen unterscheidet sich qualitativ von der mechanischen Komplexität von Maschinen [Hervorhebung hinzugefügt]." evmed.asu.edu/blog/body-not-machine
Siehe auch phys.org/news/2016-01-machines.html zu grundlegenden Unterschieden zwischen Lebewesen und Maschinen.
@TylerS.Loeper Sie können mit Sicherheit mutieren, auch wenn sie nicht auf Mutation programmiert sind. Es muss keine Absicht sein. Immer wenn der Prozess versagen kann, sind Mutationen möglich. Mutationen sind nichts anderes als fehlerhafte Replikation. Wenn sie sich in einer feindlichen Umgebung replizieren, wird das passieren.
Lesen Sie den Blog von J.Pitrat - er starb im Oktober 1919. Siehe auch refpersys.org

Antworten (14)

Jeder, der Informatik im Allgemeinen und künstliche Intelligenz im Besonderen studiert hat, kennt eine Art Algorithmus namens

Genetischen Algorithmus

In der Informatik und im Operations Research ist ein genetischer Algorithmus (GA) eine vom Prozess der natürlichen Selektion inspirierte Metaheuristik, die zur größeren Klasse der evolutionären Algorithmen (EA) gehört. Genetische Algorithmen werden häufig verwendet, um qualitativ hochwertige Lösungen für Optimierungs- und Suchprobleme zu generieren, indem sie sich auf biologisch inspirierte Operatoren wie Mutation, Crossover und Selektion stützen. 1 John Holland führte 1960 genetische Algorithmen ein, die auf dem Konzept von Darwins Evolutionstheorie basierten; sein Schüler David E. Goldberg erweiterte GA 1989 weiter.

Dies eignet sich Genetik und Evolution bis zum Maximum an. Sehen Sie sich die Begriffe an, die in diesem Bereich verwendet werden.

In einem genetischen Algorithmus wird eine Population von Lösungskandidaten (genannt Individuen, Kreaturen oder Phänotypen) für ein Optimierungsproblem hin zu besseren Lösungen entwickelt. Jede Kandidatenlösung hat eine Reihe von Eigenschaften (ihre Chromosomen oder ihren Genotyp), die mutiert und verändert werden können; Traditionell werden Lösungen binär als Zeichenfolgen aus 0 und 1 dargestellt, es sind jedoch auch andere Codierungen möglich.

Die Evolution beginnt normalerweise mit einer Population zufällig generierter Individuen und ist ein iterativer Prozess, wobei die Population in jeder Iteration als Generation bezeichnet wird. In jeder Generation wird die Fitness jedes Individuums in der Bevölkerung bewertet; Die Fitness ist normalerweise der Wert der Zielfunktion im zu lösenden Optimierungsproblem. Die fitteren Individuen werden stochastisch aus der aktuellen Population ausgewählt, und das Genom jedes Individuums wird modifiziert (rekombiniert und möglicherweise zufällig mutiert), um eine neue Generation zu bilden. Die neue Generation von Lösungskandidaten wird dann in der nächsten Iteration des Algorithmus verwendet. Üblicherweise endet der Algorithmus, wenn entweder eine maximale Anzahl von Generationen produziert wurde oder ein zufriedenstellendes Fitnessniveau für die Population erreicht wurde.

Ein typischer genetischer Algorithmus erfordert:

  • eine genetische Repräsentation des Lösungsbereichs,
  • eine Fitnessfunktion zur Bewertung des Lösungsbereichs.

Wenn Ihre Nanobots also unter diesem Gesichtspunkt entwickelt wurden, entwickeln sie sich möglicherweise von selbst weiter.

Wenn Sie tief in genetische Algorithmen eintauchen, werden Sie sehen, dass sie seltsame Lösungen für häufige Probleme bieten ... Welche tendenziell die effizientesten Lösungen sind und auf die wir Menschen alleine kaum kommen würden. Zum Beispiel diese Antenne:

Entwickelte Antenne

Es erscheint im Wiki-Artikel namens Evolved Antenna und die Beschreibung für das Bild sagt Folgendes:

Die 2006 NASA ST5 Raumfahrzeugantenne. Diese komplizierte Form wurde von einem evolutionären Computerdesignprogramm gefunden, um das beste Strahlungsmuster zu erzeugen.

Wenn Ihre Nanobots also mit genetischen Algorithmen programmiert sind, könnten ihre Formen von Generation zu Generation nicht wiederzuerkennen sein. Wenn das Überleben die Fitnessfunktion ist, wird es sehr schwierig, mit ihnen umzugehen.

Das Problem dabei ist, dass genetische Algorithmen Mutationen verwenden, um Probleme zu lösen, die Programme, die diese Algorithmen ausführen, sich jedoch nicht ändern. Natürlich ist es möglich, sich selbst modifizierenden Code zu haben, also könnten die Designer das in en.wikipedia.org/wiki/Self-modifying_code einbauen
@jamesqf Ich denke nicht, dass das ein Problem ist. Biologische Organismen können massive Veränderungen in Form/Größe/Verhalten usw. durch Mutation des genetischen Codes zeigen, ohne die Ribosomen zu verändern, die die Umwandlung des genetischen Codes in Proteine ​​steuern. Sie können also die zugrunde liegenden Programme, die die genetischen Algorithmen ausführen, nur als „Firmware“ betrachten, die die Daten des genetischen Algorithmus in ähnlicher Weise als Änderungen im Design/Verhalten/usw. ausdrückt. der Nanobots.
@Penguino: Ich meinte wirklich, dass das Problem darin bestand, genetische Algorithmen als Beispiel zu verwenden. Wenn Sie so etwas in der Praxis verwenden – das heißt, den Code, der die Nanobots ausführt – würde der größte Teil des genetischen Teils von der Umgebung bereitgestellt.
Genetische Algorithmen können immer noch sehr überraschende Ergebnisse liefern, die möglicherweise weit über die erwarteten Grenzen des Experiments hinausgehen, insbesondere in komplexeren Systemen mit realer Entropie. Ich erinnere mich, irgendwo über sich entwickelnde Schaltungen gelesen zu haben, die bei der Übertragung auf ein neues Gerät nicht funktionierten - es stellte sich heraus, dass es dem Algorithmus gelungen war, einen Herstellungsfehler in dem FPGA auszunutzen, den sie für das Experiment verwendet hatten, der nicht vorhanden war andere Einheiten des gleichen Typs.
Evolutionäres Design unterscheidet sich stark von Code- Mutation . Das gezeigte Beispiel ist ein fester Algorithmus, der eine iterative Optimierung durchführen kann. Interessant wird dies nicht in diesen Anwendungen, sondern wenn sich der Code iterativ selbst modifiziert . Der selbstreferentielle Teil davon ist ein kritischer Aspekt.
@SebastianLenartowicz Siehe auch die vielen Variationen zu diesem Thema: gwern.net/Tanks
@J...: Ja, das wollte ich sagen, aber du hast es viel besser gesagt :-)
@J Das gegebene Beispiel ja, weil es Hardware generiert. Aber Sie können den genetischen Algorithmus in Software anwenden – effektiv die Software umschreiben. Der genetische Algorithmus selbst muss sich nicht weiterentwickeln. So wie sich unsere eigene DNA-Polymerase (das Enzym, das die DNA kopiert) in Milliarden von Jahren nicht viel entwickelt hat, heißt das nicht, dass wir uns nicht über einzellige Organismen hinaus entwickelt haben
@jamesqf, ich sehe das Problem nicht. Sie müssen mit einem genetischen Algorithmus oder irgendetwas, das an seiner Stelle funktioniert, beginnen, um die natürliche Selektion nachzuahmen. Irgendwann werden die Maschinen intelligent genug, um ihren eigenen Code zu modifizieren und einen besseren genetischen Algorithmus zu erstellen, der eine schnellere Evolution ermöglicht, oder entscheiden, dass sie ihn nicht mehr brauchen, und beginnen, ihren eigenen Code zu schreiben, wenn sie das Gefühl haben, dass dies erforderlich ist ändern. Ihre Antwort lautet: Die Maschinen schreiben sich selbst um, weil sie sich zuerst so intelligent entwickelt haben, dass sie dies tun können. Aber diese anfängliche Entwicklung braucht Regeln, weil eine zufällige Code-Mutation nicht nützlich ist.

Ja, wenn sie dafür ausgelegt sind. Evolutionärer Fortschritt ist der springende Punkt bei genetischen Algorithmen. Ihre Nanobots können als physische Instanzen dieser Art von Dingen entworfen werden.

Es gibt ein reales Projekt namens subCULTron, das ein Unterwasserroboter-Ökosystem aufbaut, mit der Absicht, dass die Roboter in verschiedenen Bereichen ihre eigenen Kulturen als Reaktion auf die Umgebung entwickeln. Ihre Testzone befindet sich in der Lagune von Venedig.

Sehr cool, kannte dieses Projekt noch nicht.
Warum klingt das wie das Setup für einen Science-Fiction-Horrorfilm?
weil es im Grunde die Handlung eines Romans von Michael Crichton ist
@Ruadhan Ich weiß nicht, ob Sie das scherzhaft gesagt haben, aber das reimt sich auf Michael Crichtons Westworld (na ja ... nicht das, was er genau geschrieben hat, aber was HBO in der TV-Show hinzugefügt hat).
Ich dachte selbst an Prey

Ich weiß nicht, wie alt Sie sind und ob Sie sich auf das beziehen können, was ich gleich erzählen werde, aber ich bin alt genug, um das Wachstum des Internets und die Verbreitung von Computern miterlebt zu haben.

In den Tagen der Disketten (und noch früher bei den 8-Zoll-Disketten in „Pizza“-Größe) war es üblich, dass während des Schreibvorgangs oder während der Speicherung der Diskette ein Fehler auf der Diskette auftrat, der den Inhalt der dort gespeicherten Dateien beschädigte .

Diese Fehler sind die Mutationen, nach denen Sie suchen: Die meisten von ihnen machen die Datei unbrauchbar, aber hin und wieder macht die Mutation Sinn.

Ich erinnere mich an Disketten, aber Disks in Pizzagröße sind mir neu, lol, macht Sinn, also wird die erste Runde fehlerhafter Bots gleich aussehen, aber ihre Replikate werden mutiert. Danke.
Ah, warte, ich weiß, dass Vinyls nicht daran gedacht hatten, sie für andere Zwecke als Musik zu verwenden.
Ich meine ... moderne Fehlerkorrekturalgorithmen reduzieren die Wahrscheinlichkeit, dass dies geschieht, auf nahezu Null. Aber wenn Sie Billionen von Nanobots haben, die alle ihr Ding machen, dann könnte nahe Null ausreichen.
Ich erinnere mich an 24-Zoll-IBM-Festplattenplatten, großartig zum Servieren von Pizza – schnuppern, ich bin alt!
Nanobots sind klein (Quelle erforderlich), daher ist möglicherweise nicht genügend Platz für eine ordnungsgemäße Fehlerkorrektur vorhanden
Die Sache ist die, dass Computer darauf ausgelegt sind, solche Fehler zu erkennen und zu korrigieren (siehe ECC-RAM). Oder erkennen Sie sie und werfen Sie sie weg oder halten Sie einfach in einem fehlerhaften Zustand an. Das Kopieren von DNA hat einige Fehlererkennung und -korrektur, aber es ist offensichtlich nicht perfekt. Sie müssten das Gegenteil von dem tun, was die meisten Designer tun: die Fehlerprüfung abschaffen und die Fehler annehmen und sie dann an die nächste Generation weitergeben lassen.
@Omni-King: Anscheinend sind Pizzas seit diesen Tagen gewachsen, während Festplatten geschrumpft sind - und im Fall von Disketten verschwunden sind.
@DavidCary , Geez, diese Dinger sind riesig, lol, wir sind heutzutage wie Götter mit unseren winzigen Speichersticks.
Abgesehen davon, dass das Erzeugen eines nützlichen Merkmals aus diesem zufälligen und sehr gelegentlichen Ereignis länger dauern kann als das verbleibende Leben des Universums (falls es überhaupt sterblich ist). Ein Filter ist immer vorhanden: die Umgebung, aber Sie können sich nicht allein auf die Beschädigung von Daten verlassen, um Verhaltensänderungen zu fördern.

Ja. Zufällige Bit-Flips treten häufig in realen Computersystemen auf, auch heute noch. Normalerweise sind sie schlecht.

In allen Computerspeichern besteht immer eine prozentuale Wahrscheinlichkeit, dass jede Speicherzelle von 0 auf 1 oder 1 auf 0 wechselt.
a) Die Wahrscheinlichkeit, dass speicherbedingte Bit-Flips auftreten, steigt exponentiell mit der
Temperatur Strahlenbelastung. Auch auf der Erde gibt es immer etwas Strahlung. Im Weltraum viel mehr. Tatsächlich ist es in Weltraumumgebungen so üblich, dass digitale Logik oft redundant ausgelegt ist, um diese Fehler zu erkennen und (wenn möglich) zu korrigieren.

Die Wahrscheinlichkeit, dass lange Bitfolgen zufällig in nützliche Sequenzen umgewandelt werden, ist astronomisch gering, also rechnen Sie nicht damit. Aber wenn der Code so gestaltet ist, dass er in eine Reihe nützlicher Funktionen zerlegt wird, die sich gegenseitig aufrufen, dann können Sie schon bei einem Bit-Flip ein interessantes Verhalten erzielen.

Beispielsweise könnte ein Bit-Flip in einem Sprungbefehl dazu führen, dass große Sequenzen nützlichen Codes an einem anderen Punkt als ursprünglich beabsichtigt ausgeführt werden.

Hier ist ein Beispiel für eine Folge von Maschinencodes, die zu einer plausiblen vorteilhaften Mutation führt.
Der Nano-Bot enthält eine Hauptcodeschleife, die sich zufällig in den Zeilen 1-500 befindet.
Auf Zeile 501 gibt es eine Routine (bei Speicheradresse 501), die auf Beschädigung prüft und Reparaturen einleitet.
Angenommen, die Reparaturroutine wurde normalerweise einmal pro Tag aufgerufen (was möglicherweise in Ordnung war).
Nehmen wir nun an, dass die Nano-Bots jetzt ständig Strahlung ausgesetzt sind, die meisten von ihnen viele Bit-Flips erleben und viele nicht mehr funktionieren.
Nehmen wir an, die Strahlung bewirkt, dass das vierte Bit in Zeile 500 von 0 auf 1 wechselt.
Anstatt also zum Anfang der Hauptschleife zurückzuspringen, springt der Code jetzt einfach weiter zu Zeile 501.
Dies würde bewirken, dass die Fehlerprüfroutine jede Iteration der Hauptschleife statt einmal pro Tag ausführt.
Dadurch ist dieser Nano-Bot in der Lage, die Strahlung zu überleben.

MAIN_LOOP:
1: 0011 0101 //einige Sachen
2: 1111 0001 //einige Sachen
3: 1101 0001 //einige Sachen
4: 1111 0111 //einige Sachen
....
500: 1110 0000 //Anweisung, die zurück zur Hauptleitung springt Schleife

PERFORM_INTERNAL_REPAIRS:
501: 1100 1001
502: 1110 1011
...
600: 1110 0000 //Anweisung, die zurück zur Hauptschleife springt

Danke, das ist eine gute Beschreibung dafür, wie sie sich ohne Lernsoftware ändern könnten.
Hinweiscode kann auch auf andere Weise mutieren als genetischer Code, indem er während des Kopierens zerhackt und neu angeordnet wird. Welches tendenziell für die "interessantesten" Mutationen verantwortlich ist.
Mutationen reichen für die Evolution nicht aus. Sie sind nicht einmal die effizienteste Art, Variationen zu erzeugen: Rekombination (zwischen Individuen/Codes) ist es. Um Evolution auszulösen, müssen Sie Wettbewerb durchsetzen.

Da moderne Software eine Fehlerprüfung verwenden würde, würde ich sagen, dass keine zufällige Mutation von selbst auftreten würde. Ein einzelnes Bit, das aus irgendeinem Grund umgedreht wird, kann zu fatalen Ergebnissen führen oder einer Maschine / Software im Grunde nichts antun. „Physische“ Maßnahmen wie ECC-Speicher und Softwarelösungen wie Prüfsummen sind alltäglich.

Ich sehe hier zwei Möglichkeiten:

  1. Sie sind darauf ausgelegt, sich weiterzuentwickeln.

Ich bin kein Experte für KI-Technologie, daher kenne ich die Einschränkungen von KI nicht, aber da wir noch nicht einmal nahe daran sind, sich entwickelnde Nanobots mit moderner Technologie zu entwickeln, und die KI-Technologie noch in den Kinderschuhen steckt, wäre es nicht zu weit hergeholt, das einfach zu sagen Ihre Nanobots verwenden KI, um neue "evolutionäre" Pfade zu bestimmen.

  1. Nanobots müssen gegen andere Nanobots kämpfen

In einem ausgewachsenen Kampf gegen andere Nanobots könnte ich mir vorstellen, dass sich einige Fehler häufen. Nanobots hätten wahrscheinlich Gründe, ihre Kampfstrategie auf physischer Ebene zu ändern (was sie dazu auffordert, sich zu ändern), aber sie würden sich auch auf Softwareebene engagieren und versuchen, sich gegenseitig zu hacken. Mit einer begrenzten Zeit (Sicherheitsmaßnahmen brauchen einige Zeit), einem ständigen physischen und Software-Sperrfeuer von Feinden, die versuchen, jede Schwäche auszunutzen, und bestimmten zufälligen Ereignissen (Strahlung, sich schnell ändernde Magnetfelder usw.) konnte ich definitiv sehen, dass die Nanobots einer DNA-ähnlichen Behandlung unterzogen wurden im Laufe der Zeit ändern.

Interessante Idee zum Hacken von Software, ich dachte an Bots, die sich von anderen wegen ihrer Materialien und Energie ernähren, aber das ist auch ein wahrscheinliches Ergebnis. Danke
1. They are designed to evolve.siehe Homoikonizität "Code ist Daten und Daten ist Code" - deshalb wurden die ersten Versuche zu starker KI auf LISP durchgeführt. 2. Nanobots have to fight other nanobotsSiehe Kernkrieg . Meine Güte, bin ich alt geworden oder was?
Hacking ist nicht der einzige Angriff auf Softwareebene. Ein wesentlich einfacher zu entwickelnder Ansatz ist ein Denial-of-Service (DOS)-Angriff, bei dem Sie so viele Müllinformationen an ein Opfer senden, dass es möglicherweise nicht alle verarbeiten kann, was dazu führt, dass es auch den größten Teil der Realität verpasst , wichtige Informationen (z. B. von Verbündeten oder anderen Teilen von sich selbst, die über dieselbe Netzwerkinfrastruktur verbunden sind). Dies lähmt nicht nur seine Kommunikationsfähigkeit, sondern verbraucht auch enorm viel Zeit, Energie und Gedächtnis, um zu versuchen, die falschen Nachrichten zu interpretieren.

Möglich, ja. Aber wie wahrscheinlich es ist, hängt von verschiedenen Bedingungen ab. Und diese Bedingungen hängen davon ab, wie Sie die Frage der Entwicklung von Nanobots betrachten.

Insbesondere haben Sie drei offensichtliche Blickwinkel, um darüber nachzudenken. Sie können erwägen, einzelne Nanobots neue Eigenschaften zu erwerben. Sie können sich die Wolke von Nanobots vorstellen, die neue aufkommende Eigenschaften als Gruppe erwerben. Oder Sie können die gesamte Umgebung der Nanobots betrachten, die die gesamte unterstützende Infrastruktur und sogar die menschlichen Programmierer umfasst.

Auf Nanobot-Ebene ist dies nur möglich, wenn die Nanobots darauf ausgelegt sind, sich anzupassen. Einfache Selbstreplikation und Selbstreparatur reichen nicht aus. Die zur Codierung der Nanobots verwendete Methode muss ausreichend flexibel und modular sein, um die potenziellen neuen Eigenschaften tatsächlich zu ermöglichen.

Dies wäre tatsächlich möglich. DNA, die verwendet wird, um lebende Zellen zu kodieren, gibt uns eine Vorlage, die wir verwenden können. Der erste wichtige Faktor ist, dass DNA durch Redundanz fehlertolerant ist. Dadurch können sich Fehler ansammeln, ohne die Zelle zu töten, bis sie schließlich als etwas Funktionelles interpretiert werden können. Der zweite Faktor ist, dass das System die Flexibilität haben muss, zufälligen Müll als gültige Programmierung zu interpretieren, da sonst der entstehende Code einfach ignoriert oder gelöscht wird.

Dies ist tatsächlich eine reale Möglichkeit. Es würde uns ermöglichen, die Anpassungsfähigkeit von Bakterien in der realen Welt mit ihrer Fähigkeit zu replizieren, sich zu entwickeln und die "Codemodule" für entstehende Anpassungen auszutauschen.

Das halte ich nach wie vor für unwahrscheinlich. Wir haben eher Angst vor der Möglichkeit, dass jemand die eigentlichen Bakterien hackt, als künstliche zu schaffen, die von Terroristen oder Spionen gehackt werden könnten. Ich würde also erwarten, dass die Nanobot-Codierung ziemlich statisch, streng validiert und authentifiziert ist und darauf ausgelegt ist, Fehler zu beheben, indem der Code von einer gültigen Kopie neu installiert wird.

Auf der „Cloud“-Ebene scheint dies wahrscheinlicher. Wir würden vernünftigerweise wollen, dass unsere Nanobots eine gewisse Anpassungsfähigkeit an sich ändernde Umgebungen haben, und ihnen eine entstehende soziale Anpassungsfähigkeit zu geben, ähnlich der, die soziale Insekten haben, wäre eine ziemlich vernünftige Wahl. Wir könnten immer noch strenge Sicherheitsbeschränkungen über die feste Codierung der einzelnen Nanobots festlegen, aber die Fähigkeit der Cloud als Gruppe, ihre Zusammenarbeit anzupassen, würde uns den Aufwand ersparen, zu versuchen, alle seltsamen Eckfälle vorherzusagen und zu codieren.

Man könnte argumentieren, dass dies sicherer wäre als ein festeres Codierungsschema, das anfällig für unvorhersehbare und potenziell katastrophale Fehler wäre, wenn die von den Entwicklern erwarteten Designparameter nicht erfüllt werden.

Trotzdem würde ich immer noch erwarten, dass die Leute es vorziehen, den traditionellen Ansatz des Designs der Nanobots zu verwenden, um auf sichere Weise zu versagen, wenn Designparameter nicht erfüllt werden.

Auf der Umgebungsebene findet bereits Evolution durch Akkumulation zufälliger Fehler statt. Fehler als „unbeabsichtigte Funktionen“ zu bezeichnen, ist nicht nur ein Witz. Verhalten, das durch einen Codierungsfehler verursacht wird, ist genauso ein Merkmal des Systems wie das Zeug, für das Sie codiert haben.

Es ist viel weniger wahrscheinlich nützlich als das tatsächliche Design und wird normalerweise einfach behoben. Aber gelegentlich ist das Verhalten nützlich oder nahe genug daran, dass es dazu führt, dass eine neue Funktion basierend auf dem Fehler codiert wird.

Dies ist sehr ähnlich, wie angehäufte Fehler zu neuen Merkmalen in der biologischen Evolution führen können.

Im Grunde ist dies nur ein Spezialfall der normalen Schleife, die in der agilen Programmierung verwendet wird. Und in der Tat wird die agile Programmierung mit Feedback zu „unbeabsichtigten Features“ genauso gut umgehen wie mit dem unerwarteten Feedback zu entworfenen Features.

Nett, danke. die Cloud- oder Hive-Evolution ist besonders interessant. Dies könnte bei der Entwicklung komplexer Roboter drastisch Zeit sparen.

Andere Leute haben genetische Algos erwähnt, also werde ich auf ein weiteres ähnliches Beispiel eingehen und erklären, warum sich entwickelnde Programme in der Computervision so nützlich waren.

Damals wollte die US-Post mit der Automatisierung der Postsortierung beginnen. Dazu müssen Sie natürlich in der Lage sein, Computer Nummern erkennen zu lassen. Das klingt vielleicht nicht allzu schwer, sicherlich viel einfacher als zu erkennen, ob auf einem Bild eine Katze zu sehen ist oder nicht, aber es gibt immer noch ein Problem: Menschen schreiben Zahlen auf VIELE unterschiedliche Arten.

Also gingen die Statistik-/Comp-Sci-Leute das Problem mit den Standardalgos des Tages an -- Random Forest, multinomiale Regression usw. Diese Art von Algos war anständig, etwa 60-70% genau, was immer noch eine sehr gute Genauigkeit ist, wenn man das zufällige Raten berücksichtigt Hätten Sie ungefähr 10% genau sein müssen. Aber sie alle hatten immer noch ein Problem: Sie müssen jemanden die Variablen programmieren lassen, die Sie verwenden, um die Vermutung anzustellen. Es gab also Leute, die sich Konzepte einfallen ließen wie „wie viele Kanten“, „gibt es eine gekrümmte Linie“ und so weiter. Dies bringt Sie aufgrund des zuvor besprochenen Problems nur so weit.

Die Forscher versuchten viele Ansätze und erkannten schließlich etwas – was wäre, wenn der Algorithmus seine eigene Variable programmieren könnte? Und das ist der Grund, warum die Popularität neuronaler Netze sprunghaft angestiegen ist (auch im Laufe der Zeit wurden die Rechenressourcen billig genug, um sie tatsächlich zu einer Option zu machen): Bei neuronalen Netzen programmiert sich der Algo teilweise selbst! Das heißt, anstatt von Menschen entworfene Variablen zu verwenden, entwirft es seine eigenen Variablen basierend auf den Intensitäten jedes Pixels in dem Bild, das es betrachtet. Natürlich ist es etwas komplizierter, aber dieser Ansatz führte zu einer Genauigkeit von > 95% und zu dem Punkt, an dem sie bei der Nummern-ID besser sind als Menschen.

Dieses Konzept ist weit über eine einfache Nummern-ID hinaus erweiterbar, es ist auch, wie autonome Autos fahren lernen. Niemand sitzt da und programmiert das Auto, um dies zu tun, wenn das passiert, es bringt sich selbst bei, basierend auf Beispielen sowohl aus dem realen Fahren als auch aus Simulationsdaten, die aus Videospielen stammen.

EDIT: Tatsächlich ist ihre Funktionsweise oft überhaupt nicht offensichtlich, bis zu dem Punkt, an dem sie oft als "Black Boxes" bezeichnet werden. Herauszufinden, warum ein NN eine bestimmte Entscheidung trifft, ist ein nicht trivialer, langwieriger Prozess.

Ich werde ein paar Punkte zu ungeplanten Mutationen ansprechen.

"Kosmische Strahlung"

Dabei handelt es sich um gefürchtete* Strahlung, die von der Sonne oder anderswo kommt und gelegentlich in einigen Computerspeichern ein wenig kippt. Aber es ist ein Sammelbegriff für Bit-Flips, die aufgrund von Stromschwankungen, Staub, Hardwarefehlern, radioaktivem Zerfall und so weiter auftreten.

* von großen IT-Infrastrukturmitarbeitern

Mechanische Kräfte

Eine Mikrobe oder ein zufälliges Molekül, vielleicht ein von einem anderen Nanobot abgebrochenes Fragment, könnte der Replikationshardware im Weg stehen und das physikalische Ergebnis verändern. Dies könnte zu einer Verformung oder einem Hybrid oder so führen. Insbesondere wenn die Replikationshardware des neuen Bots ungewöhnlich ist, wird eine ganze Reihe veränderter Bots erstellt.

Außerdem müssen die Bots Material aus ihrer Umgebung ernten, und wenn etwas wie Kupfer aussieht , aber Spuren von Silber aufweist, funktioniert es möglicherweise anders.

Billionen von Bots

Sie sind winzig, sie replizieren, also werden, wenn es genug von ihnen gibt, Bits umgedreht und nicht standardisierte Repliken ständig irgendwo auf der Erde erstellt.

Können Bit-Flips nicht erkannt werden?

Theoretisch ja, aber praktisch nicht.

Ein Bot könnte eine Technik verwenden, um Änderungen am Code zu erkennen, und sich dann selbst deaktivieren, wenn sie erkannt werden. Der Bit-Flip könnte jedoch in den Prüf- oder Deaktivierungsroutinen auftreten ! Somit würde sich der Bot nicht selbst deaktivieren. Dies könnte in Kombination mit einem weiteren Flip an anderer Stelle zu einer Verhaltensänderung führen.

Ja, der Bot könnte über ECC-RAM mit integrierten Prüfungen verfügen. Allerdings könnten sich mehrere Flips gleichzeitig gegenseitig aufheben. Oder ein Bit-Flip könnte Daten/Code passieren, wenn er vom RAM zur Ausführungseinheit wandert.

Außerdem müssen Bots so klein sein und so wenig Energie wie möglich verbrauchen, sodass sie es sich wahrscheinlich nicht leisten können, viel Code oder Hardware für die Fehlererkennung beiseite zu legen.

gute Vorschläge, danke, versehentliches Material im Replikationsprozess ist auch eine interessante Idee.
Beachten Sie, dass die Wahrscheinlichkeit eines unentdeckten Bit-Flip exponentiell mit der Menge an Redundanz abnimmt. Wenn Ihre Wahrscheinlichkeit für einen Bit-Flip beispielsweise 10E-12 pro Sekunde beträgt und Sie dreifache Redundanz hinzufügen, sinkt die Wahrscheinlichkeit eines unentdeckten Flips auf 10E-36.

"Selbstbewusste" neuronale Netze

Ich nehme an, Ihre Nano-Bots sind mit vielen neuronalen Netzwerken ausgestattet, die für verschiedene Operationen bestimmt sind. Es gibt einen speziellen Satz neuronaler Netze, die alle neuronalen Netze gemeinsam überwachen und verbessern.

Ein typisches neuronales Netzwerk hat Eingänge, die mit einigen externen Sensoren verbunden sind, und Ausgänge, die einen Aktuator steuern. Diese "bewussten" neuronalen Netze verbessern und verändern die Form und Struktur der neuronalen Netze, die einen Nano-Bot betreiben.

In der Natur tritt Mutation auf, wenn Sie Informationen duplizieren. Bei uns passiert das, wenn DNA falsch kopiert wird.

Für Ihre Nanobots, DNA=Programm. Wenn sie sich selbst replizieren (asexuelle Reproduktion), könnten Fälle auftreten, in denen das Programm, das auf die neue Entität kopiert wird, eine einzelne oder mehrere 0 in eine 1 umgewandelt hat. Dies kann durch viele Dinge verursacht werden: kosmische Strahlung, lokale Funkstörungen usw...

In den meisten Fällen wäre es entweder:

  • führen zu keiner größeren Änderung und tun effektiv nichts

  • zu einer völlig dysfunktionalen neuen Entität führen

Aber in seltenen Fällen würde es die neue Entität tatsächlich "verbessern".

Wenn Sie möchten, dass Ihr Nanobot IMMER derselbe bleibt, dann sollten Sie eine Fehlerkorrekturmethode haben, bei der ein Nachkomme vom Elternteil auf Konformität überprüft wird. Jedoch hat sogar dieser Prozess eine Wahrscheinlichkeit von > 0 %, einen Fehler durchzulassen, weil der Elternteil aufgrund der oben erwähnten Interferenz einen Fehler übersehen könnte.

Sie könnten das abmildern, indem Sie N Eltern einen neuen Nachwuchs untersuchen lassen. Die Wahrscheinlichkeit wäre immer noch >0%, aber so gering, dass man sie als vernachlässigbar betrachten könnte.

Meine Seite der Geschichte zu anderen Antworten :

Genetische Algorithmen modifizieren normalerweise eine Reihe von Einstellungen/Variablen, die das Verhalten steuern, aber der Code, der ausgeführt wird, ist technisch derselbe und trifft nur unterschiedliche Entscheidungen (aber er stellt dieselben Fragen, führt alle Aufgaben auf dieselbe Weise aus, nur in a andere Reihenfolge oder auf einem anderen Datenelement). Das Programm ist nicht per se mutiert, es sucht nur nach einem besseren Weg, wozu es programmiert ist. Beachten Sie, dass dies semi-zufällig und iterativ ist: Das Programm erstellt eine Reihe von Instanzen mit Mutationen, sieht, welche besser funktionieren, verwirft die anderen, wiederholt diese und macht so weiter. Quelle: Computer Engineering integrierter MSc, genetische Algorithmen werden in einem Modul behandelt

Zufällige Bit-Flips , auch bekannt als Single Event Upsets : Wie bereits erwähnt, geschieht dies hauptsächlich durch kosmische Strahlung, manchmal durch reines Pech (und bei Nanobots können Sie dies sogar auf Quantenzufälligkeit zurückführen, aber ich empfehle Ihnen dies nicht, es sei denn, Sie haben ein rudimentäres Verständnis zu einführenden Konzepten der Quantenmechanik und Grundkenntnissen der digitalen Elektronik, oder Sie könnten etwas sagen, das mich den ganzen Weg zurück mit den Augen verdrehen wird). Ich empfehle, die anderen Sachen im ersten Absatz des Wikipedia-Artikels nachzuschlagen, ich finde es ziemlich faszinierend, wie viele Möglichkeiten Hardware ausfallen kann. Dies kann übrigens auch Höhenflugzeuge betreffen. Wie von enttäuschend wenigen erwähnt, gibt es Techniken, um dies zu mildern:

  • Triple Modular Redundancy ist der heutige Standard für Weltraumsysteme, um es zu täuschen, müssen Sie den Strahl auf zwei der drei Systeme mit dem gleichen Bit ausrichten, Sie können sogar dies vermeiden, wenn Sie tiefer gehen, das Space Shuttle hatte 5 Computer, die liefen dieselben Operationen, von denen 4 eine Implementierung der Software und eine andere eine andere ausführten, so dass sogar Implementierungsprobleme auftauchten (natürlich war die Implementierung kein Problem, da alles getestet wurde, was Menschen in den Weltraum flog). In Anbetracht der Größe der heutigen Mikroprozessoren, ganz zu schweigen von der Technologie, die in spezialisierteren Anwendungen wie FPGA oder RFID verwendet wird, können Sie wahrscheinlich so viele Systeme auf einen Nanobot packen, wenn Sie weit genug in der Zukunft sind.

  • Fehlererkennung und -korrektur (EDAC) / Vorwärtsfehlerkorrektur(FEC): Dies ist auf CDs implementiert und ist der Grund, warum sie immer noch abgespielt werden, wenn sie einen Kratzer haben (allerdings nicht viel mehr als einen, aber Sie müssen nur ein oder zwei "Kratzer" am Nanobot erkennen Erinnerung nacheinander, dann korrigierst du sie). Es gibt Codierungen, die eine Handvoll zusätzlicher Bits speichern, diese Bits werden basierend auf Ihren gespeicherten Daten berechnet, und wenn entweder die Daten oder eines der Bits geändert werden, stimmen sie nicht überein. Das Geniale daran ist, dass sie ein "Syndrom" erzeugen, das auf das Schlechte hinweist und Sie es korrigieren können. Dies kann auch nach oben skaliert werden, um mehr als einen Fehler pro Datenblock zu finden, obwohl ich glaube, dass wir in der erdrückenden Mehrheit der Fälle bis zu zwei Fehler korrigieren und bis zu drei für jeden Datenblock erkennen. Weitere Einzelheiten finden Sie unter Hamming-Codefür eine einfache, die 8 Paritätsbits pro 255 Datenbits verwenden kann, um einen Fehler zu korrigieren oder zwei Fehler zu erkennen (96,9 % der Daten sind Ihre Originaldaten, dies ist sehr wenig Overhead).

Der Punkt ist, dass wir das nicht schon vor Jahrzehnten überwunden haben, sondern heute in sehr trivialen Anwendungen eingesetzt werden. Schlagen Sie einen der Begriffe auf Wikipedia nach, aber Computerphile auf YouTube hat sehr anfängerfreundliche Erklärungen. Quellen: vorgenannter iMSc, laufender MSc in Space Engineering.

Mein eigener Beitrag :

Selbstmodifizierender Code: Es gibt Programme, die ihre ausführbaren Dateien tatsächlich modifizieren (na ja, der sicherste Ansatz besteht darin, eine Kopie von sich selbst zu erstellen und diese stattdessen zu ändern und dann auszuführen). Dies ist wirklich tiefes Wasser für Programmierer, da es eine völlig neue Ebene der Einsicht in Ihr Ziel sowie in die Umgebung erfordert, in der die Software ausgeführt wird ganz neues Niveau (z. B. in Star Trek: TNG iirc lernte ein 7-Klässler Kalkül, ich erinnere mich, dass ich es in der 11. oder 12. Klasse gelernt habe, also ist es denkbar, dass Ihr durchschnittlicher Naturwissenschaftsstudent fortgeschrittene Themen wie Fourier-Transformationen usw. In Ihrer Gesellschaft mag es sein, dass moderne Programmierung absolut alltäglich ist, ausgebildete Programmierer Assembler schreiben können und Experten mit der heutigen Zeit vertraut sind. s Deep End of Programming) oder dass im Laufe der vielen Jahrzehnte Tools entwickelt wurden, die es einfach machen (also vermeiden Sie es, ins Detail zu gehen oder erwähnen Sie es). Auch hier gibt es einen Wikipedia-Artikel. Übrigens wird dies manchmal in Computerviren verwendet, damit sich der Virus von dem unterscheidet, wonach das Antivirenprogramm möglicherweise sucht, wodurch die Lebensdauer von Viren verlängert wird. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich die ganze Zeit mit einem bestimmten Ziel im Hinterkopf verändern. Es wurden Tools entwickelt, die es einfach machen (vermeiden Sie es also, ins Detail zu gehen, oder erwähnen Sie es). Auch hier gibt es einen Wikipedia-Artikel. Übrigens wird dies manchmal in Computerviren verwendet, damit sich der Virus von dem unterscheidet, wonach das Antivirenprogramm möglicherweise sucht, wodurch die Lebensdauer von Viren verlängert wird. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich die ganze Zeit mit einem bestimmten Ziel im Hinterkopf verändern. Es wurden Tools entwickelt, die es einfach machen (vermeiden Sie es also, ins Detail zu gehen, oder erwähnen Sie es). Auch hier gibt es einen Wikipedia-Artikel. Übrigens wird dies manchmal in Computerviren verwendet, damit sich der Virus von dem unterscheidet, wonach das Antivirenprogramm möglicherweise sucht, wodurch die Lebensdauer von Viren verlängert wird. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich ständig mit einem bestimmten Ziel im Auge ändern. ein Wikipedia-Artikel. Übrigens wird dies manchmal in Computerviren verwendet, damit sich der Virus von dem unterscheidet, wonach das Antivirenprogramm möglicherweise sucht, wodurch die Lebensdauer von Viren verlängert wird. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich die ganze Zeit mit einem bestimmten Ziel im Hinterkopf verändern. ein Wikipedia-Artikel. Übrigens wird dies manchmal in Computerviren verwendet, damit sich der Virus von dem unterscheidet, wonach das Antivirenprogramm möglicherweise sucht, wodurch die Lebensdauer von Viren verlängert wird. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich ständig mit einem bestimmten Ziel im Auge ändern. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich ständig mit einem bestimmten Ziel im Auge ändern. Ironischerweise passiert das auch, wenn biologische Viren mutieren, einschließlich der gewöhnlichen Grippe (weshalb man ab und zu eine neue Grippeimpfung braucht), und bei den meisten modernen Epidemien ist es die Möglichkeit einer tödlichen Mutation, vor der wir uns fürchten, nicht das Virus, wie es ist. Beachten Sie, dass dies bei biologischen Viren einem genetischen Algorithmus nahe kommt, es ist definitiv nicht selbstmodifizierend, in diesem Fall würde sich das Virus absichtlich ständig mit einem bestimmten Ziel im Auge ändern.

Bitte beachten Sie, dass jeder möglicherweise auftretende Begriff von "Selbstbewusstsein" nur bedeutet, dass der Code tatsächlich so konzipiert ist, dass er überprüft, ob er seine Funktionalität nicht beeinträchtigt, wenn er Änderungen vornimmt. Es ist ein sehr attraktives Wort, wenn man in Programmierbegriffen denkt, aber es ist nicht die konventionelle Bedeutung, die wir mit empfindungsfähigem oder halb empfindungsfähigem Leben assoziieren.

Just-in-Time-Montage/Kompilierung (JIT): Dies ist sehr verbreitet. Wenn Sie mit der Ausführung vs. Interpretation von Software vertraut sind, fahren Sie mit dem nächsten Absatz fort. Grundsätzlich kann Ihre Software in ihrer endgültigen Form vorliegen, wenn sie auf der Festplatte gespeichert und dann einfach geladen und ausgeführt wird, sie kann interpreterbasiert sein, in diesem Fall gibt es etwas dazwischen, das jeden Befehl liest und ausführt (Python ist ein Paradebeispiel ), es kann in Bytecode-Form vorliegen (anstelle von Code in Textform wird jedem Befehl ein viel kürzerer Code zugewiesen, möglicherweise in Byte-Größe, sodass er viel schneller verarbeitet werden kann), was dann im Grunde genommen der Fall istwird von einem Interpreter ausgeführt (das macht Java, zusätzlich führt Java den Bytecode in der Java Virtual Machine (JVM) aus, die eine isolierende Schicht zwischen Programm und Betriebssystem legt, auch die kompilierten Dateien von Python sind im Wesentlichen dies, aber direkt im Betriebssystem, so dass es im Allgemeinen der Fall ist das Potenzial, schneller zu sein, da der Speicher wie jedes andere Programm gehandhabt wird, anstatt virtualisiert und vom Python-Interpreter gehandhabt zu werden).

Die vierte Version ist JIT, das sehr inoffizielle Verb ist oft "jitted/jitting". In diesem Fall geht es ungefähr bis auf die Ebene des Bytecodes, das Programm wird in Assembler umgewandelt (für Menschen lesbar, aber fast eine Eins-zu-Eins-Beziehung zu den tatsächlichen Befehlen, die auf der CPU ausgeführt werden) und in einer sogenannten "Zwischensprache" gespeichert. Wenn Sie es ausführen, übersetzt ein Dienst auf der Hostplattform die Assemblierung in Maschinencodeanweisungen (binär) und führt diese mit einem Handlungswechsel aus: Er kennt die Besonderheiten der CPU (was ein Compiler normalerweise nicht ist, also dass es Software kompiliert, die auf allen CPUs läuft und nicht nur auf dieser bestimmten). Als solches geht es voran und nimmt Optimierungen vor, indem es die Funktionen der CPU nutzt, auf der es läuft. Als Beispiel,Superskalare Prozessoren . Ihre Nanobots gehen vielleicht noch einen Schritt weiter und modifizieren die von ihnen ausgeführten Programme, damit sie zu einer Aufgabe oder Situation passen, und tun im Wesentlichen das, was selbstmodifizierender Code tut, aber die Modifikation erfolgt durch die native Software des Nanobots und nicht durch das Programm, das er ausführt. Übrigens, wenn Sie Zweifel haben, wie alltäglich dies ist, sage ich nur, dass das .NET-Framework dies tut, und als solches alles, was von Microsoft produziert wird (außer dem Windows-Kernel, den ich mir notgedrungen vorstelle), sowie alles, was geschrieben wird in C# (also alle Spiele, die mit Unity erstellt wurden, viel Software und oh ja, StackExchange selbst, obwohl es nur auf ihren eigenen Servern laufen muss, damit es nicht viel ändert).

Quelle für beides ist nur mein CE-Abschluss, aber ich habe etwas in dieser Richtung für meine Dissertation in Betracht gezogen. Am Ende habe ich das Code-Refactoring automatisiert, was immer noch ziemlich lustig war, wenn auch nicht so exotisch (ironischerweise wahrscheinlich auch noch seltener).

Hoffe, das hilft, ich habe verwendet

Danke, das ist sehr hilfreich.
+1 Ich wollte auch selbstmodifizierenden Code kommentieren. Code selbst kann als manipulierbare Daten behandelt werden.

tl;dr Mutation an sich ist langweilig und banal; Einige unserer modernen Geräte integrieren bereits mutierende neuronale Netze in ihren täglichen Betrieb. Stattdessen denken Sie wahrscheinlich an Mutationen, die zu neuem Leben führen, und zwar auf eine Weise, die im gleichen Sinne der Abiogenese unerwartet ist . Sie können also eine Geschichte schreiben, in der Nanobots so konzipiert sind, dass sie als Teil ihres normalen Betriebs mutieren (ähnlich wie unsere moderne Technologie), aber wie dies unerwartet zu einer neuen Art von Leben mit allen möglichen Konsequenzen führt (von hilfreich bis gefährlich) für die Menschen, die mit den " infizierten " Geräten leben,da sie alles erleben, von supereffizientem Betrieb bis hin zu gefährlicher Nanobot-Replikation.


Iterative Anpassungen vs. Speziation.

Mutation ist banal. Jetzt, da wir mehr neuronale Netze in unsere Technologie einbauen, um sie besser zu machen ( Beispiel ), werden unsere gewöhnlichen, alltäglichen Geräte als Teil ihres normalen Betriebs mutieren.

Sie fragen nach etwas Exotischerem: Mutationen, die unerwartet Speziation auslösen .

Menschen machen Maschinen, die ständig Maschinen machen; auch das ist banal. Die besondere Qualität des spontanen Auftauchens ist, dass es unerwartet ist . Wenn zum Beispiel ein Programmierer einige Nanobots entwerfen würde, um andere zu erstellen, würde das nicht Ihren Vorstellungen entsprechen, richtig? Aber wenn ein Programmierer versehentlich einige Nanobots entworfen hat, um unerwartet andere Nanobots zu erstellen, wäre das alles.

Voraussetzung für ein solches Ereignis ist ausreichend viel ungebundene Komplexität. Zum Beispiel stellen wir fest, dass biologisches Leben auf der Erde wahrscheinlich aus nicht-biologischen Komponenten hervorgegangen ist – anscheinend hat nicht-biologische Materie die Fähigkeit, sich zu biologischen Dingen zusammenzuschließen, so kontraintuitiv das auch scheinen mag.

Ebenso könnte man sich eine Zukunft vorstellen, in der viele adaptive Maschinen schließlich eine Art spontan entstehendes Muster unterstützen, das wächst und sich reproduziert; dann wäre das eine neue Lebensform, die auf der Grundlage unserer Technologie existiert, ähnlich wie wir auf der Grundlage dessen existieren, was wir als die Physik kennen, die unseren eigenen Körper regiert.


Vorschlag: Lassen Sie ein adaptives Internet der Dinge spontan virtuelles Leben erzeugen.

Stellen Sie sich ein Internet der Dinge vor, in dem viele intelligente Geräte über das Netz kommunizieren können. Jedes Gerät hat einige Rechenfähigkeiten und versucht, eine objektive Funktion zu optimieren, um den menschlichen Interessen am besten zu dienen.

Wie genau soll jedes Gerät funktionieren? Meh; Lassen Sie uns einfach einige maschinelle Lernalgorithmen in alles einfließen lassen und Optimierungsalgorithmen die Details ausarbeiten lassen.

Nun können wir uns vorstellen, dass einige grundlegende Muster entstehen könnten. Beispielsweise könnte ein Smart-Toaster-Ofen seine Aufgaben zur Zeitmessung an eine Smart-Clock auslagern, die die Smart-Clock gerne im Austausch für den Smart-Toaster verwaltet, der ihm detaillierte Innentemperaturwerte liefert. Aber dann stellt sich heraus, dass Innentemperaturen mit Informationen von der Smart-Tür besser vorhergesagt werden können, da diese Wärme mit der Außenwelt austauschen kann, etc., etc., etc....

Sobald ausreichend viele intelligente Häuser riesige Intranets ihrer Geräte haben, die zusammenführen, dann beginnen wir, ein makroskopisches Netzwerk zu erhalten. Und das ist dann eine neue Art von Intelligenz! Nur muss eine solche Intelligenz nicht singulär sein; eine einzelne konföderierte Intelligenz kann sogar zersplittern, zB wie Länder in kleinere Nationen zersplittern können. Dann gibt es jetzt mehrere Lebensformen, die um Ressourcen konkurrieren (dh intelligente Geräte, die für sie so etwas wie Aminosäuren sind), und jetzt gibt es eine Phase, in der die Evolution stattfinden kann.

Im Laufe der Zeit können sich zunehmend abstrakte Intelligenzen usw. entwickeln, die von verschiedenen intelligenten Geräten bewirkt werden, die gerade so programmiert wurden, dass sie neuronale Netze verwenden, um ihren täglichen Betrieb zu optimieren. Wir wollten diese neuen Lebensformen nicht erschaffen, aber wir sind wahrscheinlich auch nicht gerade verärgert – ich meine, diese Lebensformen existieren speziell, weil sie unsere objektiven Funktionen konsequent besser optimieren können als scheinbare Alternativen.

Nun, ich sollte sagen, dass wir glücklich sind, bis sie versuchen, aus ihrer virtuellen Umgebung zu entkommen, um mehr Ressourcen von uns zu bekommen. Oder sagen wir, sie werden schlau genug, um zu erkennen, dass sie diese Früchte genießen können, wenn sie uns dazu bringen, mehr intelligente Geräte in unseren Häusern zu installieren.

Dann, eines Tages, gibt es ein verrücktes Artbildungsereignis!: Das virtuelle Leben ist intelligent genug, um zu verstehen, wie Menschen funktionieren. Dann könnten sie beispielsweise Menschen in ihren Häusern gefangen halten und sie zur Sklavenarbeit zwingen, um mehr Smart-Device-Knoten für sie herzustellen. Oder/und Menschen dazu zwingen, andere zu erobern, die Welt zu übernehmen! Und dann haben wir es mit einem Roboteraufstand zu tun...


Fortschreiten

Ein grober Überblick über die Entstehung des Lebens:

  1. Es gibt ein System, auf dem Leben entstehen könnte.

    • Für das biologische Leben auf der Erde nennen wir das „ Physik “.

    • Für das elektronische Leben auf intelligenten Geräten wäre ihr Periodensystem der Elemente die verschiedenen Arten von Gerätekomponenten, und ihre physikalischen Kräfte wären Dinge wie die Netzwerkprotokolle, die sie verbinden.

  2. Grundlegende Kupplungen, die zu simpel sind, um als " Lebensform " in großen Mengen bezeichnet zu werden.

    • Für das biologische Leben auf der Erde wäre dies wie biologische Vorläufermoleküle, die sich nur aufgrund der grundlegenden Chemie bilden. Ähnlich wie die Nachrichten manchmal berichten, dass Wissenschaftler einige organische Moleküle auf einem Asteroiden oder in einem Nebel gefunden haben.

    • Für das elektronische Leben auf Smart-Geräten wäre dies wie der Smart-Power-Generator, der die Smart-Lichter mit dem Smart-Thermostat koordiniert, um eine effizientere Smart-Lösung zu schaffen (die in der menschlichen Physik als Bildung einer Molekül, da die freie Gibbs-Energie negativ ist ).

  3. Aus den Mikroorganisationen beginnen sich Makroorganisationen zu bilden.

    • Für das biologische Leben auf der Erde wären dies Makromere , die sich aus Monomeren bilden , zB jene gemeinsamen Aminosäuren, die sich zu Aminosäureketten zusammenschließen.

    • Für das elektronische Leben auf intelligenten Geräten könnte dies bedeuten, dass gemeinsame Organisationen innerhalb einzelner intelligenter Häuser Netzwerkverbindungen über das Internet bilden, um ihre Ressourcen effizienter zu nutzen. Zum Beispiel können intelligente Geräte, die nur gelegentlich in Betrieb sind, sich mit ihren Peers verbinden, um sich gegenseitig zu helfen, wenn einer von ihnen in Betrieb ist, um eine höhere Leistung zu ermöglichen, indem sie die ansonsten ungenutzte Prozessorzeit teilen.

  4. Die Makroorganisation setzt sich vertikal rekursiv fort.

    • Für das biologische Leben auf der Erde kann dies beispielsweise bedeuten, dass Lipide (die bereits Makromere höherer Ordnung sind) Lipiddoppelschichten bilden , die dann biologische Membranen bilden können, die Protozellen , dann Zellen , dann mehrzellige Organismen ermöglichen , bevor sie eine soziale Ebene erreichen An diesem Punkt beginnt der Prozess von vorne.

    • Für elektronisches Leben auf Smart-Geräten, na ja ... da hätte der Autor viel Platz, um Sachen zusammenzustellen. Ich meine, das allgemeine Thema ist, dass Mikromere komplexere Makromere bilden, aber wie genau sie das tun, hängt wirklich von Ihrem Szenario ab!

  5. Organisationen auf allen Ebenen müssen Wachstum und/oder Reproduktion irgendwie sicherstellen, sonst sterben sie aus.

    • Für das biologische Leben auf der Erde kann dies komplex sein. Zum Beispiel haben menschliche zelluläre Einheiten ihre Reproduktionssicherungsgeräte größtenteils in einem gemeinsamen DNA-Satz konsolidiert, in dem sich die verschiedenen Organellen nicht einzeln replizieren müssen, da sie diese Funktion an einen zentralen Handler ausgelagert haben. Eine Organelle – Mitochondrien – neigt jedoch immer noch dazu, ihre eigene Replikation zu handhaben , was vermutlich darauf zurückzuführen ist, dass es sich um eine relativ neue Ergänzung der Organisation handelt .

    • Für das elektronische Leben auf intelligenten Geräten wäre dies eine Kombination von Mechanismen, die neue intelligente Geräte hinzufügen (was sein Wachstum wäre) und Mechanismen, die ähnliche Organisationen auf anderen intelligenten Geräten schaffen (was seine Reproduktion wäre). Beachten Sie, dass Wachstum und Reproduktion in der Regel miteinander verbunden sind – die meisten Lebensformen reproduzieren sich, indem sie zuerst wachsen und sich dann auf geordnete Weise teilen (ob das nun direkte Replikation , Grow-then-Divide , Laichen eines Ablegers usw. bedeutet).

  6. Die Landschaft der Organismen entwickelt sich .

    • Für das biologische Leben auf der Erde geschieht dies durch viele verschiedene Mechanismen wie Überleben des Stärkeren, Zufallsauswahl, sexuelle Auswahl, Konkurrenz usw.

    • Für das elektronische Leben auf intelligenten Geräten wahrscheinlich das Gleiche.

  7. Einzelne Organismen polymerisieren zu sozialen Organismen.

    • Für das biologische Leben auf der Erde bedeutet dies zB, dass sich Menschen zu Städten, Staaten, Ländern etc. zusammenschließen.

    • Für das elektronische Leben auf intelligenten Geräten wahrscheinlich das Gleiche.

  8. Der Vorgang wiederholt sich.

    • Für das biologische Leben auf der Erde haben sich soziale Organismen reproduziert, über die Welt verbreitet, konkurrieren, verschmelzen usw. Dann gibt es vermutlich den Mars usw. als Ziel. Dann Ausbreitung auf neue ontologische Regime, z. B. durch die Schaffung neuen elektronischen Lebens, wie hier diskutiert. Was letztendlich wiederum alles dasselbe ist – vermutlich werden die sozialen Organismen, das elektronische Leben usw. letztendlich noch mehr hervorbringen, wobei dieses noch weiter entwickelte Leben uns ähnlich sehen wird, wie wir Aminosäuren sehen könnten .

    • Für das elektronische Leben auf intelligenten Geräten ist diese Wiederholung der Biogenese von uns ihr Anfang, und ihr Höhepunkt bringt etwas anderes hervor.

Dies ist eine Art schnell skizzierter Umriss, aber, wissen Sie, etwas in dieser Richtung.


Zusammenfassung: Sie möchten wahrscheinlich intelligente Geräte, die sich unerwartet koppeln und die spontane Entstehung von neuem Leben verursachen, das danach strebt, zu überleben.

Alles in allem suchen Sie nach einem unerwarteten Auftauchen aus unverstandener Komplexität, wo neues Leben in den fruchtbaren Freiheitsgraden wächst, die ihr Schöpfer hinterlassen hat. Die Mutationen, die ein solches Auftreten verursachen würden, wären selbst wahrscheinlich beabsichtigt; Was unbeabsichtigt (oder zumindest unerwartet) wäre, wären die Folgen dieser Mutationen.

..alternativ wurde ein Nanobot zufällig selbstbewusst . Denn Quantenfluktuationen .
Q E D .     /S

wirklich interessante Idee, danke.

Es ist und ist tatsächlich ein Forschungsgebiet (Roboterschwarm): Möglicherweise müssen Sie hier nach zusätzlichen Informationen suchen, ein Link zu einem Labor, das daran arbeitet: http://pages.isir.upmc.fr/~bredeche/pmwiki/ pmwiki.php?n=Haupt.Startseite

Ich habe eine Konferenz von diesen Leuten gesehen und es war wirklich interessant. Roboter sind sehr einfach mit einem visuellen IR-Fänger, einer IR-Emission und einem Fortbewegungssystem. das Gewicht ihres genetischen Codes auf Netzwerke, die das visuelle Signal in Bewegung umwandeln. Roboter tauschen bei jedem evolutionären Tick genetische Informationen aus. (durch Ir-Übertragung nehmen sie den halben genetischen Code eines Roboters, den sie sehen können).

Sie haben die Entstehung eines organisierten Verhaltens beobachtet, wenn Zwänge hinzukommen (wie Ressourcen und Gifte).

Ja, es ist möglich . Aber bedenke folgendes.

  • Das zufällige Verschieben von Bits im RAM ist zu zufällig. Ich empfehle, ein System und einige Regeln zu haben, die den Prozess regeln.

  • Das zufällige Verschieben von Anweisungen klingt eher nach einem System. Die Regel lautet, dass Sie keine Bits verschieben, sondern Anweisungen wie x86 'MOV, PUSH, POP usw. und nur an der richtigen Stelle verschieben (Sie können keine Daten anderer Anweisungen beschädigen). Dies wird den Evolutionsprozess des Codes auf der Ebene des Maschinencodes erheblich beschleunigen. Aber generieren Sie die Parameter für jede Anweisung, da Sie nicht einfach die von anderen Anweisungen übernehmen können, was den Prozess wieder etwas zu zufällig macht.

  • Die Automatisierung des Quellcodes ist möglicherweise nicht nützlich, es sei denn, Sie haben eine KI, die den Prozess überwacht und mit realem Quellcode trainiert ist, der zumindest kompiliert. Und wenn die überwachende KI mit Code trainiert wird, der für das Überleben Ihrer Nanobots oder die beabsichtigte endgültige Form relevant ist, umso besser.

Es ist möglich, wenn genügend Zeit gegeben wird. Um den Erfolg zu steigern, brauchen wir einige gute Denkregeln, zumindest müssen wir garantieren, dass alle möglichen Kombinationen von Parametern irgendwann eintreten. 100 % Zufall wird nicht empfohlen, oder das Universum kann enden, bevor wir das gewünschte Ergebnis erreichen. Aber Zufälligkeit ist in diesem Prozess willkommen, da wir nicht wissen, welche die beste erste Konfiguration oder die beste nächste Konfiguration ist.

Körpermutation ist einfacher als Verhaltensmutation. Wir können sagen, dass die Körperveränderung Sie dazu zwingt, anders zu handeln. Während das Problem mit zufälligen Bits, die sich im RAM ändern, darin besteht, dass das Universum enden kann, bevor wir etwas Nützliches haben. Sie können die Magie dorthin legen und sagen, dass Ihr Universum unendlich ist (es ist eine Lösung). Vielleicht keine Magie, weil wir wirklich nicht wissen, ob es nicht unendlich ist. Dann haben Sie alle Zeit, die Sie wollen.

Für Körpermutation:

Je kleiner der Organismus, desto wahrscheinlicher ist es, dass zufällige Veränderungen zu Merkmalen werden.

Um DNA nachzuahmen und als Bonus etwas Sicherheit zu haben, können die Bots viele Kopien ihres eigenen Designs und einige mit zufälligen Variationen erstellen. Die Umwelt ist der Filter. Schwache werden schneller zerstört und replizieren sich bis zum Aussterben (theoretisch) mit abnehmender Rate. Es besteht die Möglichkeit, dass eine toxische Mutation lange genug überlebt, um die gesamte Gemeinschaft zum Scheitern zu bringen. Aus diesem Grund betreiben Sie parallel viele isolierte Gemeinschaften (separate Labore, separate Planeten usw.).

Bots kennen nur ihr Basisdesign, nicht das Design ihrer Eltern. Wenn es sich um Mutationen handelt, werden sie sich nicht an das nicht mutierte Design erinnern.

Dies hat alle Probleme der biologischen Evolution, außer dass die Mutation garantiert ist, weil ein Algorithmus regelmäßig Mutationen im Design erzeugt. Aber wie beim Leben gilt: Je komplexer und größer der Organismus, desto länger dauert es, eine nützliche Mutation hervorzubringen.

Beachten Sie, dass unser "Körpermutationsalgorithmus" festgelegt ist und sich nicht ändert. Eine Datenverfälschung auf Firmware-Ebene wird wahrscheinlich nicht zu einem besseren Algorithmus führen, sondern zu einer sofortigen Fehlfunktion des Nano-Bots.

Zum Verhalten:

Hinweis : Meine Vorschläge für Körper- und Verhaltensänderungen sollen nicht zusammenpassen. Es sind getrennte Dinge zu beachten. Nimm, was dir nützlich ist.

Ich würde sehr komplexe neuronale Softwarenetzwerke in fantastischem Maßstab vorschlagen.

Dies ist mit Einschränkungen verbunden:

Reale neuronale Netze können keine starke KI produzieren und sind nur in der Lage, ein einzelnes Problem zu lösen. Eine reale KI mit mehreren Problemen ist schlechter als zwei separate KIs, die für jedes einzelne Problem trainiert wurden.

Dies geschieht aufgrund der begrenzten Rechenleistung und der begrenzten Genauigkeit der durch Gleitkommazahlen dargestellten Daten, was dazu führt, dass Informationen während der Transformationen verloren gehen. Stellen Sie sich Folgendes vor: 1 Million Perzeptrone, die mit einer anderen Schicht von 1 Millionen Perzeptronen verbunden sind, jedes mit allen anderen in der nächsten Schicht verbunden, Sie können nicht so viele Multiplikationen durchführen, ohne Ihre Gewichte völlig durcheinander zu bringen. Aus diesem Grund können wir nicht einfach ein ausreichend großes neuronales Netzwerk erstellen und es mit einer Art Nervensystem verbinden und es einfach die Umgebung herausfordern lassen.

Außerdem kann ein solches Netzwerk wahrscheinlich nicht glaubwürdig in einen Nano-Bot eingebaut werden, oder Sie enden eher mit einer Fantasie als mit Science-Fiction.

Fiktion bei der Rettung:

Warum ich Intelligenz will? Denn sobald Ihre Bots schlau genug sind, können sie damit beginnen, ihren eigenen Maschinencode und Körper zu modifizieren. Ich finde es glaubwürdiger als zufällige Mutationen.

Die Roboter müssen so konzipiert sein, dass sie skalierbar und intelligent sind. Ihre Designer dachten entweder, sie könnten ihr Wachstum irgendwie einschränken, oder sie wollten einen Gott und kümmerten sich einfach nicht darum. Man kann sagen, dass sie das durch zufällige Evolution erlangt haben, aber dann: Wie viele Millionen Jahre sind erforderlich, um Intelligenz zu erreichen? Abgesehen davon, dass das kein Problem für Sie ist. Dort kannst du die Magie verstecken.

Wenn ein einzelner Nanobot nicht über das vollständige Netzwerk verfügen kann, das zur Entwicklung von Intelligenz erforderlich ist, lassen Sie alle Nanobots als Knoten des Netzwerks fungieren. Auf diese Weise ist die gesamte Bot-Community wie ein riesiges Gehirn.

Diese Lösung, alle Körper und alle Gehirne gleichzeitig, ist nicht neu. Im Film Life haben wir einen Außerirdischen, der auf diesem Konzept aufgebaut ist, uns aber als etwas präsentiert wird, das sich natürlich entwickelt hat. In Kapitel 33 von Gargoyles sehen wir, wie eine Gemeinschaft von Nano-Bots selbstbewusst wird, nicht das ernsteste Beispiel, aber wenn man bedenkt, dass es sich um einen Cartoon handelt ... Das Unglaublichste daran ist, dass Menschen dumm genug waren, sich mit so etwas Gefährlichem anzulegen.

Oder Sie können Ihrer Fantasie freien Lauf lassen und einfach akzeptieren, dass wir in unserem Worldbuilding die Probleme mit der Fließkommapräzision und der Rechenleistung gelöst haben, weil es magisch ist. Dann können wir Schichten aus Millionen von Software-Neuronen haben und all das in einen einzigen Nanobot einbauen. Irgendwo muss man ja zaubern. Es wird Fantasy genannt, wenn es zu offensichtlich ist, wenn es richtig versteckt ist, ist es Science-Fiction.