2017-02-21 3 views
2

Ich versuche, ein neuronales Netz in Python mit einem benutzerdefinierten Verlust mit Keras zu bauen, und ich wandere, ob eine S-förmige Funktion als Aktivierungsfunktion in der letzten Schicht und eine S-förmige am Anfang des benutzerdefinierten Verlustes aufweisen, ist gleich oder nicht. Also hier ist das, was ich damit meine:Ist die Stelle der Sigmoid-Funktion im neuronalen Netzwerk wichtig?

enter image description here

ich das Gefühl, dass in dem zweiten Modell der Verlust berechnet wird, aber es nicht zurück durch die S-förmige mittlerweile im ersten Modell propagiert wird, ist es. Ist das richtig?

+0

Konnten Sie uns einen Code zur Verfügung stellen, den Sie verwenden - das ist wirklich wirklich interessant. –

Antwort

3

In der Tat, im zweiten Fall geht die Rückpropagation nicht durch das Sigmoid. Es ist wirklich eine schlechte Sache, Daten innerhalb der Verlustfunktion zu ändern.

Der Grund, warum dies eine schlechte Sache zu tun ist, ist, weil Sie dann einen Fehler auf der Ausgabe zurückpropagieren werden, die nicht der wirkliche Fehler ist, den das Netzwerk macht.

mich mit einem einfachen Fall erklären: Sie Etiketten in einer binären Form haben sagen ein Tensor [0, 0, 1, 0] Wenn Ihr sigmoid innerhalb Ihrer benutzerdefinierten Verlustfunktion ist, können Sie Ausgänge haben, dass die S-förmige in Ihrem Verlust wie diese [-100, 0, 20, 100], aussehen verwandeln dies in etwas, das ungefähr wie tihs aussieht: [0, 0.5, 1, 1] Der Fehler, der rückpropagiert wird, ist dann [0, -0.5, 0, -1]. Die Backpropagation wird nicht berücksichtigen das Sigmoid und Sie werden diesen Fehler direkt auf den Ausgang anwenden. Sie können sehen, dass die Größe des Fehlers nicht die Größenordnung des Ausgabefehlers widerspiegelt: Der letzte Wert ist 100 und sollte im negativen Bereich liegen, aber das Modell wird einen kleinen Fehler von -1 auf dieser Ebene zurückwerfen.

Zusammenfassend muss der Sigmoid im Netz sein, so dass das Backpropagation es berücksichtigt, wenn der Fehler backpropagating.

+0

Erstaunlich! Danke für deine Antwort, ich weiß es zu schätzen – DalekSupreme

Verwandte Themen