====== Modification de luminosité dans une pièce: Découverte de pattern sensorimoteur par deux objets ======
Ce scénario reprend le principe de //flux d'instances d'évènements// entre
les différents avatars définit dans [[scenario-nocaptor | une réflexion
sur la création de pattern pour un objet sans capteur]].
===== Introduction =====
==== Les objets ====
Dans une même pièce se trouve :
* Un système d'éclairage (lampe), avec interrupteur et capteur de luminosité.
* Une fenêtre équipée d'un store électrique, avec un interrupteur permettant de faire monter ou descendre plus ou moins le store (pas de capteur de luminosité).
==== Les variables ====
Au départ de ce scénario, les avatars n'ont pas encore identifiés de pattern
récurrents, il n'existe donc pas encore de variables internes (ou de **flux
d'instances**), uniquement des variables d'entrées continues correspondant aux
capteurs et actionneurs des objets.
* Pour le système d'éclairage les variables d'entrées sont :
- l'état de l'interrupteur du système d'éclairage, que nous nommeront V1:1.
- l'intensité lumineuse de la pièce, nommée V1:2.
* Pour la fenêtre équipée d'un store électrique :
- l'état de l'actionneur de store, nommée V2:1 (-1 : descendre le store, 1 : monter le store, 0 : sinon).
- Pourcentage d'ouverture du store, nommée V2:2 (allant de 0, le store est fermé, et 1 le store est ouvert).
===== Scénario =====
L'action se déroule dans le bureau de notre utilisateur, Billy,
et ce durant plusieurs semaines.
==== Point de vue de l'utilisateur ====
Billy, notre utilisateur, se lève et se rend dans son bureau. Faisant encore
nuit, Billy allume la lumière, il est 6h.
Vers 8h Billy sait qu'il fait jour dehors, il éteint donc la lumière et ouvre
en grand les stores électrique de sa fenêtre.
Ceux-ci reste ouvert jusqu'à ce que, vers 19h, Billy se rende compte
que le soleil se couche. Billy allume donc la lumière de son bureau,
puis ferme les stores.
Billy reste ensuite dans son bureau jusqu'à 22h, il éteint alors la lumière
avant de partir.
(oui, Billy travaille beaucoup plus qu'il ne le devrait).
==== Point de vue du système d'objets connectés ====
En se basant sur les actions de Billy, décrites précédemment,
nous pouvons supposer que les variables d'entrée du système
d'objets connectés varieraient, plus ou moins, comme présenté
sur les graphiques ci-dessous.
{{wiki:rplot_all_scenario_lum.png}}
Le but étant de voir comment le système
d'éclairage et le store pourraient arriver
à faire la relation entre la levée du store
et l'augmentation de luminosité, via leurs échanges.
{{wiki:rplot_v12_v22_relation.png}}
==== Point de vue du système d'éclairage (Orienté description du modèle) ====
Si nous prenons le point de vue du système d'éclairage,
celui-ci sera capable de découvrir, dans un premier temps,
des motifs liés à ses propres capteurs et actionneurs (puisque
aucun //flux// n'est disponible pour le moment).
Puis dans un second temps de faire le lien entre ses motifs et
ceux découvert par les autres objets de la société.
Nous allons voir plus en détail dans cette partie le fonctionnement
du système d'apprentissage de l'avatar du système d'éclairage.
=== Découverte d'évènements ===
La découverte de motifs récurrents à partir des entrées continues
que sont V1:1 et V1:2 est fait les couples
formés par des agents Découper et des agents Similarité paramétrés
de diverses manières.
== Découpe ==
Comme dit précédemment, le système d'apprentissage doit commencer
par essayer d'extraire des informations liés à ses variables d'entrées
avant d'essayer de les relier à un quelconque évènement "extérieur"
(de plus, à cette étape du scénario aucun flux n'est disponible pour
l'autre objet).
Ce travail de découpe est effectué par les agents Découper du système
d'apprentissage. Ceux-ci, suivant divers paramètres, vont "déplacer"
une fenêtre de découpe le long de la variable. Ces fragments de
variables sont décrit à l'aide d'histogrammes par les agents Découper.
{{wiki:decoupe.png}}
Ces fragments de variables sont évaluer via un feedback //d'intérêt//,
aidant ainsi à la sélection des paramètres de découpe par l'agent Découper.
== Création de Flux ==
La découverte d'évènements récurrents se fait à l'aide d'un couple
d'agent Découper et Similarité. L'agent Découper faisant varier
ses paramètres de découpe et l'agent Similarité faisant varier
ses paramètres de différenciation, les deux en fonction de la
variable d'entrée à laquelle ils sont associés.
La qualité des paramètres, évaluée à partir d'un feedback //d'intérêt//,
est sauvegardé dans un **espace de marquage** à trois dimensions
(la variable sélectionné, les paramètres de l'agent Découper et
les paramètres de l'agent Similarité).
Cet espace de marque sert à garder, dans un espace commun de recherche
de paramètres à tous les couples d'agents, la trace de l'utilisation de
certains paramètres et leurs qualités.
{{wiki:hemis_marquage.png}}
Une fois qu'un couple, ou plutôt l'agent Similarité d'un couple d'agent,
aura déterminé qu'un //concept d'évènement// est assez récurrent il créera
un //flux d'instances d'évènements// dans lequel il fera passer les //instances//
correspondants au //concept d'évènement// du flux, et auxquels pourra se connecter
les agents Association du système d'apprentissage, mais aussi les agents
Association des autres systèmes d'apprentissage.
{{wiki:flux_creation.png}}
Pour connaitre la similarité, ou plutôt le pourcentage de similarité, entre deux
instances d'évènement, l'agent Similarité utilise une fonction d'intersection des
histogrammes représentants les instances.
{{wiki:similarite.png}}
=== Partage d'évènements ===
A peu près même moment que le système d'apprentissage de l'éclairage
créé ses //flux d'instances//, des //flux d'instances externes// font
leur apparitions.
Une notation possible est présentée ci-dessous. Noté **F**, un flux est
identifié par l'ip de l'objet fournissant le flux et l'id de ce flux.
De la même manière sont notés **e** les //concepts d'évènements// associés
à un flux, il sont donc identifiés de la même manière que les flux, avec
id et ip.
{{wiki:flux_notation.png}}
Pour simplifier la notation pour le scénario, l'ip du système d'éclairage
sera 1 et l'ip du store électrique sera 2. L'ip 0 est considéré comme un
"localhost", se sont les flux identifiés comme personnels par l'objet,
le fait de donner un ip 0 pour identifié le "moi" est totalement
arbitraire, un flux pourrait garder l'ip de l'objet apprenant, cependant
les agents du système d'apprentissage, en particulier les agents Découper,
devraient être capables de différencier les flux personnels et les flux
extérieurs.
Ainsi le système d'apprentissage voit apparaître, à peu près au même moment,
des flux d'instances //interne// (avec un ip 0) et des flux d'instances
//externes// (avec un ip différent de 0).
Les couples d'agents formés par des agents Association et Similarité vont
alors rechercher différentes Association de concepts d'évènements possibles
et pertinents.
{{wiki:flux_association.png}}
Les Associations vont être faites en prenant prioritairement en références
les flux internes du système d'apprentissage. Cet aspect "égoïste" de
l'apprentissage est nécessaire pour éviter une redondance de l'apprentissage
dans tous les avatars de la société, et permet aussi une spécialisation
de ces mêmes avatars. En effet, les avatars d'objets possédant peu de
capteurs et d'actionneurs seront plus enclin a tenter d'associer des évènements
provenant de flux externes; à l'inverse des avatars d'objets possédant beaucoup
de capteurs et d'actionneurs seront plus enclin à se concentrer uniquement sur
le découpage de leur variables d'entrées et sur la découverte de concepts d'évènements
"intéressants".
==== Point de vue du store électrique (Orienté Scénario) ====
Dans le point de vue précédent, l'accent a été mis sur le fonctionnement
globale du modèle. De ce point de vue, au contraire, nous allons nous
concentré sur les suites logiques d'évènements pouvant arriver à un système
d'apprentissage.
=== Conception de flux d'instances ===
Comme dit précédemment, les couples Découper Similarité vont extraire
des //concepts d'évènements// et créer des //flux d'instances d'évènements//.
Ces flux pourraient correspondre à des flux RSS (ou tout autre outils permettant
le partage d'un "fil d'évènements"), ils seront ainsi mis à jour part l'agent
Similarité du couple associé, à chaque fois que l'agent Découper extrait une
nouvelle //instance d'évènement// correspondant au //concept d'évènement//
du flux.
Mon siteCeci est un exemple de flux RSS 2.0Sat, 07 Sep 2002 00:00:01 GMT
http://www.example.org
Actualité N°1Ceci est ma première actualitéSat, 07 Sep 2002 00:00:01 GMT
http://www.example.org/actu1
Actualité N°2Ceci est ma seconde actualitéSat, 07 Sep 2002 00:00:01 GMT
http://www.example.org/actu2
===== Problèmes =====
* Supposons que dans cette pièce nous rajoutons un chauffage électrique connecté, comment faire en sorte que les échanges entre les objets se "spécialisent" ?
Les évènements proposé par les flux d'instances du chauffage sont en effet peu utile pour le
système d'éclairage (peut être un peu moins pour le store),
le but ici serait qu'au flux externes d'un système, voir à tout l'objet proposant ces flux,
soit associé un feedback "d'utilité". Puisque les systèmes
d'apprentissage cherche prioritairement des associations avec pour référence leurs
flux d'instances internes, nous pouvons facilement l'imaginer évaluer l'utilité
d'un flux d'instances externes lui ayant permis ou non de trouver des motifs
avec pour références ses concepts personnels.
* Supposons maintenant que dans une autre pièce un système d'éclairage identique au notre soit installé, comment permettre que ce nouveau système d'éclairage apprenne plus vite avec l'aide de notre système d'éclairage ?
* En plus du feedback d'intérêt, il est censé il y avoir un feedback prédictif, comment un motif pourrait passer un "mode prédictif" s'il prend en compte des flux externes ?
* Comment les avatars pourrait arriver, de manière émergente, à un consensus concernant un motif, pour que celui soit "commun" à la société ou à un groupe ?