Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Was sind die "5 Gründe" und was haben 4 Ebenen damit zu tun? Ich habe nachgeschaut, ein einfacher Entscheidungsbaum wird diese Frage beantworten. Der universelle Approximator ist der NS von 2 Schichten, der eine beliebige Anzahl von "Warum" beantworten kann :) Die anderen Schichten werden hauptsächlich für die Datenvorverarbeitung in komplexen Designs verwendet. Zum Beispiel, um ein Bild aus einer großen Anzahl von Pixeln zu komprimieren und es dann zu erkennen.
"The 5 whys" ist eine Technik zur Bestimmung der Kausalität Wikipedia. In dem Artikel wird beispielsweise beschrieben, wie ein neuronales Netz im Wesentlichen darauf ausgelegt ist, eine kausale Beziehung zwischen vergangenen Kursbewegungen und der zukünftigen Richtung der Kursbewegung zu finden.
nur das Eingangssignal muss auch in diesem Intervall liegen. Mit Eingangssignal meine ich genau das Eingangssignal für das Neuron, nicht für die zu diskutierende Funktion.
Theoretisch kann das Eingangssignal für das Neuron beliebig sein. Sein Einfluss wird durch einen Gewichtungskoeffizienten korrigiert. Wenn das Eingangssignal zu klein ist, aber einen bedeutenden Einfluss auf die Gesamtlösung hat, wird sein Gewichtskoeffizient im Lernprozess erhöht. Ist das Signal von großer Bedeutung, aber sein Einfluss auf das Ergebnis ist vernachlässigbar, wird sein Gewichtungskoeffizient bis auf "0" reduziert (Kommunikationsausfall zwischen Neuronen).
"The 5 whys" ist eine Technik zur Bestimmung der Kausalität Wikipedia. Der Artikel wird zum Beispiel als im Wesentlichen ein neuronales Netzwerk entwickelt, um eine kausale Beziehung zwischen vergangenen Preisbewegungen und die künftige Richtung der Preisbewegung zu finden gegeben.
Ich habe nur die Korrelation zwischen der Anzahl der Fragen und der Schichten nicht verstanden. Die Eingabe besteht aus einer Reihe von Attributen, von denen jedes (grob gesagt) beantwortet werden muss. Die Ausgabe ist ein zusammengefasstes Ergebnis. Eine versteckte Schicht kann ausreichen, nicht unbedingt 4. Es wird angenommen, dass ein NS mit 2 versteckten Schichten jede Funktion annähern kann. Dies nur zur Information.
Und um das Thema zu vertiefen, eine Frage zur Architektur des NS. Wovon hängt sie ab?
Ich habe nur den Zusammenhang zwischen der Anzahl der Fragen und den Ebenen nicht verstanden. Die Eingabe besteht aus einer Reihe von Attributen, von denen jedes (grob gesagt) beantwortet werden muss. Die Ausgabe ist ein zusammenfassendes Ergebnis. Eine versteckte Schicht kann ausreichen, nicht unbedingt 4. Es wird angenommen, dass ein NS mit 2 versteckten Schichten jede Funktion annähern kann. Dies nur zur Information.
Die "5 Why"-Technik basiert auf sequentiellen Fragen, wobei jede Frage den Grund für die vorhergehende Frage beantwortet. Wir sehen uns zum Beispiel einen Chart und einen Chart mit steigenden Kursen an und konstruieren Fragen (die Fragen werden abstrakt beantwortet, um die Technik zu erklären):
1. Wo soll gehandelt werden - Kaufen
2. Warum kaufen? - Weil es sich um einen Aufwärtstrend handelt
3. Warum ein steigender Trend? - Der MA50 steigt
4. Warum steigt der MA50? - Der durchschnittliche Schlusskurs von 50 Kerzen mit einer Verschiebung von 1 ist niedriger als der durchschnittliche Schlusskurs der letzten 50 Kerzen.
usw.
Da die Fragen aufeinander aufbauen und eine Ursache-Wirkungs-Beziehung aufweisen, erstellen wir Ebenen, um diese Beziehung zu beobachten. Wenn wir nur 2 Schichten verwenden, geht die Ursache-Wirkungs-Beziehung verloren, das neuronale Netz analysiert eine Reihe von unabhängigen Optionen und wählt die beste aus.
Und um das Thema zu vertiefen, eine Frage zur Architektur des NS. Wovon hängt sie ab?
Von dem Verständnis des Architekten für den Prozess. Der Artikel stellt die einfachste Version eines neuronalen Netzes dar und geht nicht auf Faltungsstrukturen und andere Architekturen ein.
Die "5 Why"-Technik basiert auf aufeinander aufbauenden Fragen, wobei jede Frage den Grund für die vorangegangene Frage beantwortet. Wir betrachten zum Beispiel einen Chart und einen Chart mit steigenden Kursen und und konstruieren Fragen (die Fragen werden in der Zusammenfassung beantwortet, um die Technik zu erklären):
1. Wo soll gehandelt werden - Kaufen
2. Warum kaufen? - Weil es sich um einen Aufwärtstrend handelt
3. Warum ein steigender Trend? - Der MA50 steigt
4. Warum steigt der MA50? - Der durchschnittliche Schlusskurs von 50 Kerzen mit einer Verschiebung von 1 ist niedriger als der durchschnittliche Schlusskurs der letzten 50 Kerzen.
usw.
Da die Fragen aufeinander aufbauen und eine Ursache-Wirkungs-Beziehung aufweisen, erstellen wir Ebenen, um diese Beziehung zu beobachten. Wenn wir nur 2 Schichten verwenden, geht die Ursache-Wirkungs-Beziehung verloren, das neuronale Netz analysiert eine Reihe von unabhängigen Optionen und wählt die beste aus.
Es spielt keine Rolle, in welcher Reihenfolge wir diese Fragen stellen, das Ergebnis wird das gleiche sein. Es besteht keine Notwendigkeit, nach Schichten zu trennen.
Guten Abend, Peter.
Das Neuron im Inneren besteht aus 2 Funktionen:
1. Zunächst berechnen wir die Summe aller eingehenden Signale unter Berücksichtigung ihrer Gewichtungskoeffizienten. Das heißt, wir nehmen den Wert an jedem Eingang des Neurons und multiplizieren ihn mit dem entsprechenden Gewichtungsfaktor. Dann addieren wir die Werte der erhaltenen Produkte.
So erhalten wir einen bestimmten Wert, der in den Eingang der Aktivierungsfunktion eingespeist wird.
2. Die Aktivierungsfunktion wandelt die empfangene Summe in ein normiertes Ausgangssignal um. Dies kann entweder eine einfache Logikfunktion oder verschiedene Sigmoidfunktionen sein. Letztere sind gebräuchlicher, da sie einen sanfteren Übergang der Zustandsänderung aufweisen.
Die Kommunikation zwischen Neuronen wird als direkte Übertragung des Ausgangswertes eines Neurons auf den Eingang eines nachfolgenden Neurons organisiert. In diesem Fall wird der Wert, der am Eingang eines Neurons ankommt, entsprechend seinem Gewichtskoeffizienten berücksichtigt (siehe Punkt 1).
Die Reihenfolge, in der diese Fragen gestellt werden, macht keinen Unterschied, das Ergebnis wird das gleiche sein. Eine Schichtung ist hier nicht erforderlich.
Vielen Dank. Der Artikel und die Verweise haben mir geholfen, das Wesentliche des Zwecks neuronaler Netze zu verstehen - die Definition und Verarbeitung der in den Datensatz eingebetteten Invariante und die einfachste Methode der technischen Umsetzung, die ich noch nicht endgültig verstanden habe. Aber die Erklärungen sind sehr klar.
Wenn Sie die MLP-Struktur verstehen wollen, sollten Sie sich IMHO besser diesen Code ansehen:
#danila_zaytcev mlp 2018
import random
import math
class mlp:
class activefunc:
def __init__(self, func, derive):
self.func = func
self.derive = derive
def __init__(self, structure, af, learnRate, moment, epohs):
self.leanRate = learnRate
self.af = af
self.moment = moment
self.epohs = epohs
self.layerCount = len(structure) - 1
self.weightCount = [None] * self.layerCount
self.neuronsCount = [None] * self.layerCount
self.Out = [None] * self.layerCount
self.Err = [None] * self.layerCount
self.Drv = [None] * self.layerCount
self.Inputs = [None] * self.layerCount
self.Weigthts = [None] * self.layerCount
for l in range(self.layerCount):
nLen = structure[l + 1]
wLen = structure[l] + 1
self.weightCount[l] = wLen
self.neuronsCount[l] = nLen
self.Out[l] = [0.0] * nLen
self.Err[l] = [0.0] * nLen
self.Drv[l] = [0.0] * nLen
self.Weigthts[l] = [None] * nLen
for n in range(nLen):
self.Weigthts[l][n] = [None] * wLen
for w in range(wLen):
self.Weigthts[l][n][w] = (random.random() * 2 - 1) / wLen
def forward(self, input):
for l in range(self.layerCount):
self.Inputs[l] = input
for n in range(self.neuronsCount[l]):
wcount = self.weightCount[l] - 1
out = 0.0
for w in range(wcount):
out += self.Weigthts[l][n][w] * input[w]
out += self.Weigthts[l][n][wcount]
out = self.af.func(out)
self.Out[l][n] = out
self.Drv[l][n] = self.af.derive(out)
input = self.Out[l];
def backward(self, output):
last = self.layerCount - 1
for n in range( self.neuronsCount[last]):
self.Err[last][n] *= self.moment
self.Err[last][n] += (output[n] - self.Out[last][n])*self.Drv[last][n] * (1.0 - self.moment)
for l in range(last - 1, -1,-1):
for n in range( self.neuronsCount[l]):
backProp = 0
for w in range(self.neuronsCount[l + 1]):
backProp += self.Weigthts[l + 1][w][n] * self.Err[l + 1][w]
self.Err[l][n] = backProp * self.Drv[l][n]
def update(self):
for l in range(self.layerCount):
for n in range(self.neuronsCount[l]):
G = self.Err[l][n] * self.leanRate
for w in range(self.weightCount[l] - 1):
self.Weigthts[l][n][w] += self.Inputs[l][w] * G
self.Weigthts[l][n][self.weightCount[l] - 1] += G
def learn(self, inputs, outputs):
for e in range(self.epohs):
for i in range(len(inputs)):
index = random.randint(0, len(inputs) - 1)
self.forward(inputs[index])
self.backward(outputs[index])
self.update()
def compute(self, vector):
self.forward(vector)
return self.Out[self.layerCount - 1]
def test_mlp():
inputs = [[1.0,1.0],[-1.0,-1.0],[1.0,-1.0],[-1.0,1.0]]
outputs = [[1.0],[1.0],[-1.0],[-1.0]]
af = mlp.activefunc(math.tanh, lambda y: 1.0 - y ** 2)
ml = mlp([2,2,1],af,0.01,0.1,10000)
ml.learn(inputs,outputs)
for i in inputs:
print(str(i) + " = " + str(ml.compute(i)))
Er ist fünfmal kleiner, tut garantiert, was Sie brauchen, und ist in Python geschrieben, was viel einfacher zu verstehen ist.
Aber der Autor des Artikels ist natürlich gut, es ist cool, MLP selbst zu schreiben :)