Archives de
Category: Recherche

La voiture autonome

La voiture autonome

Basiquement, le terme de voiture autonome désigne une automobile capable de fonctionner sans conducteur, autrement dit, capable de se déplacer d’un point A à un point B sans intervention humaine.

Historique :

On assiste aux prémices de la voiture autonome au début du XXème siècle, même si on est bien loin de ce que l’on peut connaître aujourd’hui. Dans les années 1920, l’homme est capable de conduire à distance depuis un autre véhicule par radio.

D’autres prototypes sont développés durant les décennies suivantes.

Au cours des années 1980, ces prototypes roulent sur des routes sans trafic, guidés par le système LiDAR (capteurs laser permettant de cartographier un environnement en 3D).

Durant les années 1990, on voit naître des véhicules circulant en contrôle automatique à 98% sur des routes avec trafic, exploités sur des circuits prédéfinis.

Tout s’accélère depuis les années 2000 avec l’intervention de l’armée américaine et ses grands challenges, notamment avec l’organisation d’une course durant laquelle les véhicules doivent parcourir plus de 200km à la frontière de la Californie et Nevada. En 2004, seulement 11.78 kilomètres sont parcourus, alors qu’en 2005, la course est terminée par cinq participants dont un en moins de sept heures.

En 2007, la course, devenue un parcours de 96 kilomètres dans un environnement urbain initialement d’une durée de moins de six heures, est finie en un peu plus de quatre heures par trois équipes, dans le respect du code de la route

Terminologie sur la notion d’autonomie :

Il existe plusieurs niveaux d’autonomie concernant la voiture :

 Niveau d’autonomie 
Niveau 0Aucun élément autonome sur la voiture
Niveau 1La voiture peut assurer 1 tâche autonome à la fois, comme par exemple un freinage automatique.
Niveau 2La voiture dispose d’au moins 2 éléments autonomes
Niveau 3Autonomie conditionnelle, le conducteur peut détourner son attention mais doit quand même être capable de reprendre la main en cas d’urgence.
Niveau 4Le conducteur peut relâcher son attention et même dormir
Niveau 5Voiture sans conducteur

Des défis et des problèmes :

Face à l’essor des voitures plus ou moins autonomes, de nombreux défis se dressent face au développement de cette technologie. En effet, ces véhicules fonctionnant sur des modèles, nécessitent une grande quantité d’images et de vidéos de tout ce qu’ils pourraient rencontrer durant leur utilisation. Il faut aussi trouver un moyen d’éviter les inclusions de règles comme par exemple « si x se produit, alors faire y« , type de raisonnement qui ne convient pas aux situations de la vie courante et de la route. La compréhension de l’environnement et de toutes les entités entourant le véhicule reste aussi un défi. Enfin, ces véhiculent doivent être capables de réagir dans des situations jamais rencontrées et non implémentées dans le modèle.

La voiture autonome pose aussi problème sur le plan éthique. En effet, imaginons une situation d’accident tuant soit les passagers, soit d’autres usagers de la route, la voiture doit dans cette situation faire un choix. Cela pose aussi problème sur le plan juridique car on ne sait pas qui blâmer dans ce cas-là ? Le fabriquant ? L’ingénieur qui a développé l’algorithme ? le client ?

Le plan de la sécurité est aussi impacté car qui dit voiture autonome dit informatique, et qui dit informatique dit piratage. Ces voitures pourraient être les cibles de pirates et mettre en danger leur utilisateur et/ou les autres usagers de la route.

Le développement de la voiture autonome continue donc d’être un sujet complexe, à aborder de manière consciencieuse et minutieuse afin d’assurer la sécurité de tous.

The Impacts of Technology on Learning in Higher Education

The Impacts of Technology on Learning in Higher Education

I attended my first conference about the impacts of technology on learning in higher education,organised by the team of APUI, at the University of Avignon.

At the beginning, Guillaume MARREL, a professor of Social Sciences at the University of Avignon, discussed the digital world as a cognitive technology. He pointed out several subjects in which the “arrays” interested me the most; Humans invented lists and arrays in order to represent their ideas. Lists are able to show how our ideas are sequenced. Hence, the representation of a list in the world of technology as a node that can introduce an information as well as a link to another node. Human- beings crossed lists to make tables ( known as arrays). However, this concept can alter meanings based on the context; In network, some links between tables are not directly related based on the meaning.

A sequence of 10 min debates started afterwards presenting other topics, followed by an interaction with the students to ask them about their opinions.

Another presentation had place by Ms.Nadia JACOBY, the CEO of “ Simone et les robots”, initiating a debate about the effect of technology on higher education.

She begins by stating the fact that technological inauguration in the educational field is not recent. It dates back to the 90s where the national plan in France was to start implementing internet in the higher education departments as well as the demand of French universities, between 2010 and 2020, to develop their online platforms.

The utility of technology was best shown during the pandemic. All of the French public universities were already using the LMS Moodle. Other platforms are also used, but they are less appreciated such as Discord. Not to mention the increase of jobs such “educational engineering ” that actually aims to assist professors to use technology and help develop new teaching techniques using technology.

I believe that this debate can pop up the following question: Will technology be able to replace the teacher?

 “Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is most important.”

– Bill Gates

Taken from :
www.binaryfolks.com

« Hacker » un jeu vidéo

« Hacker » un jeu vidéo

Un atelier pour la Fête de la Science 2022

Derrière ce titre volontairement accrocheur, se cache une initiation ludique à la programmation en Python, qui s’adresse à des élèves de collège et lycée. Il s’agira de faire fonctionner et de modifier une version écrite en Python, d’un des premiers jeux vidéo dits « d’arcade » (Blockade, 1976, voir photo).

  • Date : vendredi 14 octobre 2022
  • Lieu : CERI, salle stat 9
  • Horaires : 9h15 – 16h
  • Animateurs : Pierre Jourlin & Jarod Duret

Procédure :

  • Se connecter sur l’ordinateur avec l’identifiant et mot de passe donné sur papier par vos animateurs
  • Ouvrir un « terminal » (CTRL+ALT+T)
  • tapez « python3 -m pip install -U pygame --user » et appuyez sur <entrée>
  • tapez « geany & » appuyez sur <entrée>
  • copiez le code source suivant dans la fenêtre de l’éditeur :
import pygame
import time
import random
 
pygame.init()
 
# Définition des couleurs en composante (Rouge, Vert, Bleu) 
blanc = (255, 255, 255)
jaune = (255, 255, 102)
noir = (0, 0, 0)
rouge = (213, 50, 80)
vert = (0, 255, 0)
bleu = (50, 153, 213)
 
largeur_plateau = 600
hauteur_plateau = 400
 
plateau = pygame.display.set_mode( ( largeur_plateau, hauteur_plateau ) )
pygame.display.set_caption("Le Serpent Numérique du LIA")
 
horloge = pygame.time.Clock()
 
taille_bloc = 20
vitesse_serpent = 5
 
style_caractères = pygame.font.SysFont("bahnschrift", 25)
style_scores = pygame.font.SysFont("comicsansms", 35)
 
 
def votre_score(score):
    valeur = style_scores.render("Votre Score: " + str(score), True, jaune)
    plateau.blit(valeur, [0, 0])
 
def notre_serpent(taille_bloc, corps_serpent):
    for x in corps_serpent:
        pygame.draw.rect(plateau, noir, [x[0], x[1], taille_bloc, taille_bloc])
 
def message(msg, color, décalage=0):
    mesg = style_caractères.render(msg, True, color)
    plateau.blit(mesg, [largeur_plateau / 6, hauteur_plateau / 3+décalage])
 
def boucle_jeu():
    fin_jeu = False
    ferme_jeu = False
 
    x1 = largeur_plateau / 2
    y1 = hauteur_plateau / 2
 
    x1_change = 0
    y1_change = 0
 
    corps_serpent = []
    longueur_serpent = 1
 
    repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
    repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
 
    while not fin_jeu:
 
        while ferme_jeu == True:
            plateau.fill(bleu)
            message("Zut ! Vous avez perdu !", rouge)
            message("Appuyez sur J pour jouer encore", jaune, 20)
            message("ou sur Q pour quitter le jeu.", jaune, 40)
            votre_score(longueur_serpent - 1)
            pygame.display.update()
 
            for évènement in pygame.event.get():
                if évènement.type == pygame.KEYDOWN:
                    if évènement.key == pygame.K_q:
                        fin_jeu = True
                        ferme_jeu = False
                    if évènement.key == pygame.K_j:
                        boucle_jeu()
 
        for évènement in pygame.event.get():
            if évènement.type == pygame.QUIT:
                fin_jeu = True
            if évènement.type == pygame.KEYDOWN:
                if évènement.key == pygame.K_LEFT:
                    x1_change = -taille_bloc
                    y1_change = 0
                elif évènement.key == pygame.K_RIGHT:
                    x1_change = taille_bloc
                    y1_change = 0
                elif évènement.key == pygame.K_UP:
                    y1_change = -taille_bloc
                    x1_change = 0
                elif évènement.key == pygame.K_DOWN:
                    y1_change = taille_bloc
                    x1_change = 0
 
        if x1 >= largeur_plateau or x1 < 0 or y1 >= hauteur_plateau or y1 < 0:
            ferme_jeu = True
        x1 += x1_change
        y1 += y1_change
        plateau.fill(bleu)
        pygame.draw.rect(plateau, vert, [repas_x, repas_y, taille_bloc, taille_bloc])
        tête_serpent = []
        tête_serpent.append(x1)
        tête_serpent.append(y1)
        corps_serpent.append(tête_serpent)
        if len(corps_serpent) > longueur_serpent:
            del corps_serpent[0]
 
        for x in corps_serpent[:-1]:
            if x == tête_serpent:
                ferme_jeu = True
 
        notre_serpent(taille_bloc, corps_serpent)
        votre_score(longueur_serpent - 1)
 
        pygame.display.update()
 
        if x1 == repas_x and y1 == repas_y:
            repas_x = round(random.randrange(0, largeur_plateau - taille_bloc) / taille_bloc) * taille_bloc
            repas_y = round(random.randrange(0, hauteur_plateau - taille_bloc) / taille_bloc) * taille_bloc
            longueur_serpent += 1
        horloge.tick(vitesse_serpent)
    pygame.quit()
    quit()
  • Les animateurs vont vous expliquer rapidement ce code source
  • Enregistrez le fichier sous le nom « serpent.py » et revenez au terminal
  • Dans le terminal, tapez « python3 serpent.py« 
  • Jouez 2 ou 3 parties 🙂
  • Modifiez quelques paramètres élémentaires du jeu :
    • Les couleurs
    • Taille du plateau
    • Textes
    • Taille Serpent
    • Vitesse serpent
    • Style des caractères
  • Ajoutez quelques fonctions :
    • Changer longueur initale du serpent
    • Repas vert -> allongement de 1
    • Repas jaune -> allongement de 2
    • Repas rouge -> allongement de 3
    • allongement -> augmentation/réduction vitesse
    • Création d’un hall of Fame
    • 2 joueurs (difficile)
  • A tout moment, n’hésitez pas à demander de l’aide aux animateurs
  • A vous de jouer et à vous de créer !
L’informatique et les métaphores

L’informatique et les métaphores

Rocher du « Capucin », calanque de Figuerolle, La Ciotat.

Les ordinateurs sont des machines complexes, conceptuellement fondées sur la logique des propositions et l’algèbre de Boole. Ils ont été conçus par des cerveaux humains et ressemblent un peu à l’image que l’être humain se fait de son propre cerveau. Néanmoins, ils en sont physiquement assez éloignés et sont plutôt difficiles à comprendre.

Comprendre un objet, c’est en premier lieu le prendre et interagir avec. Le toucher, le sentir, l’observer sous toutes ses facettes et tenter de lui trouver une utilité. Ce n’est pas toujours évident, même avec des objets matériels. Ils peuvent être trop petits, trop grands, trop éloignés, trop froids, trop chauds… Dans ce cas, on tente de les comprendre de façon indirecte. En utilisant, par exemple, un microscope, un télescope, des outils de mesures, des raisonnements, des formules mathématiques…

Malheureusement, on peut prendre un ordinateur, l’observer dans tous les sens, le démonter, le remonter, utiliser son système d’exploitation pour lancer et utiliser des logiciels, son fonctionnement restera un peu magique, inaccessible. Et il sera même extrêmement difficile à celles et ceux qui l’ont conçu d’expliquer simplement comment il fonctionne.

Or, lorsque nous manipulons des concepts abstraits ou lorsque nous voulons communiquer à leur sujet, nous le faisons la plupart du temps en utilisant des termes liés à d’autres concepts, mieux définis, souvent plus concrets et pour lesquels nous avons une grande expérience. En bref : nous utilisons des métaphores. Par exemple, on parle souvent des idées comme s’il s’agissait de personnes : « la théorie de la relativité a donné naissance à un grand nombre de conceptions en physique », « il est le père de la biologie moderne », « ces conceptions sont mortes depuis le Moyen Âge », « ses idées vivront toujours », « voici une idée qui doit être ressuscitée », « il a insufflé une nouvelle vie à cette théorie ». (Lakoff & Johnson, 1980).

Vous verrez que les personnes qui interviennent dans votre formation vont faire un usage massif des métaphores, la plupart du temps sans même s’en apercevoir, et que vous aurez ainsi l’impression d’avoir assimilé instantanément des concepts inaccessibles au premier abord.

Il convient bien entendu d’être un peu vigilant, car aussi pertinente qu’elle soit, la cohérence d’une métaphore est souvent très étroite. Par exemple :

  • un ordinateur allumé produit de la chaleur, mais pas forcément de lumière
  • l’informatique en nuage ne se forme pas par évaporation des bits
  • les fenêtres des interfaces graphiques ne permettent pas d’aérer le code source
  • Les cases mémoires peuvent contenir la valeur 0, mais elles ne peuvent pas être vides…

Dans le même esprit, que se passe-t-il si l’on file on peut trop loin la métaphore du langage de programmation ?

Ce langage possède bien un vocabulaire, une grammaire, une sémantique, des mots-clés et des caractères spéciaux au lieu de mots-outils, des identificateurs au lieu de noms propres et de noms communs, des variables au lieu de pronoms, des classes au lieu de catégories, des instances au lieu de cas…

Mais savez vous comment faire une métaphore en Python, en Java, en C++, en SQL ?

Bibliographie

  1. Lakoff, G., & Johnson, M. (1980). Metaphors we live by. Chicago: The University of Chicago Press.
Artificial intelligence and algorithms: pros and cons | DW Documentary (AI documentary)

Artificial intelligence and algorithms: pros and cons | DW Documentary (AI documentary)

This documentary discusses the evolution of Artificial Intelligence as well as the pros and cons of algorithms. It also accentuates the ethical debate behind this technology.

AI is referred as “a new evolution that could fundamentally change life on our planet”. Will this revolution be used solely in the favor of humanity?

From amazon cashierless supermarkets, to x-rays screening of certain diseases, AI is making fast progressing many fields previously not corelated to the digital world.

However, this “hype” should be treated with caution. It is already raising alarming questions concerning the society, economy, and governance.

In order to know more, I invite you to watch the documentary below.

How to improve composite task oriented dialogue systems ?

How to improve composite task oriented dialogue systems ?

When a user interacts with an agent (a robot or a program), the dialogue is mainly made up of one or several domains – like a restaurant, a hotel or an attraction –  and one or several tasks – such as searching for a good restaurant which would fit our criteria or to book a hotel. This is a task-oriented dialogue.

A composite dialogue system has a composition of possible dialogue environments. So an agent which includes a composite dialogue system can talk about several domains and do several tasks.

Nowadays, composite task-oriented dialogue systems are efficient to satisfy different tasks about different domains (subjects) such as finding and booking a restaurant or a hotel. However these domains and tasks are defined during the learning step and adding a new domain or task is disabled after this step.

This is due to the representation of the information by the system, let us explain that in this article !

How does a task-oriented dialogue system work ?

Imagine you talk with an agent, the language used in the dialogue is the natural language. To talk with you, the agent needs to translate the natural language into a semantic representation (a language that it understands), it is the ontology. To do so, the dialogue system in the agent uses a Natural Language Understanding module (NLU) and it uses a Natural Language Generation module (NLG) to convert the semantic representation into a natural language.

During the translation, the dialogue system translates each term of the dialogue into dialogue acts, slots and values (Delexicalisation), and puts these on a vector (Vectorisation) to process the request. After the processing, the result is a vector and the DS needs again to transform it into dialogue acts, slots and values (Devectorisation then Lexicalisation).

For example, asking an agent to find the address of an american food restaurant in San Jose will look like that :

So the agent informs the user that there is an American food restaurant in San Jose at the 71th North San Pedro Street.

Improve the vector representation

Currently, the representation of the information in a vector is a master representation, i.e. for one domain (e.g. Restaurant) there are many slots (e.g. food, city, etc) and in one slot there are many values (e.g. Italian, French, Chinese (for food)). This representation is defined during the learning step and it is domain dependent, i.e. adding a value or a slot after the learning phase is disabled.

To improve this representation there is the summary representation. There is no need to know the value but only if there is one or not. Adding a new value is now possible, but the issue of the domain dependency remains.

The representation can be definitely improved with the domain independent parameterization (DIP). It is the same representation as the summary one but the slots in the vector are separated into subvectors so it is now allowed to add values and slots in the representation.

To make the connection with the previous representation : for a domain (e.g. restaurant) there is firstly a vector with the active task (e.g. finding), some requested slots (e.g. food, city and price range) and slots values. Then with the new representation there is one general subvector with some slot independent information – such as the active task, the number of slots, etc – and different slots which do not contain values, but just the information about the presence of the value, 1 if it is present, 0 elseway.

Improve the architecture of the model : architecture based on the DIP representation

The left representation on the illustration is the classic representation of a neural network, i.e. the input module is a vector, the forward module is a layer (matrix) and the output module is also a vector. The issue with this representation is the same as before : it needs to relearn the model to add new values or slots.

That is why, based on the DIP representation, the layer could be composed of as many subblocks as slots in the input module. The information is symmetrical with respect to the diagonal. The aim of this representation is to enable the slot addition and the slot permutation invariance without having to relearn the model.

Centralisme vs Répartition

Centralisme vs Répartition

Écrire un programme informatique, c’est écrire. Même s’il s’agit seulement de décrire des connaissances, des informations, des données et d’exprimer comment elles peuvent évoluer sans perdre leur cohérence et même si le langage de programmation utilisé reste formel, sec et froid, sans ambivalence, sans métaphores, c’est encore écrire.

Si pour chaque problème, on voulait classer les différents algorithmes et leur implémentations, on aurait un ordre partiel, représenté dans un graphe acyclique orienté. Ils seraient rangés par couches :

  • les algorithmes d’une même couche seraient incomparables, car meilleurs sur certains aspects, inférieurs sur d’autres.
  • les algorithmes d’une couche de niveau n seraient supérieurs sur tous les aspects aux algorithmes des couches de niveau inférieur à n

Comme pour le langage naturel, la combinatoire induit que toute phrase raisonnablement longue que l’on écrit, n’a très probablement jamais été écrite. Vérifiez par vous-même : copiez une phrase de ce texte et cherchez la, telle qu’elle sur internet. Vous devrez probablement l’encadrer avec les guillemets du 3 avant de la proposer à votre moteur de recherche favori.

Il est donc difficilement imaginable de créer un programme qui écrit des programmes. Sauf, évidemment, si le problème a traiter est extrêmement bien défini. Le souci, c’est qu’écrire un programme est indissociable de la tâche qui consiste à définir précisément le problème à traiter : le cahier des charges.

Dans tous le processus de développement logiciel, nous sommes donc contraints de faire comme dans l’écriture en langue naturelle : nous puisons nos idées dans notre culture, nos connaissances et notre représentation du monde, pour produire des séquences ordonnées de symboles qui ont un sens, dans le contexte de nos représentations.

Ainsi, dans les premières trois ou quatre décennies de l’informatique, comme les microprocesseurs n’avaient qu’un seul noyau, étaient au mieux associés à un co-processeur arithmétique, n’étaient pas connectés en réseau, il n’y avait aucune incitation à se poser la question d’écrire des algorithmes parallèles, concurrents ou de concevoir des architectures distribuées. Quand nous concevons des machines, elles sont souvent à notre image. Nous prenons alors comme modèle notre cerveau, ou plutôt ce que nous savons, ou croyons savoir de son fonctionnement. C’est ainsi que nous avons développé les approches logiques, symboliques et les approches connexionnistes.

Ce sont les avancées de la science et de la technologie, puis des avancées matérielles qui nous ont incités à changer de style d’écriture et lieu de s’inspirer du cerveau humain, nous avons commencé à nous inspirer des sociétés humaines et à concevoir des approches dites décentralisées.

A ce propos, saviez-vous que « L’existence de sociétés hiérarchisées et inégalitaires n’est pas le résultat d’un long processus naturel et achevé, mais ces formes de gouvernance ont toujours coexisté avec des formes de sociétés égalitaires » ?

Explainable Artificial Intelligence (XAI)

Explainable Artificial Intelligence (XAI)

Au cours de ces dernières années, l’intelligence artificielle a vu son utilisation croître de façon exponentielle. Si celle-ci est présente dans de nombreux domaines,  c’est un aspect particulier de l’Intelligence Artificielle qui va nous intéresser ici : l’ XAI (explainable AI). Ce principe désigne la capacité d’une IA ne pas s’intéresser uniquement à l’acuité des décisions qu’elle propose mais également aux raisons qui ont amené cette décision. Cela dans le but de donner à l’utilisateur les moyens de comprendre et d’analyser les résultats. Ce domaine présente, en majorité, deux grandes dimensions : l’interprétabilité et l’explicabilité.

l’explicabilité donne des informations sur le « raisonnement » de l’algorithme de Machine Learning et sur les données qu’il a utilisées. Ces informations sont destinées prioritairement aux experts de l’IA, car elle nécessitent une compréhension des éléments techniques du modèle et de l’analyse des données.

L’interprétabilité pour sa part a pour rôle de fournir l’informations dans un format compréhensible par tous. Il s’agit souvent de « traduire » les explications en éléments « interprétables » par une personne travaillant dans le domaine considéré mais sans connaissances spécifiques en IA.

Notons que ces deux termes sont souvent associés, mais qu’il est important de bien savoir dissociés les Notons que la frontière entre ces deux catégories n’est pas très précise et leurs dénominations sont même parfois inversées. Il est important cependant de garder à l’esprit les différences en termes de cible visée : expert de l’IA ou non.

Pourquoi avons-nous besoin de l’interprétabilité et de l’explicabilité? Ces éléments permettent en premier de renforcer, ou d’instaurer, la confiance des utilisateurs envers l’IA, en montrant sur quels éléments sont prises les décisions et en démystifiant les erreurs des systèmes. Mais ces éléments permettent aussi de répondre aux questions de conformité réglementaire : différents textes réglementaires sont en effet rentrés en vigueur, en Europe et en France notamment, qui imposent des règles sur le traitement des données, pour des raisons éthiques le plus souvent (respect des informations personnelles, lutte contre les discriminations, etc.). Ceux-ci incluent parfois directement la nécessité de pouvoir expliquer sur quels éléments sont basés les décisions. Dans tous les cas, pour pouvoir démontrer le respect, ou non, de ces textes, une approche de type XAI est indispensable.

On distingue trois étapes dans l’explicabilité de l’IA :

En premier lieu, l’explication de la pré-modélisation. Celle-ci permet de comprendre et de décrire les données utilisées pour développer le modèle.

On a ensuite la modélisation explicable qui permet de développer des modèles dits intrinsèques simples.

Enfin, la post-modélisation permet d’extraire des explications afin de décrire les modèles presque développés.

À titre d’exemple, on peut citer les Local Interpretable Model-Agnostic Explanations, autrement dit les LIME. Ces derniers, expliquent une décision donnée (aspect « local ») en modélisant autour de cette donnée les décisions du système IA étudié par un modèle simple et intrinsèquement interprétable. Cela permet « d’expliquer » le comportement du système autour de l’instance (la donnée) d’intérêt.

Pour finir, il faut évoquer SHAP (shapley additive explanations) qui est une approche issue de la théorie des jeux. Cette approche est également « model agnostic » : elle permet d’expliciter les sorties de n’importe quel modèle d’apprentissage automatique. Cette approche est basée sur les valeurs de Shapley. Pour une instance précise qui a amené une décision donnée, les valeurs de Shappley calculent l’importance de chaque « feature » (les caractéristiques de l’entrée) dans la décision. Précédemment cité, les valeurs de Shapley proviennent donc de la théorie des jeux de coalition. Et cette méthode a pour but d’expliquer certaines prédictions individuelles. Finalement, Shapley présente plusieurs propriétés intéressantes telles que l’efficacité ou la symétrie.

Article rédigé suite à une conférence découverte recherche en L1 au CERI.

Les voitures autonomes : rouler sans permis et sans risque

Les voitures autonomes : rouler sans permis et sans risque

/

Qu’est ce qu’une voiture autonome

Pour commencer, un dispositifs autonome est un dispositif fonctionnant de manière indépendante c’est à dire avec une intervention humaine partiel ou inexistante.

Les voitures autonomes sont des véhicules capables de garder la voiture sur la route, respecter les limites de vitesses ainsi que de freiner d’urgence. Tout cela est rendu possible grâce à un dispositif présent sur les nouvelles voitures. Il existe plusieurs niveaux d’autonomies allant du niveau 0 jusqu’au niveau 5:
-niveau 0:Déclenchement d’avertissements
-niveau 1: Aide à la conduite (hand on)
-niveau 2 : Autonomie partielle (hand off)
-niveau 3 : Autonomie conditionnelle (eyes off)
-niveau 4 : Haute autonomie (mind off)
-niveau 5 : Autonomie complète (sans volant)

L’histoire de la voiture autonome

Depuis les années 1920 la conduite à distance est rendu possible depuis une autre voiture par radio. Dans les années 50 que les premiers prototypes interagissant avec des câbles magnétiques apparait dans la soude d’un circuit. En 2005 le cap des 200 kilomètres est franchit, en 2007, la voiture est capable de parcourir 96 km en moins de 6h tout en respectant les règles de circulation. Mais c’est à partir de 2010 que tout s’accélère avec les tests de système autonome, une aide financière importante de la part des plus grands pays du monde comme la Chine ou encore les États-Unis. De nouvelle concurrence apparait avec entre autre Google et Tesla.

Comment fonctionne une voiture autonome

Plusieurs domaine intervienne dans le fonctionnement d’une voiture autonome: la vision par ordinateur, la fusion des capteurs, la localisation.

La vision par ordinateur permet de représenter l’environnement de la voiture en mouvement grâce à de la détection visuelle, à l’aide de caméras, de radars, de capteurs d’ultra son et de LidaR (laser).
Le vision des capteurs combine plusieurs informations différentes issus de plusieurs sources.
La localisation rends plus précis le positionnement de la voiture grâce à l’aide de l’utilisation du GPS précis d’un à deux mètres ainsi que des capteurs mesurant la distance exacte par rapport à des repères (utilisation de la trilatération). De plus, la localisation utilise un modèle d’apprentissage profond, il est préférable de posséder un gros modèle plutôt que des erreurs en cascade.

L’impact social de ces voitures

La création de ces voitures ont un impact important sur la société actuelle ainsi que sur l’industrie automobile. En effet, elle entraine des changements technologiques majeurs et une stagnation du nombre de voiture par personne, un utilisateur garde sa voiture de plus en plus longtemps.
Il y a un impact sur la santé et le quotidien des usagers, Tout d’abord le nombre d’accident mortel diminuerai fortement mais en contre partie, on pourrait observer une augmentation du trafic. Ceci entrainerait une forte augmentation de la pollution ainsi que des nuisances sonores mais aussi une augmentation du sédentarisme car moins d’effort physique pour les usagers (marche, vélo). Enfin, il pourrait y avoir un problème d’éthique; prenons un exemple: une voiture autonome roulant très vite, une voiture qui bloque un coté de la route, et des piétons marchant sur l’autre coté. La voiture doit faire le choix de soit s’écraser violemment contre la voiture à l’arrêt et ainsi tuer les passagers en son bord au bien protéger les passagers de la voiture et écraser, faire un écart pour éviter la voiture à l’arrêt et ainsi écraser les piétons.
Il y aura un impact sur la planification urbaine . En effet les voitures étant autonomes il y aurait moins de signalisation sur les routes et une baisse radicale des stationnement.
En ce qui concerne la sécurité, la collecte d’information sur le trajet serait un impact sur la vie privée des utilisateurs et impacterait en conséquent leur vulnérabilité.

Article écrit par Erwan VINET, Akram OUMIMOUNE et Théo ARMAGHAN

Reconnaissance du locuteur : Etat de l’art

Reconnaissance du locuteur : Etat de l’art

I- Le signal de parole 

D’après Fourier, un signal est la somme des cosinus et des sinus. En effet, tout en décomposant un signal periodique, les sinus et les cosinus qui le composent vont signaler une fréquence précise, caractéristique d’un son.

Ceci montre qu’il y a de nombreuses fréquences différentes caractérisant le son de divers objets. À titre d’exemple, la fréquence d’échantillonnages : large bande 16000 valeurs par seconde (permet de garder une bonne qualité, quelques centaines de hertz à 8 kHz), le téléphone (bande étroite) 8000 valeurs par seconde etc.

Nota bene: un signal d’une seule seconde correspond à 1600 valeurs.

II- Le spectrogramme et la paramétrisation acoustique

  1. Le spectrogramme:
Exemple d’une partie d’un spectrogramme ( tirer de : https://www.researchgate.net)

Le spectrogramme est une représentation  qui montre la variation du signal en fonction de temps : ce qui se passe c’est quelque chose de reconnaissable qui correspond à une réalité statistique.

La représentation est divisée en plusieurs parties, normalement au bout de chaque signal ( 10 ms) et les amplitudes de fréquences -qui permettent la caractérisation de son (ils se diffèrent en chaque point) -qui le composent seront analysées . 

2. La paramétrisation acoustique:

 Toutes les 10 ms on extrait le spectre du spectrogramme , assez court (pas de coïncidence entre deux secondes) mais assez long pour qu’il y ai de l’information.

Une transformée de Fourrier (passage de temps vers les fréquences) aura lieu avant l’utilisation d’une échelle de barque.

Actuellement, un système end-to-end est adopté : Il utilise directement le signal de parole.

III- La reconnaissance du locuteur

Dans le but d’identifier l’identité d’un locuteur, une signature de base est utilisée. Par la suite, il y aura une comparaison avec un autre locuteur, selon les deux signatures, et une décision est prise (rejeter ou accepter, selon une distance de similarité, supérieur ou inférieur à un seuil).

Aperçu historique: Jusqu’aux années 2000, il y avait des systèmes statistiques insuffisant.  Il y avait uniquement une approche avec un vecteur de taille variable. L’idée révolutionnaire était de transformer le signal de vecteur en taille variable en un vecteur de taille fixe. Ainsi, dans le but d’identifier le locuteur, un calcul de la distance séparant les deux vecteurs.

Depuis 2010, les réseaux de neurones prennent les vecteurs et les mettent dans une multitude de couche (convolutions1 munie d’un résiduelle permettant d’augmenter le nombre de paramètre tout en apprenant) ; il arrive à une couche de vecteur fixe représentant le locuteur. Il y a un passage par un classifieur là où il passe le vecteur fixe. Les lost functions maximises les bonnes probabilités et diminuent les mauvaises probabilités sur chaque session ainsi que sur la somme.

Apres ces étapes, un calcul de distance entre les deux vecteurs fixes permet de comparer les similarités: si les similarités sont grandes alors c’est le même locuteur, sinon ce n’est pas le même .

1- Convolution : on prend un filtre et on calcul chaque réseau et puis on se déplace, ainsi de suite. Maintenant, on prend de chaque case un résumé/ minimum…  Chaque filtre passe à chercher une différente caractéristique.  L’initialisation est aléatoire et chaque itération fait une tâche différente. Il y a un pulling  à la fin.

Article écrit par Kinda CHAMMA, suite à une conférence avec un enseignant-chercheur du CERI, Driss MATROUF.