Snips NLU is een Open Source, Private by Design-alternatief voor Dialogflow, Amazon Lex en andere NLU-cloudservices

Integratie van een spraak- of chatbotinterface in een product dat werd gebruikt om een ​​Natural Language Understanding (NLU) cloudservice te vereisen. Vandaag zijn we open sourcing Snips NLU, een Private by Design, GDPR-compatibele NLU-engine. Het kan op de Edge of op een server worden uitgevoerd, met minimale footprint, terwijl het even goed of beter presteert dan cloud-oplossingen.

Natuurlijk taalbegrip

2017 was misschien wel het jaar van de AI-assistent. Van de 60 miljoen berichten die Facebook-bots dagelijks verwerken, tot de tientallen miljoenen gebruikers die nu praten met een apparaat met Alexa of Google, natuurlijke taal is een voorkeursmodus geworden voor interactie tussen mensen en machines. Elke 90 minuten wordt er een nieuwe vaardigheid toegevoegd aan de Amazon Alexa-vaardigheidswinkel, waardoor spraakassistenten sneller groeien dan app-winkels voor smartphones.

Achter elke chatbot en stemassistent schuilt een gemeenschappelijk stuk technologie: Natural Language Understanding (NLU). Telkens wanneer een gebruiker interactie aangaat met een AI met behulp van natuurlijke taal, moeten hun woorden worden vertaald in een machineleesbare beschrijving van wat ze bedoelden. Voice vereist een extra stap, namelijk het transcriberen van de stem van de gebruiker in de bijbehorende tekst, voordat de NLU wordt uitgevoerd.

De NLU-engine detecteert eerst wat de bedoeling van de gebruiker is (oftewel intentie) en haalt vervolgens de parameters (slots) van de query. De ontwikkelaar kan dit vervolgens gebruiken om de juiste actie of reactie te bepalen.

NLU motor output voorbeeld

De meeste chatbots en stemassistenten vertrouwen op cloudservices voor hun NLU. De meest voorkomende zijn Dialogflow (Google, ex API.ai), Amazon Lex, Amazon Alexa, Luis.ai (Microsoft), Wit.ai (Facebook) en IBM Watson.

Eén ding dat al deze oplossingen gemeen hebben, is dat ze volledig gecentraliseerd zijn en op de servers van de provider worden uitgevoerd. Dit betekent dat ze toegang hebben tot alle gegevens die naar hun service worden verzonden en deze naar believen kunnen hergebruiken. Kijkend naar de servicevoorwaarden laat dat zien, zoals hier voor Amazon Lex:

Gegevens en beveiliging
V. Worden spraak- en tekstinvoer verwerkt door Amazon Lex opgeslagen en hoe worden ze gebruikt door AWS?
Amazon Lex mag spraak- en tekstinvoer die door de service is verwerkt uitsluitend opslaan en gebruiken om de service te bieden en te onderhouden en om de kwaliteit van Amazon Lex en andere Amazon machine learning / kunstmatige-intelligentietechnologieën te verbeteren en te ontwikkelen. Gebruik van uw inhoud is noodzakelijk voor continue verbetering van uw Amazon Lex-klantervaring, inclusief de ontwikkeling en training van gerelateerde technologieën. (...)

Laten we een stap terug doen. De software-industrie was van oudsher samengekomen in de richting van analyse en potentiële crashrapporten als algemene goede praktijken om voortdurende verbetering van producten te bevorderen. Maar het was altijd beperkt tot gevallen waarin dingen faalden. De systematische en permanente gegevensverzameling die de norm is geworden in AI is iets nieuws. Vermoedelijk wordt verzameling en opslag van deze inhoud noodzakelijk geacht voor de ontwikkeling van alle AI-technologieën.

Dit is in feite een valse dichotomie. Bij Snips hebben we een spraakplatform gebouwd voor verbonden apparaten met Wakeword-detectie, Spraakherkenning (ASR), Natural Language Understanding (NLU) en dialoog. Het unieke van Snips is dat alles op de Edge draait, waarbij de stem van de gebruiker direct wordt verwerkt op het apparaat waarmee ze spreken. We raken, verwerken of verzamelen nooit gebruikersgegevens, waardoor ons platform het eerste Private by Design-alternatief is voor traditionele stemassistenten.

In een poging om meer transparantie en privacy te bieden, zijn we geleidelijk open sourcing van de kerncomponenten van onze technologie, vanaf vandaag met Snips NLU.

Snips NLU is een Python-bibliotheek die kan worden gebruikt om eenvoudig modellen te trainen en getrainde modellen te gebruiken om voorspellingen te doen over nieuwe vragen. Bekijk hier de documentatie. Daarnaast zijn we ook open sourcing Snips NLU-rs, een Rust-implementatie gericht op het voorspellingsgedeelte (ook wel gevolgtrekking genoemd). Deze bibliotheek kan op de meeste moderne architecturen worden gebruikt: op kleine verbonden apparaten, op mobiel, op desktop of op een server. Het kan momenteel 5 talen aan (Engels, Frans, Duits, Spaans en Koreaans), en er worden er regelmatig meer toegevoegd.

Laten we nu eens kijken hoe Snips NLU het doet. We zullen ons richten op prestaties en nauwkeurigheid en laten zien dat onze technologie op hetzelfde niveau presteert als cloud-gebaseerde oplossingen.

Looptijd afleiding

Een typisch argument voor het gebruik van cloud-services voor machine learning zijn infrastructuurkosten. Dat is waar de cloud voor is, om ontwikkelaars te verlichten van complexe en kostbare operaties, zodat ze zich kunnen concentreren op wat ze het beste doen.

We begrijpen dat dit een cruciaal aspect is, vooral omdat ons platform op kleine apparaten moet werken. We hebben onze Snips NLU-rs inferentiemotor geoptimaliseerd om letterlijk overal te worden uitgevoerd, van een 5 $ Raspberry Pi Zero tot een AWS EC2-exemplaar uit de vrije hand. Dit is de gemiddelde looptijd voor het verwerken van een query in een typische assistent:

Gemiddelde tijd om een ​​zoekopdracht te parseren met Snips NLU-rs

Gemiddeld duurt het minder dan 2 milliseconden om een ​​zoekopdracht te parseren op een 2015 Macbook Pro met 2.5GHz Core i7. Omdat ons platform is geoptimaliseerd voor prestaties en geen netwerktoegang vereist, kan de typische tijdwinst meer dan 2 ordes van grootte zijn in vergelijking met het gebruik van een cloudservice!

Geheugen is ook geoptimaliseerd, variërend van enkele honderden KB RAM voor veelvoorkomende gevallen tot enkele MB voor de meest complexe assistenten. Dit betekent dat de assistent in een Raspberry Pi, een mobiele app of een Amazon Free Tier past. Het betekent ook dat krachtigere servers honderden parallelle exemplaren van de NLU-engine aankunnen!

Om dit prestatieniveau te bereiken, moesten we volledig heroverwegen hoe een NLU-motor te bouwen, zowel op het gebied van engineering als machine learning.

We hebben bijvoorbeeld in Rust alles geïmplementeerd dat nog niet in een taal op laag niveau is geschreven. Als je niet bekend bent met Rust, is het een briljante taal die geheugenveiligheid biedt terwijl je net zo snel presteert als C ++.

Wat betreft het leren van machines, probeerden we tientallen verschillende modellen, van CNN's tot bi-LSTM's, maar uiteindelijk gebruikten we een meer traditioneel plat model dat een lineair keten Conditional Random Field (CRF) wordt genoemd. We hebben ook de inbedding van zware woorden vervangen door een zorgvuldig ontworpen set functies die semantische en structurele signalen uit de zin vastleggen. We ontdekten dat er geen significante winst was met behulp van diep leren versus CRF's voor Natural Language Understanding-taken. Dit geldt echter niet voor ASR, waar diep leren verplicht is om hoge nauwkeurigheid te bereiken (meer daarover binnenkort).

Nauwkeurigheid

Om te controleren of de Snips NLU-engine goed werkte, hebben we deze vergeleken met cloudservices, waaronder API.ai (nu DialogFlow, Google), Wit.ai (Facebook), Luis.ai (Microsoft) en Amazon Alexa. Elke oplossing werd getraind met dezelfde dataset en getest op dezelfde out-sample testset. De resultaten toonden aan dat onze NLU net zo nauwkeurig of beter is dan cloud-oplossingen bij sleufextractie-taken, ongeacht hoeveel trainingsgegevens zijn gebruikt.

Benchmarking Natural Language Understanding Systems (zie de blogpost en originele gegevens)

We hebben ook een academische benchmark gereproduceerd die afgelopen zomer is gepubliceerd. In dit artikel beoordeelden auteurs de prestaties van API.ai (nu Dialogflow, Google), Luis.ai (Microsoft), IBM Watson en Rasa NLU. Voor de eerlijkheid hebben we de nieuwste versie van Rasa NLU gebruikt en vergeleken met de nieuwste versie van Snips NLU (beide in donkerblauw).

Reproductie van

Over alle benchmarks scoort Snips NLU de hoogste of tweede hoogste, ondanks dat het sneller en lichter is dan elke andere oplossing. Dit laat zien dat kiezen voor een cloud NLU-oplossing - en daarmee het opofferen van privacy en controle over gegevens - strikt noodzakelijk is. Of het nu op een apparaat of op een server draait, Snips NLU is een krachtig alternatief voor bestaande oplossingen.

Volwassenheid en ecosysteem

De Snips NLU-motor is het resultaat van jarenlang onderzoek en engineering en is grondig getest. Het is dezelfde code die we gebruiken in ons commerciële aanbod, dat op de apparaten van onze klanten draait.

Bovendien hebben we ons spraakplatform gratis gemaakt voor niet-commerciële gebruiksscenario's en een webinterface gelanceerd waarmee makers en ontwikkelaars hun eigen assistent kunnen maken. Sinds de lancering afgelopen zomer hebben meer dan 9.000 ontwikkelaars zich aangemeld en meer dan 19.000 stemassistenten gecreëerd.

Een voorbeeldassistent gemaakt op Snips.ai

We hebben ook een unieke service voor het genereren van gegevens gelanceerd waarmee iedereen die een conversatie-interface bouwt, duizenden synthetische trainingsvoorbeelden van slechts enkele voorbeelden kan genereren. Deze oplossing lost het koude startprobleem op door maanden echte gebruikersgegevens na te bootsen.

Snips NLU is een snel, licht, nauwkeurig en volwassen alternatief voor cloudgebaseerde Natural Language Understanding-oplossingen. Open sourcing van de code zal ons verder helpen onze technologie te verbeteren, Privacy by Design-principes te promoten en AI naar de rand te brengen. Als je meer wilt weten, bekijk dan de Github-repository en begin met het bouwen van je eigen assistent op de Snips-console!

Als je dit artikel leuk vond en Snips wilt ondersteunen, deel het dan!

Volg ons op Twitter jodureau en knipt.

Neem voor vragen of feedback contact met ons op via de Discord.

Als je aan AI + Privacy wilt werken, kijk dan op onze vacaturespagina!