Hallo Community,
ich bin hauptsächlich im Gebiet der künstlichen Intelligenz unterwegs und mir fehlt aktuell leider ein wenig die Fantasie für eine spezifische, mathematische Problemstellung: ich habe ein System entwickelt, bei dem ich im Idealfall eine Wahrscheinlichkeitsverteilung als Ergebnis erhalte. Da der Idealfall in der Realität unwahrscheinlich ist, benötige ich eine "Bewertungsfunktion", die mir die Güte meiner Lösung approximiert.
Meine KI (Architektur kann ich bei Interesse gern erläutern, ist für die Problemstellung aber irrelevant), bzw. genauer spezifiziert ein künstliches neuronales Netz, trainiere ich mit dem Adam-Algorithmus und berechne den Fehler per Kreuzentropie.
Letztendlich - in der Praxis - berechne ich also den Fehler eines N-dimensionalen Ergebnisvektors wie folgt:
wobei y der Idealwert für den entsprechenden Eintrag und o der tatsächliche Wert im Ergebnisvektor an der i-ten Stelle ist.
Dieses Prozedere funktioniert zum Trainieren meines Systems gut. Allerdings würde ich gerne weitere Kostenfunktionen ausprobieren und/oder eine "unabhängige" Bewertungsfunktion haben.
Hier mal ein Plot (Ausschnitt!), wie der Idealfall (blau) aussehen würde und demgegenüber ein (künstlich) stark verrauschter Ergebnisvektor (rot):
Der komplette Ergebnisvektor hat bei diesem Beispiel 1000 Dimensionen. Meistens arbeite ich mit Normalverteilungen, sodass die Summe eines idealen Vektors immer gleich 1 ist. In der Realität weicht die Summe des Vektors manchmal marginal von 1 ab, je nachdem wie der Erwartungswert und die Varianz der Normalverteilung gewählt ist. Da der Vektor ja eine Diskretisierung von der eigentlichen Dichtefunktion der Normalverteilung darstellt, ist z.B. wegen Rundungsfehlern von floats bei sehr großer oder sehr kleiner Varianz häufig die Summe marginal unterschiedlich von 1.
Kommen wir zur eigentlichen Fragestellung: Meine Problematik ist, dass ich gerne die Form der Kurven bewerten würde. Der Fehler, den ich per Kreuzentropie berechne, gibt mir ja nur die kumulierte "Abweichung" der einzelnen logistischen Fehler vom Idealfall/-vektor. Für das Trainieren des Netzes ist das wichtig, für meine Evaluation später aber nicht.
Da der Erwartungswert, also die Position meiner Gaußkurve in dem Ergebnisvektor, immer recht gut hinkommt, interessieren mich für die Evaluation hinterher alle Einträge, die mehr als ungefähr +/- 2 * Varianz entfernt von dem Erwartungswert liegen, nicht mehr. In der Grafik z.B. ist auch nur ungefähr das Interval [660, 800] interessant, der Rest des 1000D Vektors kann vernachlässigt werden.
Nun ist meine Problematik: wie evaluiere ich die Form der Gaußkurve?
Ich kann ziemlich zuverlässig ermitteln, welches Interval in dem Vektor am Ende interessant. Problematisch ist aber die weitere Methodik. Wenn ich hier wieder Kreuzentropie benutze, habe ich wieder "nur" die Abweichung von den einzelnen logistischen Fehlern. D.h. die Fehler sind nicht gleichmäßig gewichtet und ich verliere die Information darüber, ob die Form der Gaußkurve passt.
Fast noch schlimmer ist es, wenn ich ein Integral über das Interval bilde und dann das Integral vom Ergebnisvektor mit dem des Idealvektors vergleiche: wenn 50% des Intervals über dem Idealvektor liegt und 50% darunter und die Abweichungen ungefähr gleichmäßig darüber und darunter verteilt sind, dann bekomme ich bei einem Vergleich der Integrale natürlich nur einen marginalen Unterschied, obgleich der Ergebnisvektor relativ schlecht aussehen kann.
Auch mit absoluten oder quadratischem Fehler wird das ganze nicht besser.
Hat hier also eventuell jemand eine Idee, wie ich ein halbwegs zuverlässiges Maß finden kann, dass mir die Form der Gaußkurve beschreibt?
Ein Integral gibt mir halt nur eine gute Information darüber, ob die Fläche und damit die Wahrscheinlichkeit meiner Gaußkurve in dem gegebenen Interval "gut passt" im Vergleich zum Idealvektor. Es vernachlässigt aber, ob die Werte streng monoton steigend vor dem Hochpunkt und streng monoton fallend hinter dem Hochpunkt sind. Diese Form ist mir wichtig: bei starkem Rauschen kann die Gesamtwahrscheinlichkeit im Intervall zwar ganz gut hinkommen, aber die wenn die einzelnen Werte trotzdem wie in der Grafik so "hin und her springen", ist meine Monotonie stark verletzt: viele Punkte liegen direkt hintereinander über und dann wieder unter dem Idealwert.
Ich hoffe ich konnte meinen Gedankengang ungefähr darlegen
viele Grüße
ascer
ich bin hauptsächlich im Gebiet der künstlichen Intelligenz unterwegs und mir fehlt aktuell leider ein wenig die Fantasie für eine spezifische, mathematische Problemstellung: ich habe ein System entwickelt, bei dem ich im Idealfall eine Wahrscheinlichkeitsverteilung als Ergebnis erhalte. Da der Idealfall in der Realität unwahrscheinlich ist, benötige ich eine "Bewertungsfunktion", die mir die Güte meiner Lösung approximiert.
Meine KI (Architektur kann ich bei Interesse gern erläutern, ist für die Problemstellung aber irrelevant), bzw. genauer spezifiziert ein künstliches neuronales Netz, trainiere ich mit dem Adam-Algorithmus und berechne den Fehler per Kreuzentropie.
Letztendlich - in der Praxis - berechne ich also den Fehler eines N-dimensionalen Ergebnisvektors wie folgt:
wobei y der Idealwert für den entsprechenden Eintrag und o der tatsächliche Wert im Ergebnisvektor an der i-ten Stelle ist.
Dieses Prozedere funktioniert zum Trainieren meines Systems gut. Allerdings würde ich gerne weitere Kostenfunktionen ausprobieren und/oder eine "unabhängige" Bewertungsfunktion haben.
Hier mal ein Plot (Ausschnitt!), wie der Idealfall (blau) aussehen würde und demgegenüber ein (künstlich) stark verrauschter Ergebnisvektor (rot):
Der komplette Ergebnisvektor hat bei diesem Beispiel 1000 Dimensionen. Meistens arbeite ich mit Normalverteilungen, sodass die Summe eines idealen Vektors immer gleich 1 ist. In der Realität weicht die Summe des Vektors manchmal marginal von 1 ab, je nachdem wie der Erwartungswert und die Varianz der Normalverteilung gewählt ist. Da der Vektor ja eine Diskretisierung von der eigentlichen Dichtefunktion der Normalverteilung darstellt, ist z.B. wegen Rundungsfehlern von floats bei sehr großer oder sehr kleiner Varianz häufig die Summe marginal unterschiedlich von 1.
Kommen wir zur eigentlichen Fragestellung: Meine Problematik ist, dass ich gerne die Form der Kurven bewerten würde. Der Fehler, den ich per Kreuzentropie berechne, gibt mir ja nur die kumulierte "Abweichung" der einzelnen logistischen Fehler vom Idealfall/-vektor. Für das Trainieren des Netzes ist das wichtig, für meine Evaluation später aber nicht.
Da der Erwartungswert, also die Position meiner Gaußkurve in dem Ergebnisvektor, immer recht gut hinkommt, interessieren mich für die Evaluation hinterher alle Einträge, die mehr als ungefähr +/- 2 * Varianz entfernt von dem Erwartungswert liegen, nicht mehr. In der Grafik z.B. ist auch nur ungefähr das Interval [660, 800] interessant, der Rest des 1000D Vektors kann vernachlässigt werden.
Nun ist meine Problematik: wie evaluiere ich die Form der Gaußkurve?
Ich kann ziemlich zuverlässig ermitteln, welches Interval in dem Vektor am Ende interessant. Problematisch ist aber die weitere Methodik. Wenn ich hier wieder Kreuzentropie benutze, habe ich wieder "nur" die Abweichung von den einzelnen logistischen Fehlern. D.h. die Fehler sind nicht gleichmäßig gewichtet und ich verliere die Information darüber, ob die Form der Gaußkurve passt.
Fast noch schlimmer ist es, wenn ich ein Integral über das Interval bilde und dann das Integral vom Ergebnisvektor mit dem des Idealvektors vergleiche: wenn 50% des Intervals über dem Idealvektor liegt und 50% darunter und die Abweichungen ungefähr gleichmäßig darüber und darunter verteilt sind, dann bekomme ich bei einem Vergleich der Integrale natürlich nur einen marginalen Unterschied, obgleich der Ergebnisvektor relativ schlecht aussehen kann.
Auch mit absoluten oder quadratischem Fehler wird das ganze nicht besser.
Hat hier also eventuell jemand eine Idee, wie ich ein halbwegs zuverlässiges Maß finden kann, dass mir die Form der Gaußkurve beschreibt?
Ein Integral gibt mir halt nur eine gute Information darüber, ob die Fläche und damit die Wahrscheinlichkeit meiner Gaußkurve in dem gegebenen Interval "gut passt" im Vergleich zum Idealvektor. Es vernachlässigt aber, ob die Werte streng monoton steigend vor dem Hochpunkt und streng monoton fallend hinter dem Hochpunkt sind. Diese Form ist mir wichtig: bei starkem Rauschen kann die Gesamtwahrscheinlichkeit im Intervall zwar ganz gut hinkommen, aber die wenn die einzelnen Werte trotzdem wie in der Grafik so "hin und her springen", ist meine Monotonie stark verletzt: viele Punkte liegen direkt hintereinander über und dann wieder unter dem Idealwert.
Ich hoffe ich konnte meinen Gedankengang ungefähr darlegen
viele Grüße
ascer
Zuletzt bearbeitet: