Grüße Leser. Als ich ein Kind war und in der Schule studierte, war mein Lieblingsfach Mathematik. Mein Lieblingsfach war die Tatsache, dass ich es wirklich liebe, Probleme zu lösen. Irgendwann in meinem Leben begann ich, offensichtlich unlösbare Probleme für mich selbst zu komponieren und sie auszuprobieren Um es zu lösen, stellte sich manchmal heraus, dass ein unlösbares Problem nur so zu sein schien, weil einige nicht offensichtliche Momente weggelassen wurden, indem man sich Gedanken über einen Lösungsansatz für ein unlösbares Problem machte. Meine Liebe zur Lösung von Problemen hat mich sehr beeinflusst, weshalb ich ständig alle Probleme in meinem Kopf löse, nicht nur mathematische Probleme, sondern auch aus anderen Bereichen. Im Laufe meines Lebens habe ich viele Ideen (Lösungen) gesammelt, von einem Stahl-3D-Drucker bis zu einer Methode zur Lösung des Problems der Entsorgung radioaktiver Abfälle aus Kernkraftwerken.Sicherlich sind viele Ideen aus dem einen oder anderen Grund nicht realisierbar, und einige wurden wahrscheinlich vor mir erfunden, und ich wusste einfach nichts davon (dies ist bereits geschehen). In meinem letztenIn dem Artikel erwähnte ich (ich selbst weiß nicht warum), dass ich eine neue Art von Zahlen erfunden habe, mit denen Sie neuronale Netze trainieren können. Ich wollte einen Dienst zum Trainieren neuronaler Netze unter Verwendung dieser Zahlen eröffnen, aber angesichts der Pandemie und meines schlechten Gesundheitszustands dachte ich, dass ich plötzlich wirklich der erste war, der an diese Zahlen dachte, und es wäre extrem schlimm, wenn ich sterbe und das Wissen über diese Zahlen verschwindet mich. Aus diesem Grund habe ich mich entschlossen, diesen Artikel zu schreiben, in dem ich ausführlich über diese Zahlen und deren Verwendung zum Trainieren neuronaler Netze sprechen werde. Ich muss sofort sagen, dass ich nicht alle notwendigen Formeln für die Arbeit mit solchen Zahlen ausgearbeitet habe, da ich mit meiner eigenen Programmiersprache beschäftigt war. Dies ist nur eine Idee, keine vorgefertigte Implementierung.
Um vollständig zu verstehen, was in diesem Artikel behandelt wird, müssen Sie Kenntnisse über die Struktur einfacher neuronaler Feedforward-Netze haben.
Angenommen, Sie müssen ein vorwärts gerichtetes neuronales Netzwerk mit einer Art Trainingssatz trainieren, in dem Beispiele dafür aufgeführt sind, was dem Eingang des neuronalen Netzwerks zugeführt wird und was am Ausgang erwartet wird. In einem solchen Fall können Sie eine Funktion schreiben, nennen wir sie Fitness (wie in einem genetischen Algorithmus), ein neuronales Netzwerk und ein Trainingsmuster werden für die Eingabe einer solchen Funktion angegeben, und die Funktion gibt eine Zahl von 0 bis 1 zurück. Die Zahl entspricht, wie stark dieses neuronale Netzwerk von diesem Beispiel trainiert wird. Wenn 0 nicht so oft wie möglich trainiert wird, ist 1 ideal trainiert. Unter Verwendung einer solchen Fitnessfunktion kann das neuronale Netzwerk als eine mathematische Funktion dargestellt werden, bei der die Argumente die Gewichte des neuronalen Netzwerks sind, und das Ergebnis ist das Ergebnis der Fitnessfunktion, die mit den gegebenen Gewichten und der gegebenen Trainingsprobe auf das neuronale Netzwerk angewendet wird. Ich begann zu überlegen, wie man das Maximum einer solchen Funktion findet.In meinem Kopf präsentierte ich ein dreidimensionales Diagramm einer Funktion mit 2 Argumenten und dachte, wenn wir die Bedingung hinzufügen, dass jedes Gewicht auf einen endlichen Bereich möglicher Werte beschränkt ist, kann dieses Diagramm in zwei Teile unterteilt werden, wobei in einem Teil des Diagramms das erste Argument dieselben Werte hat Sein möglicher Bereich, und der zweite Teil des Diagramms enthält alle verbleibenden Werte des Arguments. Analysieren Sie dann, in welchem Teil das Maximum größer ist, nehmen Sie diesen Teil und teilen Sie ihn auf die gleiche Weise, wobei Sie sich jedoch bereits auf ein anderes Argument stützen, wonach der als Ergebnis der zweiten Division erhaltene Teil erneut benötigt wird basierend auf dem ersten Argument in zwei Teile geteilt. Eine solche Aufteilung in Teile muss durchgeführt werden, bis die Werte des Ergebnisses der Funktion in dem aus der Aufteilung erhaltenen Bereich zu große Schwankungen aufweisen.Alle Argumente aus dem resultierenden Teil des Diagramms sind geeignete Gewichte. Zum besseren Verständnis werde ich das Obige anhand eines Beispiels erläutern.
y(x) = sin x, x [-4, 4], , , . 2 , x [-4, 0], x [0, 4], , [0, 2] [2, 4]. - , 1, [pi * 999999 / 2000000, pi / 2], x . . - , , , . [0, 1], , . "". , , , , . : sin([-pi, pi]) = [-1, 1]. , , , , . : [-3, 6] - [-12, 7] = [-10, 18]. , [3, 3]. ? , , , , . feedforward :
- ,
fintess
2 , , . , fitness . fitness ,
,
. , . , , - fitness , , , , - . , , , , .
, , , . , . : [1, 2] [4, 5], , [5, 7], 5 1 4, 6 , 6 , 5. , . , , 0, . , [a, b] x , n , x , . f ( 0 1) , x. f f1, f1(x) = f(x) * n. n , f1 , , x . f1 0, , , , , . , f1. , f1 , , youtube (, ), , , - . ( x) , [0, 1], , , .
fitness , . , , , . , , , , , . , , ? ? , , , , . :
- , y(x) = 1
fintess
2 , , . , fitness . fitness ,
,
,
2 , , . , fitness . fitness ,
,
4
5- , 5
, (: 3 ([0, 1], [20, 40], [100, 101]) ), , , 1 2- . , . [1, 2, y(x) = 1], [4, 5, y(x) = 1], [5, 7, y(x) = 1 - |0.5 - x| * 2]. y(x) = 1 - |0.5 - x| * 2? , , , . y(x) = x, , 2 . , , 2- , , . , , , .. [a1, b1, y1(x) = f1(x)] + [a2, b2, y2(x) = f2(x)] = [a3, b3, y3(x) = f3(x)], f3 a1, b1, a2, b2, f1 f2, , . , , .
P. S. , . , . , , . , 80%. , , ( , , ). ( ), - ( ), , . , () , - , , . , , . 200 , . , ( ""). .