[fhem-rnn] Neuronale Netzwerke zu Steuerung und Analyse

Begonnen von Pythonf, 16 Januar 2019, 14:51:18

Vorheriges Thema - Nächstes Thema

curt

Zitat von: curt am 23 Januar 2019, 00:45:31
ZitatDas ist richtig, Filelog wird aktuell nicht unterstützt und von meiner Seite aus ist auch keine Implementierung geplant.
Das ist schon mal sehr schade. Würde ein Kasten Bier Dich umstimmen können?

Bist Du immer noch an dem Thema dran?

Mein KI-Wissen ist ja veraltet - andererseits lernte ich, dass 50% von KI gar keine seien. Also bin ich dabei.

Nehmen wir mal meinen Rasenmähroboter:
Der soll nicht fahren, wenn ich nicht will, dass er fährt - wegen Regen oder wegen ... er müsste aus meinem bisherigen Verhalten lernen. Leider dürften die verfügbaren Werte nicht reichen.

Interessant wären auch statistische Zusammenhänge zwischen Wetter und Haus. Also zwischen äußeren Faktoren und inneren Reaktionen. Oder statistische Zusammenhänge bei dem beliebten Thema Feinstaub - ich habe einen Feinstaubsensor.

Viel interessanter ist, dass das Thema hier -also im Forum- virulent ist. Mal fällt es sofort auf, wie hier: https://forum.fhem.de/index.php/topic,64115.msg553534.html#msg553534

Oder es fällt nicht sofort auf - das wäre hier: https://forum.fhem.de/index.php/topic,98594.0/topicseen.html
Dort fällt direkt im ersten Beitrag die Vokabel "Anwesenheitswahrscheinlichkeit".

Ohne da jetzt sofort etwas beitragen zu können - das finde ich spannend. Denn bei mir sowie meinen Familienmitgliedern gibt es kein GPS-Tracking. Und auch keine Anwesenheitserkennung via Wlan, aus verschiedensten nachvollziehbaren Gründen möchte ich keine derartige Datenübertragung, die via Web läauft oder auch nur laufen könnte.

Andererseits wäre eine lernfähige, wahrscheinlichkeitsbasierte Anwesenheitserkennung (innen!) schon ganz nützlich.

Jeden Tag eine gute Tat:
@Pythonf @KernSani - ihr kennt euch schon? Falls nicht, dann jetzt.
RPI 4 - Jeelink HomeMatic Z-Wave

Pythonf

Ich bin tatsächlich noch an dem Thema dran, allerdings verfolge ich einen neuen Ansatz.
Aktuell gibt es noch keinen Code, den ich mit gutem Gewissen veröffentlichen könnte  ??? aber ich arbeite im Grunde an dem Reinforcment-Learning (RL) Ansatz.
Dazu bediene ich mich den sehr aktuellen  tf_agents. Ich war auch dabei, das ganze selber zu schreiben und dann kam Google und hat eine neue RL Bibliothek veröffentlicht.
Zum Thema Anwesenheitserkennung gibt es schon spannende Artikel (https://www.researchgate.net/publication/304190843_Resident_activity_recognition_in_smart_homes_by_using_artificial_neural_networks).
Wie immer gilt natürlich, je höher die Anzahl der Sensoren, desto besser das Ergebnis. Allerdings geht es mir weniger darum zu erkennen, was der Nutzer aktuell macht sondern mehr darum, was das smartHome machen soll.

Gehn wir mal deinen konkreten Vorschläge an:
ZitatDer soll nicht fahren, wenn ich nicht will, dass er fährt - wegen Regen oder wegen ... er müsste aus meinem bisherigen Verhalten lernen. Leider dürften die verfügbaren Werte nicht reichen.
Ich könnte mir vorstellen, dass sich so ein Szenario mit einem speziell dafür trainierten Modell sogar recht gut realisieren lassen würde. Vorausgesetzt, der Rasenmäher fährt immer zu ähnlicher Zeit und er fährt zu dieser Zeit nicht, wenn es regnet könnte ich mir einen schnellen Lernerfolg vorstellen.
Ein faszinierendes Beispiel, wie schnell RL Modelle lernen können findet man hier: https://www.youtube.com/watch?v=XiigTGKZfks (Ist nicht ganz, was wir hier versuchen, aber auch RL)

ZitatDenn bei mir sowie meinen Familienmitgliedern gibt es kein GPS-Tracking. Und auch keine Anwesenheitserkennung via Wlan, aus verschiedensten nachvollziehbaren Gründen möchte ich keine derartige Datenübertragung, die via Web läuft oder auch nur laufen könnte.
Hier kann ich mir gut vorstellen, dass man am Verhalten eine Klassifizierung mit einigermaßen akzeptablen Ergebnissen, in starker Abhängigkeit der verfügbaren Sensoren, realisieren könnte. Die Frage ist nur, wie man das Modell trainiert. Wie kann ich validieren, dass die Vorhersage des Systems stimmt? Ich kann vorhersagen, was als nächstes passieren könnte, aber hilft mir das weiter?


Thorsten Pferdekaemper

Hi,
sorry, dass ich hier so selten antworte. Ich bastle momentan lieber an FUIP...
Zitat von: Pythonf am 22 Februar 2019, 13:13:47
Wenn wir eine sinnvolle Sammlung von Belohnungsfunktionen finden, dann ließe sich daraus möglicherweise ein sehr interessantes Modell für verschiedenste Szenarien erstellen.
Bei der Heizungssteuerung könnte man da irgend etwas mit der Differenz von Soll- zu Isttemperatur nehmen und dazu noch eine Größe, die was mit dem Energieverbrauch zu tun hat, wie z.B. der Vorlauftemperatur. Je nachdem, was man im System überhaupt beeinflussen kann und will.

Bei den Themen rund um Anwesenheitswahrscheinlichkeit drängt sich mir eher ein anderer Zweig der KI auf, der mit Markow- und Bayes-Krams zu tun hat. ...also was man so normalerweise im Robotics-Bereich macht. Es kann sein, dass das auch so langsam mit NNs zusammenwächst, aber ich bin da überhaupt nicht auf dem neusten Stand.
Im Prinzip hat man da einigermaßen feste (Bewegungs-)Modelle, die mit Wahrscheinlichkeits-Anteilen "angereichert" sind. Z.B. weiß man, (ungefähr) in welche Richtung ein Roboter gerade fährt und (ungefähr) wie schnell er ist. Dadurch kann man nach einer bestimmten Zeit eine Wahrscheinlichkeitsverteilung ermitteln, die (ungefähr) den Standort angibt. Weiterfahren vermindert die Genauigkeit (d.h. die Varianz geht hoch). Wenn man dann (von Zeit zu Zeit) irgendwelche Wegmarken feststellt, dann erhöht das die Genauigkeit (d.h. Varianz vermindert sich).
Vielleicht könnte man so etwas auch für die Anwesenheit (in einem bestimmten Raum) machen. Wenn z.B. jemand auf einen Lichtschalter (-Taster) drückt, dann kann das System wissen, dass da gerade jemand ist (war). Geht das Licht an, dann ist es sehr wahrscheinlich, dass in dem Raum danach jemand ist. ...usw.
Klar, da ist nichts ausgegorenes, aber hier geht's ja eher um Ideen.

Gruß,
   Thorsten
FUIP

curt

Ja, daher fand ich die Sektoren-Idee (Haus in Sektoren aufteilen) von @KernSani so interessant - siehe hier: https://forum.fhem.de/index.php/topic,98594.0/topicseen.html . Er baut da offensichtlich schon aktiv dran.
RPI 4 - Jeelink HomeMatic Z-Wave

Pythonf

ZitatBei den Themen rund um Anwesenheitswahrscheinlichkeit drängt sich mir eher ein anderer Zweig der KI auf, der mit Markow- und Bayes-Krams zu tun hat. ...also was man so normalerweise im Robotics-Bereich macht. Es kann sein, dass das auch so langsam mit NNs zusammenwächst, aber ich bin da überhaupt nicht auf dem neusten Stand.

Das ganze ist mehr oder weniger aktuell ein sehr spannendes Thema! Wir sind vom Markov decision process garnicht so weit entfernt. Ich bin kein Mathematiker geschweige denn Statistiker aber ich versuch das gerne hier kurz etwas zu erklären. Am einfachsten schaut man sich hierbei den Artikel an: https://de.wikipedia.org/wiki/Markow-Entscheidungsproblem. Wir brauchen also eine Funktion, hier pi: S->A die für einen Zustand S eine Aktion A ergibt. Um das zu vereinfachen vernachlässigen wir hier den Lernprozess, im Grunde ist es ein Belohnungssystem, wo für gute Entscheidungen positive und schlechte Entscheidungen negative Punkte vergeben werden. Die möglichen Zustände werden gerne in einer Q-table dargestellt. Da man aber sehr schnell sehr viele Zustände bekommen kann, kann man diese Q-table auch durch ein Neuronales Netzwerk approximieren. Das ist dann das so genannte Q-learning oder auch Reinforcment Learning/ Bestärkendes Lernen. Hier versuche ich aktuell ein Modell zu schreiben, dass mit FHEM Daten umgehen kann. Vermutlich ist eine erste Version, die mal etwas berechnet schon hilfreich, um darauf aufbauend konkrete Systeme zu entwickeln. Die Anwesenheitserkennung wäre ein so konkretes System, das sehr spannend und auch sehr sinnvoll eingesetzt werden könnte.

Ich bin gespannt, wo wir hier gemeinsam noch hinkommen können!

curt

Zitat von: Pythonf am 19 März 2019, 00:50:55
Ich bin gespannt, wo wir hier gemeinsam noch hinkommen können!

Ich bin ja zu jeder Schandtat bereit, gern bei mir testweise auch ein neues System. Aaaaber ich darf Dich daran erinnern, dass hier FileLog angesagt ist. Nicht jammern, bitte.
RPI 4 - Jeelink HomeMatic Z-Wave

Pythonf

Aaaaber ich darf Dich daran erinnern, dass hier FileLog angesagt ist
Dafür hab ich mal eine kleine Funktion geschrieben: https://github.com/PythonFZ/FHEM-FileLog-Reader
FileLog sollte also nun doch auch funktionieren. Zumindest für die Testphase.

Prof. Dr. Peter Henning

Ich habe gerade eine Bachelor-Arbeit vergeben, bei der mit einem NN die Aktivitätsmuster in FHEM überwacht werden sollen. Mit dem Ziel, Abweichungen zu erkennen - genauer gesagt, einen Hinweis auf die eventuelle Hilflosigkeit einer pflegebedürftigen Person zu bekommen.

LG

pah

Eisix

Hallo Pythonf,

beziehe mich auf dein posting
Zitat
https://forum.fhem.de/index.php/topic,98594.msg920921.html#msg920921
Ich denke bei mir kann ich relativ genau sagen wer im Haus ist ~90% und zu vielleicht 50% wo die Personen gerade sind. Am Eingang ist eine Netatmo Welcome. Wlan-Geräte kann ich pro Stockwerk erfassen. Ca. 35% der Räume sind mit Bewegungsmeldern ausgestattet. Das ganze dann noch kombiniert mit den eingeschalteten Geräten und welches TV-Program gerade läuft dürfte ein erschreckend genaues Profil ergeben.
In wie weit das zum trainieren reicht kann ich nicht beurteilen.
Mit einer Netatmo Welcome in jedem Raum wirst du auf jeden Fall dein NN vollautomatisch trainieren können.

Gruß
Eisix


Pythonf

Zitat von: Prof. Dr. Peter Henning am 19 März 2019, 15:25:03
Ich habe gerade eine Bachelor-Arbeit vergeben, bei der mit einem NN die Aktivitätsmuster in FHEM überwacht werden sollen. Mit dem Ziel, Abweichungen zu erkennen - genauer gesagt, einen Hinweis auf die eventuelle Hilflosigkeit einer pflegebedürftigen Person zu bekommen.

LG

pah

Sehr spannendes Thema. Ich habe hier mal meine Datenverarbeitung vor dem Einsatz in meinem Modell zusammengestellt. Man darf sich gerne inspirieren lassen: https://github.com/PythonFZ/FHEM-RL/blob/master/DataGathering_Example.ipynb

ZitatMit einer Netatmo Welcome in jedem Raum wirst du auf jeden Fall dein NN vollautomatisch trainieren können.
Ja, das wäre sicherlich der Optimalfall. Die Frage ist nur, was soll man dann noch vorhersagen? Die Daten ergeben sich dann ja direkt aus den vorhandenen Messwerten.

Lg
Fabian

Prof. Dr. Peter Henning

Das Problem ist erstens die Akzeptanz: Ältere Menschen dulden in der Regel keine neuen technischen Geräte in ihrer Umgebung - im Extremfall werden diese mutwillig beschädigt. Also fällt für den Zweck der Notfallüberwachung aus, alle Räume mit Bewegungsmeldern auszustatten. Auch Wearables zur Notfallmeldung sind ungeeignet - die werden eben nicht getragen. Nach 4 Stunden hilflosen Liegens im Flur äußerte eine Person aus meiner Verwandschaft: Es sei ja kein Notfall gewesen.

Das Problem ist zweitens die Vollständigkeit der Überwachung. Eine mir bekannte Firma versucht gerade, zur Sturzkontrolle Kamerabilder auszuwerten. Aus den Winkeln zwischen Schultergürtel und Beckengürtel lässt sich sehr gut schließen "Person liegt am Boden" - aber was, wenn ein Sessel im Weg ist? Im FZI Karlsruhe (in dem ich gerade mein Forschungssemester verbringe) wurde ein Bodenbelag moit Sensorik entwickelt, der ebenfalls liegende Personen erkennt.

Die obengenannte Person lag aber auch schon 8 Stunden nackt in der Dusche und konnte sich nicht mehr bewegen - beide Systeme sind also in der Realität ungeeignet. Wenn ich allerdings feststellen kann, dass so einfach Sachen wie ein Toilettenbesuch (mit entsprechendendem Wasserverbrauch) seit Stunden nicht mehr vorgekommen ist, sieht das schon anders aus.

Ziel einer Hilfestellung für pflegebedürftige Personen kann also nicht sein, viel Technik zu installieren - sondern ganz alltägliche Abläufe auf Abweichungen zu überwachen.

LG

pah

Pythonf

#26
Eine Möglichkeit, über die ich im Zusammenhang mit RL nachgedacht habe, wäre ein NN (ob jetzt RNN oder RL, etc. spielt hierbei erstmal keine Rolle) welches Aktionen voraus berechnet. Man kann nun sehr gut die Qualität dieses NN evaluieren. Je nach Anzahl der Personen und Sensoren werden hier sicherlich unterschiedliche Genauigkeiten erreicht. Wenn in einem Unfallszenario die Vorhersagen signifikant abweichen, dann könnte man einen Alarm auslösen (Nachricht auf Handy, etc..). Die Frage ist nur, wie man das ganze zeitlich regelt. Will man alle x Minuten eine Vorhersage treffen? Der grundlegende Gedanke wäre hier vermutlich ähnlich einem NN, welches ein Videospiel spielt zu wählen. Alle x Sekunden wird eine Vorhersage getroffen, bei der es sich entweder um den Zustand aller Sensoren oder bevorzugterweise um Änderungen an bestimmten Sensoren handelt. So könnte man dann auch in einem bestimmten Zeitrahmen reagieren.

Wie gut sich das ganze aber mit wenigen Sensoren decken lässt, ist schwierig. Aber wenn die Sensoren nicht direkt in das Leben der Personen eingreifen, dann dürfte eine ausreichende Installation ja durchaus möglich sein.

Die Frage ist aber durchaus, ob ein NN hier der vielversprechendste Ansatz ist. Gerade einen Toilettengang könnte man mit einfacheren Modellen möglicherweise besser überprüfen?

Eisix

@pah
Wenn keine Sensoren akzeptiert werden bleibt nur noch Strom und Wasserverbrauch als Datenquelle. Eventuell noch ein Mikrofon außerhalb des Wohnbereichs.
Bei Leuten die z.B. Sowas wie einen Fitbit akzeptieren ergeben sich aber diverse Möglichkeiten, Aufenthaltsort über BT, Sturzüberwachung, Wecken bei Feueralarm, Benachrichtigung zur Medikamenten Einnahme, usw.

@Pythonf
Die Welcome ist auch nur zum trainieren des NN gedacht und würde im Idealfall im Betrieb nur am Zugang zum Gebäude gebraucht.

Gruß
Eisix

KernSani

Ich finde den Ansatz durchaus interessant... und würde das gerne - soweit ich das kann - in homezone irgendwie unterstützen...
1. Observation - hast du ja schon gesagt, bekommst du über die Logs
2. Aktion: wäre die Änderung der Anwesenheit - das ist genau die Herausforderung, die ich versuche zu lösen - Zeitpunkte der Anwesenheit in einer Zone kann Homezone liefern (oder einfach eine Auswertung der Bewegungssensoren) - der "wasp-in-abox"-Ansatz liefert in Einzelfällen (bei mir zumindest - wir machen Türen selten zu) auch einen Zeitraum gesicherter Anwesenheit, alles andere ist Spekulation...
3. Reward: Ich könnte mir vorstellen, dass ich Feedback über z.B. Alexa gebe ("Alexa, sage James, ich bin jetzt im Wohnzimmer")  - dass ich das konsequent mache (von der Restfamilie ganz zu schweigen) halte ich aber für eher unrealistisch. 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Pythonf

Zitat von: KernSani am 19 März 2019, 21:30:55
Ich finde den Ansatz durchaus interessant... und würde das gerne - soweit ich das kann - in homezone irgendwie unterstützen...
1. Observation - hast du ja schon gesagt, bekommst du über die Logs
2. Aktion: wäre die Änderung der Anwesenheit - das ist genau die Herausforderung, die ich versuche zu lösen - Zeitpunkte der Anwesenheit in einer Zone kann Homezone liefern (oder einfach eine Auswertung der Bewegungssensoren) - der "wasp-in-abox"-Ansatz liefert in Einzelfällen (bei mir zumindest - wir machen Türen selten zu) auch einen Zeitraum gesicherter Anwesenheit, alles andere ist Spekulation...
3. Reward: Ich könnte mir vorstellen, dass ich Feedback über z.B. Alexa gebe ("Alexa, sage James, ich bin jetzt im Wohnzimmer")  - dass ich das konsequent mache (von der Restfamilie ganz zu schweigen) halte ich aber für eher unrealistisch.

Das klingt nach einer realisierbaren Idee! Wir nehmen als Trainingsdaten die von homezone vorhergesagten Werte. Damit bilden wir dann quasi dein Modul 1:1 nach, haben aber den Vorteil, die nachfolgenden Werte im Voraus berechnen zu können. Zusätzlich dazu gibt es noch die Möglichkeit über User-Feedback (Alexa, Telegram, etc.) das Modell zu verbessern.