We zien meer en meer toepassingen van kunstmatige intelligentie in ons leven, onder andere met stemassistenten. Maar bijna al die toepassingen vereisen dat je heel veel persoonlijke data aan een derde partij levert. Snips bewijst dat het ook anders kan, en we leggen in deze Denkwerk uit hoe.

tech
Koen Vervloesem

In een ander artikel in dit nummer van PC-Active lees je hoe je Snips [1] op een Raspberry Pi installeert en ermee je eigen stemassistent bouwt. Snips wordt door de makers omschreven als een "decentralized, private by design voice assistant". Gedecentraliseerd omdat andere aanbieders van stemassistenten de touwtjes in handen hebben over welke apps je erop draait en private by design omdat bij andere aanbieders alles wat je tegen hun stemassistent zegt naar hun servers wordt verstuurd.

Het Franse bedrijf achter Snips heeft een andere visie: een stemassistent die je niet afluistert, die zoveel mogelijk taken op het apparaat zelf uitvoert en die de makers van Snips zo weinig mogelijk macht geeft. Die visie leggen de makers uiteen in hun 113 pagina's tellende whitepaper [2] die ze naar aanleiding van de Snips AIR token sale publiceerden, waarmee ze hun applicatiewinkel op een blockchain willen draaien.

Geen privé-informatie
Als je aan Google Home vraagt hoeveel "2+5" is, gaat je spraakopname naar de servers van Google, wordt die daar geanalyseerd, herkent de software dat je vraagt naar de som van 2 en 5, berekent die het resultaat (7), zet het antwoord om in spraak en stuurt dat terug naar je Google Home, die het antwoord uitspreekt.

Je vindt het waarschijnlijk niet zo erg dat Google weet dat je de som van 2 en 5 vraagt, maar dit voorbeeld toont aan hoe absurd de werking van veel stemassistenten eigenlijk is. Het voorgaande kun je perfect allemaal op je eigen apparaat draaien zonder dat er informatie op internet gestuurd moet worden.

En dat doet Snips: alles wat er op je eigen apparaat kan draaien, gebeurt daar. De training van de AI die je spraak moet herkennen gebeurt op de servers van Snips, maar daarin zit geen privé-informatie. De Snips-apps die je spraak herkennen en erop reageren, draaien volledig op je eigen apparaat en geen enkele server krijgt te zien of te horen wat je aan je Snips-assistent thuis vraagt.

Spraakherkenning
De eerste stap in een conversatie met Snips is de wake word detector. Die draait continu en detecteert wanneer je de stemassistent aanspreekt, standaard met "Hey Snips". Ook bij veel andere stemassistenten draait deze component op het apparaat zelf, omdat de stemassistent dan sneller kan reageren. Maar een groot probleem zijn 'valse alarmen': de stemassistent denkt dat je hem aanspreekt hoewel je helemaal niet zijn naam hebt gezegd. Als de rest van de stappen dan in de cloud draait, wordt je spraak na zo'n vals alarm naar internet gestuurd, terwijl je op dat moment misschien net een privégesprek met je huisgenoten aan het voeren bent.

snips offline pipeline 2Snips draait alle stappen van zijn spraakherkenning lokaal

 

Daarom draaien bij Snips de andere stappen ook op je apparaat zelf: zelfs bij een vals alarm van de wake detector (wat overigens nog regelmatig gebeurt) blijft je privacy dus beschermd. Die volgende stap is automatische spraakherkenning (ASR, automatic speech recognition), of het omzetten van spraak naar tekst. Dat gebeurt enerzijds met een akoestisch model dat geluiden omzet in fonetische voorstellingen en anderzijds met een taalmodel dat die fonetische voorstellingen omzet naar tekst. Omdat deze component allerlei mogelijke spraakuitingen moet herkennen, veel meer dan één naam zoals bij de wake word detector, vereist die dus meer processorkracht. De modellen die even goed zijn als mensen, vereisen meerdere neurale netwerken met honderden miljoenen parameters. Daarom draait deze stap in de meeste andere stemassistenten in de cloud.

Maar Snips slaagt erin om de ASR op je apparaat zelf te draaien omdat het niet alles wil verstaan, zoals Google Home, Amazon Echo en dergelijke wel willen doen. Je kiest namelijk welke apps je op Snips-assistent installeert en die apps verstaan maar specifieke domeinen, zoals weersomstandigheden en plaatsen voor een weer-app, en muziek voor een Spotify-app. Zo kan Snips deze stap beperken tot een akoestisch model van 10 Mbyte getraind op slechts enkele honderden uren spraak, gecombineerd met een gespecialiseerd taalmodel voor de apps die je installeert (enkele honderden kilobytes tot enkele megabytes). Dat beperkt de benodigde processorkracht al significant.

Taalbegrip
Een stap verder is de stap van tekst naar begrip van je bedoeling. Die stap heet Natural Language Understanding (NLU). De tekstversie van je uitspraak "Turn on the lights in the living room" wordt in deze stap omgezet naar een gestructureerde voorstelling zoals:

Intent: SwitchLightOn
Slots:
  - room: living_room
  - brightness: none

Snips noemt die voorstelling een intent (bedoeling). Hierop kan de assistent dan reageren door acties uit te voeren, bijvoorbeeld een opdracht aan je domoticasysteem om de lamp in je woonkamer in te schakelen. Ook deze stap gebeurt bij Snips volledig op het apparaat zelf, zodat niemand in de cloud te zien krijgt wat je thuis doet en of je thuis bent.
snips intent 2

Snips detecteert de bedoeling achter je gesproken boodschap

Gebruikersgedrag veilig meten
Het zou ontwikkelaars van Snips-apps heel wat helpen als ze het gedrag van hun gebruikers (geanonimiseerd) zouden kunnen analyseren om de app te verbeteren. Traditionele analytics gebeurt echter gecentraliseerd, en dan heb je ergens op een centrale server massaal veel persoonlijke informatie van alle gebruikers van het platform staan.

Snips ontwikkelde daarom een systeem om statistieken van een groep gebruikers te verkrijgen zonder dat je iets over de individuele gebruikers te weten komt. Dat werkt als volgt voor een som van informatie van elke gebruiker. Elke gebruiker voegt aan de informatie  een willekeurig getal  toe voor hij het aan de ontwikkelaar stuurt. De ontwikkelaar kent  niet en kan uit het resultaat dus ook niet de originele informatie  reconstrueren. De  van alle gebruikers worden verdeeld onder clerks. Elke clerk telt de 's die hij krijgt op en stuurt het resultaat naar de ontwikkelaar. De ontwikkelaar telt de sommen nu allemaal bij elkaar op en trekt ze af van de som van alle waardes die hij van de gebruikers heeft gekregen.

snips private analytics 2Snips kan statistieken over zijn gebruikers berekenen
zonder inbreuk op de privacy van die gebruikers

Het resultaat is de som van alle 's, zonder dat de ontwikkelaar de individuele 's te zien heeft gekregen. De klerken worden door de ontwikkelaar betaald voor hun hulp bij de berekening. Overigens krijgt in dit systeem elke klerk niet rechtstreeks de  van een gebruiker, maar deelt de gebruiker zijn  met meerdere klerken in de vorm van een secret sharing algoritme, zodat de originele informatie alleen kan worden gereconstrueerd wanneer meerdere klerken samenwerken. Zo wil Snips malafide klerken of klerken die met ontwikkelaars samenspannen tegengaan.

Deze gedecentraliseerde analytics zou in de lente van 2019 actief moeten zijn op het platform van Snips. En het bedrijf wil nog verder gaan: tegen de herfst van 2019 wil het zelfs een gedecentraliseerde vorm van machinaal leren werkend hebben. Gelijkaardig aan het systeem voor analytics zal dat systeem het voor ontwikkelaars mogelijk maken om het taalmodel of de classificatie van intents te verbeteren met geanonimiseerde invoer van gebruikers.

Gedecentraliseerde applicatiewinkel
Omdat Snips werkt met een gespecialiseerd taalmodel voor elke app, zijn de apps in het Snips-platform belangrijker dan bij andere platforms voor stemassistenten. Het is dan ook belangrijk dat ook de applicatiewinkel van Snips je privacy beschermt. Bovendien willen de makers van Snips een gezonde applicatiewinkel met kwalitatieve apps, zonder dat het bedrijf strenge censuur zoals Apple moet toepassen.

Om al deze problemen met andere applicatiewinkels aan te pakken, wil Snips zijn huidige klassieke applicatiewinkel op termijn vervangen door een gedecentraliseerde versie. Snips brengt cryptogeld uit (een token) en iedereen die op het Snips-platform actief is, dient dat token te gebruiken: de ontwikkelaars die apps publiceren, de gebruikers van die apps en de 'curatoren' die de kwaliteit van apps en beoordelingen evalueren. Voor elk van deze taken dien je een deel van je tokens in te zetten. Die zijn dan geblokkeerd en kunnen van je worden afgenomen als je actie op malafide bedoelingen of lage kwaliteit wijst. Zo moedigt het systeem iedereen aan om eerlijk te zijn en kwalitatief te werken.

snips decentralized app store 2Snips verdeelt de macht over zijn applicatiewinkel over elke gebruiker

Laten we bijvoorbeeld eens kijken naar de ontwikkelaars van apps. Als iemand een app in de applicatiewinkel van Snips wil publiceren, moet hij tokens inzetten. Hoe meer tokens hij inzet, hoe hoger in de lijst met nieuwe apps zijn app komt te staan. Zodra een app is gepubliceerd, kunnen gebruikers die niet alleen installeren, maar ook rapporteren als malware of lage kwaliteit. Curatoren bekijken dan de feedback van gebruikers en onderzoeken de app, maar niet nadat ze eerst zelf ook tokens hebben moeten inzetten. Meerdere curatoren stemmen dan op de uitkomst: niets doen, de app uit de winkel halen en de ontwikkelaar zijn inzet teruggeven, de app uit de winkel halen en een percentage van zijn inzet houden als straf voor zijn slecht gedrag, of zelfs de app uit de winkel halen en alle toekomstige publicaties van de ontwikkelaar blokkeren.

De ingehouden tokens van de ontwikkelaar worden verdeeld onder de curatoren die tokens hebben ingezet. Op die manier worden gebruikers van de applicatiewinkel aangespoord om actief de kwaliteit in het oog te houden en ontwikkelaars worden aangespoortd om alleen kwalitatieve apps te publiceren.

En verder
Het is duidelijk dat Snips van de grond af gebouwd is met de focus op privacy. Het bedrijf heeft een verfrissende aanpak om de privacy van de gebruikers van zijn stemassistent te garanderen. Onder de motorkap maakt het daarvoor gebruik van state-of-the-art algoritmes die interessant zijn om eens in te duiken. In de whitepaper vind je gedetailleerde informatie. Hopelijk kan Snips andere ontwikkelaars van stemassistenten ook inspireren om meer met onze privacy rekening te houden.

Infolinks

[1] https://snips.ai/

[2] https://tokensale.snips.ai/snips-air-whitepaper.pdf