AI is “hot and happening”.
Steeds vaker zie ik de term AI voorbijkomen, niet alleen in het nieuws maar ik hoor het ook vaak als gespreksonderwerp in mijn omgeving.
Ook in het werkveld hoor ik bij klanten er vaak collega’s over praten, maar er mee werken is vaak nog niet gebeurd. Omdat ik het gevoel heb dat veel mensen nog niet beseffen hoe ze AI voor zich kunnen laten werken lijkt mij dit een uitstekend onderwerp voor een blog. Je kan ChatGPT benaderen via deze site https://chat.openai.com/ een gratis account aanmaken is binnen enkele minuten gedaan. Er zijn veel alternatieven voor ChatGPT enkele zullen wel besproken worden maar in hoofdzaken gaat het over ChatGPT.
Artificiële intelligentie, de historie
AI in hedendaagse chatbots zoals ChatGPT of bijvoorbeeld Github Copilot kan je zien als een digitaal maatje waaraan je vragen kan stellen over bijna alle onderwerpen. De actualiteit en je creativiteit is de limiet qua vraagstelling. Ondanks dat AI steeds meer in de picture staat, bestaat de basis van AI al heel lang.
De eerste kinderstapjes van AI zijn gezet in de jaren 50 door een wetenschapper genaamd Alan Turing, hij bedacht de Turing-test. De oorsprong van deze test ligt in de vraag of een machine, menselijk gedrag kan vertonen. Dit was dan op basis van tekst op een computerscherm.
In de Jaren 60 ontwikkelde Joseph Weizenbaum de eerste echte chatbot genaamd ELIZA. ELIZA was in staat om eenvoudige gesprekken te voeren en simuleerde de psychotherapeut Carl Rogers welke de grondlegger is van Rogeriaanse Psychologie. Het programma maakte gebruik van eenvoudige patroonherkenning om gesprekken te genereren.
Een voorbeeld van patroonherkenning werkt in ELIZA:
Gebruiker: “Ik voel me verdrietig vandaag.”
Het woord “voel” gevolgd door een emotie (in dit geval “verdrietig“) wordt dan dus geïnterpreteerd als context.
Eliza zou dan de volgende vraag stellen:
“Kun je me wat meer vertellen over waarom je je verdrietig voelt?”
In de jaren 70 en 80 werd dit principe uitgebreid maar dan met Regel-gebaseerde-systemen ook wel bekend als scripting. Deze chatbots reageerde op basis van specifieke woorden of zinnen die gedefinieerd waren door menselijke interactie. Deze chatbots hadden enkele nadelen, bijvoorbeeld dat ze alleen reageerde op specifieke input, niks kunnen onthouden en veel menselijke interventie vereisten.
Een voorbeeld waar een chatbot met geografische informatie als input heeft gehad:
Gebruiker: “Wat is de hoofdstad van Frankrijk?”
Chatbot (regelgebaseerd): “De hoofdstad van Frankrijk is Parijs.”
Wanneer we deze chatbot vervolgens de volgende vraag stellen:
Gebruiker: “Vertel me een grap.”
Chatbot (regelgebaseerd): “Mijn enige doel is om informatie te verstrekken over geografie. Vraag me alsjeblieft iets over geografie.”
De ontwikkelingen die meer lijken op de de AI-oplossingen die we hedendaags kennen zijn in de jaren 90 en 2000’s ontstaan. Toen is namelijk de opkomst van Machine Learning en Neural Networks ontstaan (hierover later meer).
Dit gaf de mogelijkheid om patronen te leren uit grote hoeveelheden tekst doormiddel van het leren grote hoeveelheden informatie. Hierdoor kan AI menselijker te reageren op natuurlijk taal.
Hedendaags kennen we de Generative Pre-trained Transformer (GPT), dit is de laatste ontwikkeling in AI Chatbots. Deze Chatbots gebruiken diepe neurale netwerken om teksten te begrijpen en te genereren. Ze worden getraind op enorme hoeveelheden tekst uit het internet en kunnen mensachtige tekst genereren op basis van context. Dit is de samenkomst van alle kennis en kunde door de jaren heen in één overkoepelend model. Dit model kan nu zowel menselijker reageren, vragen die eerder zijn gesteld onthouden en bezit in tegenstelling tot de vorige modellen heel veel kennisbronnen.
Leuk die geschiedenisles maar hoe werkt dit in actie?
ChatGPT of alternatieven is zoals de naam al aangeeft, een Chat waarin jij met de AI praat.
Je kan dit vergelijken met een whatsapp chat met een helpdesk, je stuurt je vraag en je krijgt een antwoord. Deze AI heeft kennis gelezen uit ontzettend veel internetbronnen en kan daarom worden gezien als een soort Orakel. Deze kennis wordt ook gestaafd door interactie met mensen, wanneer iemand aangeeft dat hij of zij geholpen is met een bepaald antwoord van ChatGPT zal dit in de weging van ChatGPT worden meegenomen waardoor dit antwoord gestaafd is bij vervolgvragen.
Een ander voordeel is dat wanneer je een vraag opzoekt op google, dat je zelden een situatie krijgen die 100% aansluit bij jouw situatie, waardoor er altijd enkele onbekende variabelen blijven in de oplossing. Zo heb ik laatst een noodsituatie meegemaakt waarin ik snel moest handelen.
Na het klussen in mijn garage was er epoxyverf op mijn autostoel gekomen, ik kwam er de volgende dag pas achter, dit is een verflaag die na verloop van tijd erg hard wordt. Door snel ChatGPT te raadplegen met de situatie, het product het type auto en dat de auto Vegan leder (plastic) bevat wat gevoelig is voor chemicaliën, kwam ChatGPT snel met de oplossing, welke ontzettend goed werkte.
Voorbeeld 1: ChatGPT in het werkveld van een data engineer
Gedurende mijn laatste opdracht heeft ChatGPT mij meerdere keren veel werk bespaard.
In CBS-data wordt vaak veel met conversietabellen gewerkt.
Wanneer ik de codes uit mijn dataset in chatGPT zet en ik laat deze vervolgens een SSIS-query schrijven voor een derived column. In onderstaande query zien we T001019 met de definitie Totaal burgerlijke staat. In dit voorbeeld heeft SSIS voor mij alles wat ik in de derived column measure kan plakken genereerd welke een additionele kolom toevoegd met de bijpassende naam die hoort bij deze code.
Identifier == “T001019” ? “Totaal burgerlijke staat” :
Identifier == “1010” ? “Ongehuwd” :
Identifier == “1020” ? “Gehuwd” :
Identifier == “1050” ? “Verweduwd” :
Identifier == “1080” ? “Gescheiden” :
“Unknown”
Ik heb meermaals gehad dat ik dit op zeer grote schaal (denk aan 50 rijen aan codes) moest doen.
Door dit simpelweg aan ChatGPT te vragen om dit te genereren realiseerde ik daarmee een forse tijdsbesparing. Normaliter moet je dit op grote schaal nalopen en controleren dat de quotes en dubbele punten op de juiste plaats staan. Nu heb ik alleen de Identifier codes en de definities aangeleverd en ChatGPT deed de rest.
Voorbeeld 2: ChatGPT als vraagbaak en adviseur
Een ander voorbeeld is dat ChatGPT je kan helpen met het onder de loep nemen van waarom je dingen doet zoals je ze doet. In SSIS (On-premise ETL tool van microsoft) gebruik ik voor een naamveld vaak het datatype WSTR (Unicode string) inplaats van een reguliere String (STR), deze Character set encoding van een string, is flexibeler maar waarom we dit nou exact doen, wist ik niet precies.
Een korte vraag aan ChatGPT legt je uit dat dit te maken heeft met uitzonderlijke karakters, denk hierbij aan bijvoorbeeld é, ï, ö en ‘` op namen. Met een reguliere String als dataformat zal dit fout gaan en zien we unieke karakters in de database of een foutmelding in de ETL-tool.
Ik kreeg naast de voordelen ook eventuele overweging mee, zoals dat een Unicode string meer bytes opslag vraagt in de database. Het is dus goed om soms na te gaan of je het juiste doet en soms technische overwegingen te bespreken. Door de laagdrempeligheid en snelheid is dit snel tussentijds na te vragen:
Voorbeeld 3: ChatGPT de hulp bij het ontleden van DAX
Een ander mooi voorbeeld is dat ik recent een DAX-formule opgestuurd kreeg met de vraag wat deze doet. Omdat ChatGPT zelfs kolomnamen kan koppelen aan context (kolomnaam omzet = nummerieke waarde) werkt dit erg simpel en toegankelijk.
Mijn vraag was:
Kan je middels een korte zoekterm snel achterhalen wat deze Dax formule doet:
Kan je aangeven in deze daxmeasure wat er per stap gebeurt in het toegevoegde commentaar:*
Bezettingsgraad_GemiddeldeTotaal =
VAR MaxDatumKM = MAX(FactRegistratieKM[Datum])
VAR MaxDatumAlleRecords = CALCULATE(MAX(FactRegistratieKM[Datum]), ALL(FactRegistratieKM)) VAR DagenGereden = COUNTROWS(FactRegistratieKM)
VAR DagenStilgestaan = MAX(DATEDIFF(MaxDatumKM, MaxDatumAlleRecords, DAY), 0)
VAR DagenActief = DagenGereden + DagenStilgestaan
RETURN DIVIDE(DagenGereden, DagenActief)
Als reactie kreeg ik:
Natuurlijk! Hieronder heb ik de DAX-meetwaarde ‘BezettingsgraadMVD_GemiddeldeTotaal’ uitgelegd met opmerkingen (aangeduid met ‘–‘) die aangeven wat er in elke stap gebeurt:
BezettingsgraadMVD_GemiddeldeTotaal =
VAR MaxDatumKM = MAX(FactRegistratieKM[Datum])
— Bepaal de maximale datum uit de kolom [Datum] in de tabel FactRegistratieKM.
VAR MaxDatumAlleRecords = CALCULATE(MAX(FactRegistratieKM[Datum]), ALL(FactRegistratieKM))
— Bepaal de maximale datum uit de kolom [Datum] in de tabel FactRegistratieKM, zonder rekening te houden met eventuele filters op de kolom FactRegistratieKM[Datum].
VAR DagenGereden = COUNTROWS(FactRegistratieKM)
— Tel het aantal rijen (records) in de tabel FactRegistratieKM. Dit geeft het totale aantal dagen dat de voertuigen hebben gereden.
VAR DagenStilgestaan = MAX(DATEDIFF(MaxDatumKM, MaxDatumAlleRecords, DAY), 0)
— Bereken het aantal dagen dat de voertuigen hebben stilgestaan. Dit wordt gedaan door het verschil te nemen tussen de maximale datum van alle records (MaxDatumAlleRecords) en de maximale datum uit de kolom [Datum] (MaxDatumKM), en vervolgens wordt het resultaat afgerond naar het dichtstbijzijnde geheel getal in dagen. Als het resultaat negatief is, wordt het vervangen door 0.
VAR DagenActief = DagenGereden + DagenStilgestaan
— Bereken het totale aantal dagen dat de voertuigen actief waren. Dit is gelijk aan het aantal dagen gereden plus het aantal dagen stilgestaan.
RETURN DIVIDE(DagenGereden, DagenActief)
— Bepaal de bezettingsgraad door het aantal dagen gereden te delen door het totale aantal dagen dat de voertuigen actief waren (dagen gereden + dagen stilgestaan).
Ik hoop dat dit helpt om de DAX-meetwaarde en de verschillende stappen in de formule beter te begrijpen. Als je nog verdere vragen hebt of iets verduidelijkt wilt hebben, laat het me gerust weten!
Hoe stel ik de juiste vragen aan ChatGPT:
Zoals al eerder kan je veel creativiteit kwijt in de vraagstelling aan ChatGPT.
In onderstaande afbeelding te zien is er van alles mogelijk qua vraagstelling en daarmee output.
Samengevat nog enkele voorbeelden om aan chatGPT te vragen:
- Advies vragen: “Hoe krijg ik Epoxy uit mijn autostoel zonder het leer te beschadigen”
- Praktisch Problemen oplossen: “Mijn database geeft een out of disk space error (code 1234) hoe kan ik dit het beste oplossen”
- Kennis: Ik heb een C# script nodig wat kan verbinden naar een Odata V4 API van het CBS, kan je een basis geven qua code die ik in SSIS kan toepassen in een script component”
- Vertalen: “Hoe kan ik op een nette manier een glas wijn bestellen in de Fanse taal” of “Kan ik een simpel gesprek met je voeren in het Frans, taalniveau A2 en verbeter mij indien ik fouten maak”
- Creativiteit: “Kan je een sinterklaasgedicht genereren voor mijn 9-jarige neefje die van auto’s houdt”.
Best practices van AI
- Wees specifiek en helder in je vraagstelling, hoe completer de informatie je geeft, hoe completer en toepasbaarder het antwoord is.
- Maak gebruik van het iteratieve concept, je kan een basisvraag stellen om vervolgens een vervolgvraag te stellen opvolgend op de basisvraag. Zie dit als een dialoog.
- Wees ervan bewust dat de kennis van AI en met name ChatGPT beperkt is tot September 2021. Je kan dus geen actuele informatie over bijvoorbeeld het weer of beurskoersen krijgen.
- AI-modellen zijn niet perfect en kunnen nog foutieve data als resultaat geven, gelukkig wordt dit door het gebruik van mensen steeds beter, vergeet daarom nooit te bevestigen wanneer het antwoord van ChatGPT klopt. Dit versterkt het algoritme om dit antwoord in het vervolg weer te geven.
- Zoals met alles op het internet wees je bewust van privacy, zet geen persoonlijke informatie in je vraagstelling.
- Gebruik AI op een integere manier, het brengt veel goeds en kan veel voordelen bieden.
Alternatieven en Plugins
Er zijn veel alternatieven en plugins beschikbaar, het is wel van belang te realiseren dat je hier de betaalde versie van ChatGPT voor nodig hebt. De standaard gratis versie werkt hier niet mee.
Er zijn tal van plugins beschikbaar waarmee je bijvoorbeeld taal kan oefenen tot vragen kan stellen over de inhoud van een pdf.
Conclusie
“ChatGPT een uitstekende aanvulling op ons werkveld maar met één grote kanttekening”
ChatGPT is binnen het werkveld een verrijking van kennis en stelt ons in staat om sneller en efficiënter te werken. Ook stelt het ons als consultant in staat om sneller nieuwe materie eigen te maken omdat je bijvoorbeeld vragen kan stellen hoe bepaalde ETL tools zich met elkaar verhouden qua werkwijze. Een ander bijkomend voordeel is dat je eigen werkwijze kan toetsen. ICT is een vakgebied wat constant aan verandering onderhevig is, waardoor doorontwikkelen van belang is als professional. ChatGPT stelt je in staat om je aannames te toetsen en/of te valideren bij twijfel wanneer er nieuwe addities of functies aan software is gedaan.
Een belangrijke kanttekening hierbij is dat er ook een keerzijde zit aan het gebruik van ChatGPT.
Zoals eerder aangegeven in de Best Practices, kan ChatGPT foutieve informatie geven als resultaat.
Hierdoor is het van belang dat je ChatGPT gebruikt als springplank om tot een bepaalde oplossing te komen. Het is zaak dat je bij het gebruik van ChatGPT, jezelf verdiept in de context en de materie zodat je zelf kan uitleggen waarom het zo werkt. Dit is een valkuil voor gebruikers omdat dit er van kan zorgen dat mensen blind vertrouwen op ChatGPT en hierdoor zelf niet de kennis opdoen welke nodig is om goede (toekomstige) beslissingen te nemen in het kennisdomein en blind vertrouwen op mogelijk foutieve informatie.
Buiten het bovenstaande, is mijn advies voor iedereen om zich te verdiepen in ChatGPT, het gebruik van AI en soortgelijke oplossing als ChatGPT zal een groter deel uitgaan maken van ons werk. Je ziet dit nu al terug in zoekmachines zoals Bing, ook Microsoft Office krijgt steeds meer AI integratie in de vorm van CoPilot. Het is laagdrempelig en er is online steeds meer informatie over te vinden over die je werk makkelijker kan maken. Om optimaal gebruik te kunnen maken van alle toekomstige verrijking die AI ons biedt raad ik iedereen aan om ChatGPT of via Bing met AI te testen. Je zal merken dat je hier snel meerwaarde van ziet.
Extra: Wat is een neuraal netwerk?
Een neuraal netwerk is een model wat geïnspireerd is op de werking van menselijke hersenen.
Het bestaat uit verschillende lagen met neuronen welke informatie verwerken en weer doorgeven aan een volgende laag:
Op basis van de bovenstaande afbeelding:
Stel je voor dat we een dataset hebben met informatie over mensen, waarbij elke persoon wordt beschreven door twee kenmerken: gewicht (bijvoorbeeld in kilogrammen) en lengte (bijvoorbeeld in centimeters), en het geslacht van de persoon (bijvoorbeeld mannelijk of vrouwelijk). We willen een model bouwen dat het geslacht van een persoon kan voorspellen op basis van hun gewicht en lengte.
Een neuraal netwerk kan dit doen door lagen van neuronen te gebruiken om patronen in de gegevens te ontdekken. Hier is hoe het werkt:
Inputlaag: We hebben twee kenmerken (gewicht en lengte), dus we hebben twee knooppunten in de inputlaag van het neuraal netwerk, één voor elk kenmerk.
Verwerking: Het netwerk heeft één of meerdere tussenliggende lagen met kunstmatige neuronen. Deze neuronen voeren berekeningen uit op de inputkenmerken (gewicht en lengte) en geven resultaten door aan de volgende laag.
Gewichten en biases: Elke verbinding tussen een inputknooppunt en een neuron in de tussenliggende laag heeft een gewicht en een bias. Deze gewichten en biases worden aangepast tijdens het trainingsproces om het netwerk te leren hoe het de kenmerken moet combineren om het geslacht nauwkeurig te voorspellen.
Activatiefunctie: Elke kunstmatige neuron past een activatiefunctie toe op de resultaten die het ontvangt. Dit introduceert niet-lineariteit in het netwerk en helpt bij het leren van complexe patronen.
Uitvoerlaag: De laatste laag van het netwerk produceert de uiteindelijke uitvoer, in dit geval, het geschatte geslacht van de persoon (bijvoorbeeld mannelijk of vrouwelijk).
Training: We trainen het neurale netwerk met behulp van deze dataset, waarbij we de werkelijke geslachtslabels vergelijken met de voorspellingen van het netwerk. Het netwerk past de gewichten en biases aan om de fout te minimaliseren en zo nauwkeuriger te worden in het voorspellen van geslachten.
Voorspellingen maken: Na de training kan het getrainde netwerk nieuwe gegevenspunten (gewicht en lengte) nemen en voorspellingen doen over het geslacht van een persoon op basis van wat het heeft geleerd tijdens de training.
Martijn van Dongen
BI Consultant @ Conspect
Bronnen:
- https://victorzhou.com/blog/intro-to-neural-networks/
- https://www.youtube.com/watch?v=4VROUIAF2Do&t=120s
- https://global-uploads.webflow.com/6448e9681edf2806b1318b9a/64803c227443fa45bc3320c1_ChatGPT%20Zero%20to%20Power%20User.pdf
- https://www.linkedin.com/posts/gptai_most-detailed-chatgpt-cheat-sheet-you-activity-7066749180173578240-0wkm
- https://chat.openai.com/
- https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/