Herken vogeldeuntjes in je tuin met BirdNET-Pi

Vraag je je ook weleens af welke vogelsoorten er allemaal je tuin bezoeken? Met een Raspberry Pi en een microfoon kun je de hele dag het geluid in je tuin opnemen. De software BirdNET-Pi herkent daarin vogeldeuntjes en toont je in een webinterface handige statistieken van wanneer welke vogels te horen zijn.

/images/birdnetpi-overzicht.png

BirdNET is een app voor Android en iOS die vogelsoorten kan onderscheiden aan de hand van geluidsopnames. Ideaal als je tijdens een wandeling je afvraagt welke vogel dat speciale deuntje laat horen. Onder de motorkap draait een neuraal netwerk van onderzoekers van Cornell University dat op geluiden van drieduizend vogelsoorten is getraind. Je neemt enkele seconden van het deuntje op je telefoon op, de app analyseert die vervolgens en benoemt daarna de vogels waarvan het geluid daar het meest op lijkt.

Luistervinkende Raspberry Pi

Patrick McGuire heeft met BirdNET-Pi een versie van BirdNET gemaakt die op de Raspberry Pi werkt. De software luistert continu naar het geluid van een usb-microfoon en herkent daarin realtime vogelgeluiden. Dat werkt op een Raspberry Pi 4B, 3B+ en Zero W 2. Om van alle mogelijkheden te kunnen genieten, is een Raspberry Pi 4B wel aangeraden.

Als je BirdNET ook als app op je telefoon kunt draaien, wat is dan het voordeel van BirdNET-Pi? Het belangrijkste pluspunt is dat BirdNET-Pi continu luistert, waardoor je het de klok rond vogelgeluiden kunt laten herkennen. Voor vogelliefhebbers levert dat ook interessante statistieken op, zoals hoe laat je het meeste kans maakt om specifieke vogelsoorten te spotten.

/images/birdnetpi-statistieken.png

Een ander voordeel is dat BirdNET-Pi zijn analyses volledig offline doet, terwijl de smartphone-app elke audio-opname naar de servers van het BirdNET-project moet doorsturen om daar de analyse uit te voeren. Je zou dus een Raspberry Pi met BirdNET-Pi op een plaats zonder netwerktoegang kunnen installeren en na een dag de opgeslagen detecties kunnen raadplegen.

In een artikel van me op id.nl lees je hoe je BirdNET-Pi op een Raspberry Pi installeert en configureert.

Maak een smarthome-dashboard met M5Stack-hardware en UIFlow

M5Stack ontwikkelt ESP32-microcontrollerbordjes met behuizing en scherm die je zo in je woonkamer zou kunnen zetten. Het zijn de ideale producten om een dashboard voor je smarthome van te maken. Met UIFlow is dat ook vrij eenvoudig te programmeren, op een grafische manier. Zo hoef je geen kaas gegeten te hebben van programmeercode.

Ik heb in en rond m'n huis allerlei temperatuursensoren staan. De binnen- en buitentemperatuur wilde ik ergens eenvoudig tonen. De M5Stack Core Ink leek me daarvoor ideaal: het is een ESP32-microcontrollerbordje met 1,54inch e-ink-scherm.

/images/uiflow-core-ink.jpg

Ik heb dit soort dashboards al op verschillende manieren geprogrammeerd: met Homepoint, ESPHome en openHASP. Nog een andere manier is UIFlow, een webgebaseerde ontwikkelomgeving voor de producten van M5Stack.

UIFlow ondersteunt alleen de hardware van M5Stack, maar geen willekeurig ESP32-microcontrollerbordjes. Het voordeel is dat de drivers van hun eigen producten allemaal ingebouwd zijn. Je kunt ook de grafische interface die je op het scherm van bijvoorbeeld de Core Ink wilt tonen 'tekenen' in de webinterface:

/images/uiflow-tekenen.png

Verder 'programmeer' je je software in Blockly, een grafische programmeertaal waarbij je blokjes met elkaar verbindt. Onderliggend wordt je Blockly-code overigens in MicroPython omgezet. Functionaliteit die niet in UIFlow is voorzien, kun je dan ook als MicroPython-code toevoegen.

In een artikel van me op id.nl lees je hoe ik de binnen- en buitentemperatuur van sensoren via MQTT inlees en op de Core Ink toon. De volledige code ziet er als volgt uit:

/images/uiflow-code.png

Stuur sensordata via het Zoek mijn-netwerk van Apple

Met de app Zoek mijn van Apple kun je een verloren iPhone, iPad, Mac(Book), Apple Watch of AirPod terugvinden, evenals de AirTag. Dat werkt doordat Apple-apparaten Bluetooth-signalen uitzenden, die door andere apparaten worden opgepikt en dan naar Apple worden verzonden. Dat gebeurt met respect voor privacy: die Bluetooth-signalen bevatten noch je identiteit noch andere persoonsgegevens. Andere Apple-gebruikers en zelfs Apple krijgen dus niet te zien waar je apparaten zich bevinden.

Onderzoekers van het Secure Mobile Networking Lab van de TU Darmstadt in Duitsland hebben als onderdeel van hun project Open Wireless Link de werking van het Zoek mijn-protocol van Apple gereconstrueerd. Ze hebben op basis hiervan ook hun eigen framework gemaakt om Bluetooth-apparaten te traceren via het Zoek mijn-netwerk: OpenHaystack.

In het artikel Stuur sensordata via Zoek mijn-netwerk van Apple in Computer!Totaal beschrijf ik hoe je de OpenHaystack-firmware op een ESP32-ontwikkelbordje installeert en dan de locatie van het bordje overal in de wereld kunt traceren via het Zoek mijn-netwerk van Apple. Dat werkt zolang er maar genoeg Apple-apparaten in de buurt van het bordje zijn.

Willekeurige sensordata

Persoonlijk begon mijn interesse in OpenHaystack pas toen beveiligingsonderzoeker Fabian Bräunlein van Het Berlijnse bedrijf Positive Security een manier vond om willekeurige data via het Zoek mijn-netwerk van Apple te versturen. De aanpak noemde hij Send My.

Positive Security heeft firmware voor de ESP32 ontwikkeld waarmee het bordje een modem wordt voor het Zoek mijn-netwerk. Via een seriële verbinding vanaf je computer naar de ESP32 typ je boodschappen in en de ESP32 codeert die in de vorm van publieke sleutels die het via Bluetooth Low Energy verzendt. Daarna kun je in de bijbehorende DataFetcher-applicatie op je Mac de gedecodeerde boodschappen inlezen.

Het blogartikel van Positive Security waarin ze hun hack aankondigen, spreekt al over het gebruik van de techniek door kleine sensoren. Die kunnen dan in een omgeving zonder toegang tot mobiel internet toch hun sensordata uitsturen, zolang er maar Apple-apparaten in de buurt zijn. Op die manier kun je goedkope sensoren maken die lang op één batterij meegaan.

Maar de code van Positive Security was voor een ESP32, die nog altijd vrij veel energie verbruikt en niet zo compact is. Daarom heb ik de techniek voor andere hardware geprogrammeerd, namelijk de RuuviTag. Dit is een klein sensorbordje met sensoren voor de temperatuur, luchtvochtigheid, luchtdruk en beweging dat de sensordata via Bluetooth Low Energy verstuurt. Met de standaard firmware gaat het apparaatje meerdere jaren mee op een CR2477-batterij. Mijn idee was om zelf firmware te programmeren en in ieder geval de temperatuur van de RuuviTag via het Zoek mijn-netwerk rond te sturen met de techniek van Positive Security.

Om de RuuviTag te programmeren heb je ook een RuuviTag Development Kit nodig. Daarom heb ik dezelfde code ook op een goedkopere oplossing getest: een nRF52840-dongel van Nordic Semiconductor, waarop ik een break-outbordje met BME280-sensor aansloot via I²C.

/images/send-my-nrf52840.jpg

Zephyr-firmware

De code maakt gebruik van het realtime besturingssysteem Zephyr, dat over een volledige opensource BLE-stack beschikt en uitstekende ondersteuning voor de nRF52-chips heeft. Ik publiceerde de code in twee delen: een Zephyr-module die OpenHaystack implementeert en Send My Sensor dat van die module gebruikmaakt om de temperatuurwaardes van de BME280 rond te sturen.

Waarschuwing

Dit is een proof-of-concept dat de hele tijd een statische sleutel via Bluetooth uitstuurt, met een vast modem ID. Iedereen die dit modem ID kent, kan dus van overal in de wereld je sensordata lezen. Er is ook geen power management geïmplementeerd.

In een omgeving met weinig Apple-apparaten is deze manier van data doorsturen niet betrouwbaar, was mijn ervaring. Pas als de signalen van je sensorbordje door talloze apparaten worden opgepikt en naar Apple worden doorgestuurd, kun je de sensordata lezen. En als ook maar één bit uit een byte niet ontvangen wordt, is het overeenkomende teken onleesbaar. Dat ziet er dan als volgt uit in de macOS-applicatie DataFetcher van Positive Security:

/images/send-my-sensor.png

Zo heb ik de RuuviTag met deze firmware in mijn broekzak gehad terwijl ik in een vol restaurant zat. Ik kon er nadien nog net uit afleiden dat het in mijn broekzak tussen de 29 en 31 graden was. Al met al is deze techniek dus nog een prototype, maar het toont wel aan dat je met wat creativiteit heel leuke dingen kunt doen met Apples Zoek mijn-netwerk.

Een webgebaseerde kantooromgeving op de Raspberry Pi met Nextcloud Hub

De opensource collaborationsoftware Nextcloud Hub verbetert jaar na jaar. Het begon ooit als een online opslagdienst die je op je eigen server kon installeren, maar ondertussen doet het veel meer. Je kunt er bestanden mee delen en synchroniseren, chatten en videobellen, en er zelfs een agenda, contacten en e-mail op draaien. Jaar na jaar komen er nieuwe functies bij, wat Nextcloud zeker voor thuisgebruikers, maar zelfs voor bedrijven interessant maakt.

Een ander succes is het webgebaseerde kantoorpakket Collabora Online, de webversie van LibreOffice. Installeer je dit op een Linux-server, dan kun je via je browser documenten bewerken en zelfs met meerdere personen samenwerken. Vooral de integratie van Collabora Online in Nextcloud Hub maakt het een interessant programma om documenten te delen en eraan samen te werken:

/images/nextcloud-collabora-online.png

De installatie van Nextcloud Hub en de integratie met Collabora Online kan op meerdere manieren. Wanneer je dit volledig zelf doet, steek je er wel wat werk in. Ook het up-to-date houden en het beheer vereist aandacht. Dat is niet voor iedereen weggelegd.

Een oplossing voor wie zich daarmee niet wil bezighouden, is de Ubuntu-appliance van Nextcloud. Dit is een aangepaste versie van de Linux-distributie Ubuntu, Ubuntu Core, met Nextcloud Hub in een 'snap' geïnstalleerd. Je krijgt dan automatisch updates. Bovendien kun je er ook Collabora Online in installeren.

Van dit alles bestaan ook versies voor een ARM-processor. Ideaal om op een Raspberry Pi 3B(+) of 4B te zetten. Wil je weten hoe dit werkt, lees dan mijn stappenplan in het artikel Nextcloud Hub installeren op Raspberry Pi met Collabora Online voor PCM.

Als je ooit al eens Nextcloud en/of Collabora Online geïnstalleerd hebt en dat te lastig vond, moet je het zeker eens opnieuw proberen. Niet alleen het Ubuntu-appliance is handig, ook op andere vlakken is het beheer van Nextcloud in de laatste jaren veel eenvoudiger geworden. De webinterface van een certificaat van Let's Encrypt voorzien is bijvoorbeeld met één opdracht en één configuratiewijziging te doen.

Luister BLE-, Zigbee- en Thread-netwerkverkeer af met Wireshark

Bij problemen met draadloze apparaten is het vaak moeilijk om precies de oorzaak aan te duiden. Wireshark is een populaire opensource-packetsniffer die zowel op Windows, Linux als macOS draait. Het is een standaard hulpmiddel geworden in de gereedschapskist van netwerkbeheerders. Je onderzoekt er zowel wifi- als ethernetverkeer mee, bijvoorbeeld om netwerkproblemen te analyseren.

Met een nRF52840 Dongle van Nordic Semiconductor en een plug-in voor Wireshark kun je er ook Bluetooth Low Energy-, Zigbee- en Thread-verkeer mee uit de lucht plukken. Voor PCM beschreef ik de hele procedure om BLE en Zigbee te sniffen.

Opmerking

De firmware is ook compatibel met de April USB Dongle 52840 van April Brother. De externe antenne maakt een groot verschil in bereik met de PCB-antenne van de nRF52840 Dongle.

Nordic Semiconductor biedt de firmware voor de nRF52840 Dongle en de bijbehorende plug-ins voor Wireshark hier aan:

Ik gebruik de nRF Sniffer for Bluetooth LE continu om BLE-apparaten te debuggen. Zo kun je eenvoudig met de displayfilters van Wireshark filteren op specifieke types BLE-pakketten. Zo filter je bijvoorbeeld op iBeacon-pakketten:

(btcommon.eir_ad.entry.company_id == 0x004c) && (btcommon.eir_ad.entry.data[:2] == 02:15)

Dat beperkt de getoonde pakketten tot degene met manufacturer-specific data van company ID 0x004c (van Apple) en met de eerste twee bytes gelijk aan 0x0215. 1

Maar hoe kom je aan die displayfilter? Als je op manufacturer-specific data van company ID 0x004c wilt filteren in Wireshark, klik je eenvoudigweg op het veld Company ID in het paneel met pakketdetails van een iBeacon-pakket, rechtskik je en kies je dan Apply as Filter en dan Selected. Dat voegt een displayfilter toe voor alle pakketten met de geselecteerde waarde voor het company ID.

De extra filter voor de eerste twee bytes is wat meer werk als je de syntax niet kent. Selecteer gewoon het volledige veld Data in het paneel met pakketdetails van een iBeacon-pakket, rechtsklik en kies dan Apply af Filter en dan ... and Selected. Dat voegt deze filter toe als extra vereiste aan de al gebruikte filter. Maar nu filter je alle pakketten met exact dezelfde data als dit geselecteerde pakket:

btcommon.eir_ad.entry.data == 02:15:18:ee:15:16:01:6b:4b:ec:ad:96:bc:b9:6d:16:6e:97:00:00:00:00:d8

Als je wilt filteren op de eerste twee bytes, voeg je [:2] aan het dataveld toe. Die vergelijk je dan met de bytes 02:15.

1

Waarom 0x0215? Dit vind je in de specificatie van iBeacon. Apple gebruikt in zijn manufacturer-specific data een TLV-formaat (type-length-value). De 0x02 staat voor het type iBeacon en de 0x15 stelt de lengte van de data erna voor (21 decimaal: 16 bytes voor de UUID, 2 voor de major, 2 voor de minor en 1 voor de measured power).

Dan Larimer over democratie als gedecentraliseerde consensus

Ik schrijf al meer dan twintig jaar over allerlei technische onderwerpen en ik heb daarbuiten nog heel wat andere interesses. Maar het is nog maar enkele jaren geleden dat ik in een epifanie plots de rode draad in al die onderwerpen zag: decentralisatie.

  • Ik geloof in de kracht van opensourcesoftware omdat de gebruikers daardoor niet alleen consument maar ook producent zijn.

  • Ik ben een groot voorstander van self-hosted software zodat je niet afhankelijk bent van clouddiensten van grote bedrijven.

  • Tien jaar geleden al schreef ik over Bitcoin en ik vind blockchains en andere vormen van distributed ledgers fascinerende technologie om zonder centrale controle transacties te kunnen uitvoeren.

  • In mijn strijd voor meer privacy vind ik het vooral belangrijk dat mensen controle over hun eigen data hebben, en daarom ben ik een grote fan van technologieën zoals Nextcloud, Solid en end-to-end encryptie.

  • Ik vind het belangrijk dat je zelf dingen kunt maken en programmeren, en ik ben dan ook blij dat ik deel uitmaak van de DIY/makersbeweging die dit democratiseert met de Raspberry Pi, ESP32, Arduino, 3d-printers, fablabs enzovoort.

  • Ik vind dat huishoudens zoveel mogelijk zelfvoorzienend zouden moeten zijn, niet alleen voor energie, maar ook voor voedsel.

More Equal Animals - The Subtle Art of True Democracy (Bron: Dan Larimer)

Toen ik dan in het begin van dit jaar Dan Larimers (gratis te downloaden) boek More Equal Animals - The Subtle Art of True Democracy ontdekte, las ik dit bijna in één ruk uit. Op bijna elke pagina las ik wel inzichten die verweven waren met de rode draad in mijn interesses.

In essentie is een blockchain een techniek om zonder centrale aansturing tot consensus te komen. Bij Bitcoin is dat consensus over transacties, maar volgens Larimer kun je de principes van blockchains ook op onze samenleving zelf toepassen. Een succesvolle samenleving implementeert volgens Larimer een proces dat zoveel mogelijk tot consensus leidt.

Democratie is in die ogen een proces om geschillen te beslechten met meerdere partijen en dat is iets waarin blockchains zo goed zijn. Echte democratie gaat volgens Larimer dan ook over het coördineren met andere personen terwijl je nog je persoonlijke autonomie en macht behoudt. En de ideale vorm van de samenleving bestaat dan uit gedecentraliseerde, autonome gemeenschappen op alle niveaus.

Voor PC-Active schreef ik uitgebreider over de visie die Larimer in zijn boek beschreef. Als onderwerpen zoals persoonlijke autonomie, gedecentraliseerd bestuur, een antifragiele samenleving en de gevaren van moral hazard je nauw aan het hart liggen, dan is het boek More Equal Animals een aanrader.

Visualiseer data van je Bluetooth-sensors

Bluetooth Low Energy (BLE) is een dankbaar protocol om als hobbyprogrammeur mee te werken. De specificaties zijn allemaal op de website van de Bluetooth SIG te vinden en zowat elk ontwikkelplatform kent wel een of meerdere BLE-bibliotheken.

In een artikel voor Computer!Totaal leg ik uit hoe je data van BLE-sensors uitleest in je eigen Arduino-code die op een ESP32-microcontroller draait, en het resultaat visualiseert op het scherm van een M5Stack Core.

Een BLE-apparaat kan op twee manieren communiceren: door data te broadcasten naar iedereen in de buurt, of door een één-op-één verbinding te maken met een ander apparaat en daarnaar data te zenden. In het artikel werk ik voor beide communicatiemanieren een voorbeeldprogramma uit.

Broadcasten gebeurt vaak door omgevingssensoren. De RuuviTag is zo'n sensor die temperatuur, luchtvochtigheid, luchtdruk en beweging detecteert. 1 De sensor broadcast zijn data elke seconde via BLE als manufacturer data. Het protocol is volledig gedocumenteerd. In het artikel in Computer!Totaal leg ik uit hoe je de temperatuur hieruit decodeert en op het scherm van de M5Stack Core toont.

Andere apparaten gebruiken verbindingen. De Bluetooth SIG heeft een heel aantal services voor verbindingen gedefinieerd waarvan je de specificaties gewoon kunt raadplegen. Een populaire is de service Heart Rate. In het artikel beschrijf ik hoe je de code schrijft om met behulp van de bibliotheek NimBLE-Arduino met een hartslagsensor te verbinden en realtime je hartslag op het scherm van de M5Stack Core te tonen. Ideaal voor tijdens het sporten! 2

/images/m5stack-heart-rate-display.jpg
1

De nRF52832-gebaseerde RuuviTag is open hardware en ook de firmware is opensource.

2

Ik heb ondertussen ook een versie van de code geschreven voor de nieuwere M5Stack Core2: M5Core2 Heart Rate Display.

Energiezuinigere neurale netwerken door pulsen

Als we onze hersenen als technologie zouden beschouwen, zou elke ingenieur onder de indruk zijn: met een verbruik van amper 20 watt slaagt ons brein erin om talloze gevarieerde en complexe taken uit te voeren, zoals spraak en beeld herkennen, navigeren in omgevingen waar we nog nooit geweest zijn, nieuwe vaardigheden leren en redeneren over abstracte zaken. Het is dan ook geen wonder dat onze hersenen al sinds jaar en dag als inspiratie dienen om computers 'intelligentie' te geven.

Een belangrijke aanpak in machinaal leren vormen (kunstmatige) neurale netwerken. Ze bootsen de werking van de hersenen na, die een biologisch neuraal netwerk vormen: een kluwen van talloze verbindingen tussen neuronen (hersencellen). Een kunstmatig neuraal netwerk bestaat meestal uit meerdere lagen:

  • Een invoerlaag van neuronen die de invoer van een probleem voorstellen, bijvoorbeeld de pixels in een foto.

  • Een uitvoerlaag van neuronen die de oplossing van het probleem voorstellen. Die herkennen bijvoorbeeld dat er in de foto een hond te zien is.

  • Eén of meer verborgen lagen die berekeningen uitvoeren. Die herkennen bijvoorbeeld vacht, grootte, aantal poten enzovoorts.

/images/neuraal-netwerk.png

Een neuraal netwerk programmeer je niet door expliciet aan te geven hoe het een probleem moet oplossen; je 'traint' het door het vele voorbeelden van een probleem te geven. De parameters van alle neuronen van het neurale netwerk convergeren door die training dan naar de juiste waarden, zodat het de taak leert uit te voeren.

Vooral deep learning maakt het laatste decennium furore in de wereld van machine learning. Bij deep learning maak je gebruik van een neuraal netwerk met een groot aantal lagen tussen invoer en uitvoer. Door dit grote aantal lagen zijn eindelijk heel complexe taken mogelijk. Een neuraal netwerk als GPT-3 gebruikt zo'n honderd lagen. Als je het volledig zelf zou willen trainen, kijk je aan tegen enkele miljoenen euro's aan kosten om gpu-rekenkracht in de cloud te huren. En dan spreken we nog niet over het energieverbruik en de erbij horende CO₂-uitstoot.

Terwijl de neuronen in onze hersenen met pulsen communiceren, is dat aspect bij de klassieke neurale netwerken niet overgenomen omdat discontinue pulsen nu eenmaal wiskundig moeilijker te hanteren zijn dan continue signalen. Toch is er al de hele geschiedenis van AI ook een aanpak geweest om neurale netwerken te modelleren met pulsen. Dat noemen we een gepulst neuraal netwerk (spiking neural network). Door hun wiskundige complexiteit zijn ze nooit doorgebroken.

In een artikel over gepulse neurale netwerken voor PC-Active beschreef ik onlangs recent onderzoek van het Amsterdamse Centrum Wiskunde & Informatica (CWI) en het Eindhovense onderzoekscentrum IMEC/Holst Centre naar een nieuw algoritme dat een factor honderd energiezuiniger zou zijn dan de beste hedendaagse klassieke neurale netwerken. Voorlopig is de techniek nog beperkt tot zo'n duizend neuronen, maar daarmee liggen toepassingen zoals spraakherkenning, de classificatie van elektrocardiogrammen (ecg) en het herkennen van gebaren al in het verschiet.

Maak je eigen kvm-over-ip-systeem met Pi-KVM

Als je nas of server op zolder is gecrasht, wil je waarschijnlijk voorkomen dat je het probleem ter plaatse moet oplossen. Met een kvm-over-ip-systeem kun je op afstand ingrijpen via het netwerk. Met Pi-KVM bouw je zoiets zelf met een Raspberry Pi en enkele goedkope componenten.

Op de GitHub-pagina van Pi-KVM staat uitgelegd welke componenten je nodig hebt om je eigen kvm te maken:

  • Raspberry Pi 4

  • hdmi-naar-csi-2-adapterbordje of hdmi-naar-usb-dongel

  • een usb-splitter om de usb-c-aansluiting van de Raspberry Pi 4 zowel voor stroom als usb-otg in te zetten

De Raspberry Pi 4 krijgt dan toegang tot de hdmi-uitvoer van je nas of server en emuleert een toetsenbord, muis en opslag. De opensourcesoftware Pi-KVM biedt dit alles in een webinterface aan, zodat je via je webbrowser op je nas of server kunt werken alsof je ernaast zit:

/images/pikvm-opslag.png

Voor PCM schreef ik het artikel Pi-KVM: Nas benaderen via Raspberry Pi op afstand. Ik leg er uit hoe je zelf een usb-splitter maakt van twee usb-kabels en hoe je Pi-KVM installeert en instelt en het gebruikt om een iso-image aan te koppelen en op je nas of server te installeren.

De ontwikkelaars hebben ook een eigen HAT ontwikkeld die je op de Raspberry Pi 4 kunt monteren. De verkoop start binnenkort.

GPT-3: overtuigende onzin

Het Amerikaanse onderzoekslaboratorium OpenAI heeft vorig jaar een neuraal netwerk getraind dat tekst kan schrijven die bijna menselijk lijkt. Het taalmodel maakt gebruik van deep learning met maar liefst 175 miljard parameters. In mei 2020 werd GPT-3, zoals het model heet, voorgesteld. Het is de derde in een reeks van taalmodellen met de naam Generative Pre-trained Transformer.

Op wat voor soort teksten werd GPT-3 dan getraind? Een gefilterde versie van het webarchief van Common Crawl, een andere dataset van webpagina's, WebText2, de inhoud van heel wat boeken (datasets Books1 en Books2) en de inhoud van Wikipedia. Eigenlijk dus zowat alles wat je maar op internet kunt vinden. In totaal ongeveer 450 gigabytes invoer. Opvallend is dat GPT-3 daardoor niet alleen op menselijke teksten is getraind, maar ook op computercode zoals css, jsx en Python. GPT-3 kan daardoor teksten genereren variërend van poëzie tot proza en nieuwsberichten en computerprogramma's.

OpenAI gaf vorig jaar enkele honderden ontwikkelaars toegang tot een bètaversie van de GPT-3 API en verzekerde zich daardoor van enkele maanden media-aandacht. Het wapenfeit waarmee GPT-3 het meest in het nieuws kwam, was dat het volledige nieuwsartikelen uit zijn duim kon zuigen. Je geeft dan een titel en subtitel op en het model schrijft hierover een kort artikel van ongeveer 200 woorden. Die artikelen blijken op het eerste gezicht verrassend coherent te zijn, maar vaak ook duidelijk verkeerde informatie te bevatten of opvallende herhalingen van zinnen.

Vorig jaar schreef ik voor PC-Active in mijn rubriek Denkwerk een artikel over GPT-3, Een computer die als een mens schrijft. Het is nu ook online te lezen. Je vindt er heel wat voorbeelden van wat er misloopt met GPT-3.

Mijn conclusie:

GPT-3 genereert tekst die bij een oppervlakkige lezing niet te onderscheiden is van een door een mens geschreven tekst. Tegelijk heeft dit taalmodel totaal geen begrip van wat het schrijft. Dat is een gevaarlijke combinatie: er kan onzin in de tekst staan, maar zo overtuigend beschreven dat nietsvermoedende lezers het gewoon geloven. Maar eigenlijk is dat niet zo heel verschillend van wat we nu al hebben: veel mensen schrijven ook onzin. GPT-3 is gewoon een samenvatting van de teksten van miljoenen mensen.

Kortom, GPT-3 is een kind van zijn tijd.