Marcel of Robot

Ik moest voor een lezing naar het café van de schouwburg in Cuijk, er stond een dampend zaaltje klaar voor weer een aflevering van ‘Boek & Praat’. In de artiestenfoyer zaten twee technici zich te vervelen. Behalve de lampen aan en uit doen hoefden ze niets, de ene avond was de andere niet. Ze hadden honderden voorstellingen meegemaakt, maar herinnerden zich niets. Nou ja, behalve dan dat Herman Brood voor het allerlaatst in Cuijk had gespeeld.

MARCEL OF ROBOT?

In de podcast Weer een Dag van Marcel van Roosmalen en Gijs Groenteman gaat het regelmatig over AI. Van Roosmalen zegt bang te zijn voor de komst van de "onvermoeibare Marcel", een AI Bot die gratis en voor niets zijn werk zou kunnen doen. Hij is bang dat Alexander Klöpping hem gaat klonen. Luister hieronder naar een fragment uit de podcast Weer een Dag Extra. De volledige aflevering is te beluisteren via Podimo.

--:--
--:--

Daarom nemen we bij POM de proef op de som: kun jij nog herkennen of een stuk tekst is geschreven door de echte Marcel van Roosmalen, of zijn robotkloon? Hoe goed is kunstmatige intelligentie in het simuleren van teksten zo speciaal als die van Marcel? Is Marcels angst voor de onvermoeibare Marcel gegrond? Heeft Alexander Marcels DNA nodig om hem te vervangen?

MARCEL OF ROBOT is er om deze vragen te beantwoorden. Ben jij in staat fragmenten uit Marcel's columns te onderscheiden van gegenereerde teksten? Weet jij nog wel het verschil tussen Marcel of een robot?

Hoe werkt het?

Het is heel simpel. Bovenin de pagina zie je een tekstfragment en twee knoppen. Denk jij dat het fragment is geschreven door Marcel van Roosmalen? Klik dan op de knop 'Marcel'. Vermoed je dat het gegenereerd is door een robot? Klik dan op de knop 'Robot'. Vervolgens word je gevraagd om een toelichting te geven op je keuze. Dit is optioneel, maar het zou fijn zijn als je dit invult. Als je klaar bent met het invullen van de toelichting, klik je op de knop 'Controleer'. Je krijgt dan te zien of je het goed had. Klik op de knop 'Opnieuw' om een nieuw fragment te krijgen. Je kunt zo vaak opnieuw beginnen als je wilt, er zijn een paar honderd fragmenten beschikbaar!

Wie heeft dit gemaakt?

MARCEL OF ROBOT is gebaseerd op een idee van Alexander Klöpping. In de podcast POM werd de vraag gesteld of AI nu goed genoeg is om een unieke schrijver als Marcel van Roosmalen te vervangen.

Twee studenten van de TU Delft hebben het idee verwezenlijkt in opdracht van POMperium VOF. De ene, Arian Joyandeh, is AI-nerd en een dubbele master student in de richting van Applied Mathematics en Computer Science. De andere, Joep de Jong, heeft zijn jeugd verspild aan het maken van websites en studeert nu Applied Mathematics. Samen zijn de jongens werkzaam onder de naam Sjoemelsoftware, een tot nog toe onbekend bedrijf dat zich bezighoudt met het beunen van software.

Wat gebeurt er met mijn antwoorden?

Het staat nog niet vast, maar mogelijk worden de antwoorden gebruikt om de AI verder te trainen op het schrijven van artikelen in de stijl van Marcel van Roosmalen. Daarnaast kan het zijn dat geanonimiseerde resultaten worden gepubliceerd, denk bijvoorbeeld aan het aantal foutpositieven en foutnegatieven in de binaire classificatie door gebruikers.

Hoe zijn de teksten gegenereerd?

Het genereren van artikelen was een hele klus. We hebben ons in eerste instantie laten inspireren door dit artikel. We hebben geprobeerd GPT-3 modellen te finetunen. Hiervoor hebben eerst een aantal columns van Marcel verzameld en deze opgesplitst in artikelen van meer dan 400 karakters per stuk. We hebben geprobeerd te trainen op de GPT-3 modellen (ada, babbage, curie, davinci), maar de resultaten waren nogal slecht. Alhoewel ze wel "beter" waren bij geavanceerdere modellen. Interessant was dat niemand de ada, babbage en curie modellen gebruikte, terwijl er voor davinci een wachtrij was van meer dan 30 mensen.

We hebben toen besloten om een ChatGPT bot te maken waar we de systeem prompt zo konden aanpassen dat de gegenereerde teksten meer op de stijl van Marcel lijken. We hebben ons hierbij laten inspireren door dit project. We denken dat deze aanpak betere resultaten oplevert omdat we hierbij betere modellen kunnen gebruiken: GPT-4 en GPT3.5. Finetunen kan namelijk alleen met GPT-3: Leuk voor classificatie problemen, maar minder voor conditionele generatie van tekst.

Om de schrijfstijl van Marcel te analyseren, hebben we ChatGPT gebruikt om pointers te krijgen. Hierbij was het lastig om een afweging te maken tussen het geven van veel instructies, zodat de bot de stijl van Marcel beter begrijpt, en het geven van weinig instructies, zodat de "afstand" tussen de originele prompt en de gegenereerde tekst klein blijft. Uiteindelijk hebben we de vijf beste pointers gebruikt.

De schrijfstijl van Marcel is ook erg typerend. In een enkele column linkt hij bijvoorbeeld meerdere onderwerpen aan elkaar. Daarom hebben we uit al zijn columns via ChatGPT allerlei onderwerpen geëxtraheerd. We hebben voor elk gegenereerd artikel een paar onderwerpen uit die oude columns meegegeven. Ook hier zit een trade-off in: meer onderwerpen zorgen voor interessante vergelijkingen, maar ook potentie om gewoon een saaie opsomming te krijgen van de onderwerpen. Hetgeen dat erg goed werkte is uit verschillende columns een paar opeenvolgende onderwerpen te trekken. De opeenvolgende onderwerpen binnen een tekst vatten redelijk goed de rode lijn van Marcels verhaal samen. Door dat te combineren met een ander artikel, krijg je potentieel nieuwe inzichten, die ook nog eens "Marcelliaans" zijn, omdat ze gaan over onderwerpen waar hij al eerder over heeft geschreven. We houden ook een klein lijstje bij met Marcelliaanse onderwerpen, zoals "Wormer" of "Vitesse", die hebben een kans van 0.3 om te worden toegevoegd aan de onderwerpen waar de tekst over moet gaan.

We hebben drie verschillende instellingen aan ChatGPT4 parameters gebruikt: de standaard instellingen van ChatGPT, een waar we zoveel mogelijk randomheid willen om over nieuwe dingen te schrijven, en een laatste waar we voornamelijk willen dat ChatGPT probeert hetgeen te produceren dat hij denkt dat "het beste" is (meer conservatief).

De uitdagingen die we nu hebben, zijn het verwijderen van standaard ChatGPT-zinconstructies zoals "Maar ja" of "Laten we eerlijk zijn". We hebben geprobeerd dit op te lossen met een prompt, maar dat werkte niet echt, omdat de gegenereerde tekst dan minder "Marcelliaans" werd. Een andere uitdaging is het toevoegen van super specifieke informatie, zoals namen van mensen, leeftijden en actuele gebebeurtenissen. Dit kan moeilijk zijn, omdat deze informatie niet altijd beschikbaar is in de originele prompt en/of over tijd kan veranderen.