Prof. Jan Bosch
Deze week was ik aanwezig bij de International Conference on Software Business(ICSOB 2020) en gaf ik een presentatie over autonoom verbeterende systemen. De kerngedachte is dat software-intensieve systemen hun prestaties kunnen meten, weten waarvoor ze moeten optimaliseren en autonoom kunnen experimenteren met hun eigen gedrag.
De geschiedenis van software-intensieve systemen kan worden verdeeld in drie hoofdfasen. In de eerste fase bouwden we systemen volgens een specificatie. Deze specificatie kon afkomstig zijn van de klant of van productmanagers, maar het doel van het R&D team was om een systeem te bouwen dat voldeed aan de eisen in de specificatie.

Veel online bedrijven, maar ook de eerste embedded-systems bedrijven, bevinden zich in de volgende fase. Hier krijgen teams geen specificatie, maar eerder een set van één of meer geprioriteerde KPI’s om te verbeteren. In e-commerce is conversie vaak de belangrijkste KPI; in embedded systemen wordt vaak een gewogen mix van prestatie, betrouwbaarheid en andere kwaliteitsattributen gebruikt. Teams krijgen als doel een of meer van deze KPI’s te verbeteren zonder de andere (significant) te verslechteren. Ze moeten hypotheses hierover ontwikkelen en deze in het veld testen met behulp van bijvoorbeeld A/B-experimenten.
Hoewel de tweede fase voor veel bedrijven een grote stap voorwaarts is, is het probleem dat het nog steeds het team is dat al het zware werk doet. Vooral het uitvoeren van veel A/B-experimenten kan veel moeite kosten. De volgende stap die sommige bedrijven beginnen te verkennen is om het systeem zijn eigen experimenten te laten genereren met de bedoeling te leren over manieren om zijn eigen prestaties te verbeteren. Theoretisch valt dit in de categorie van reinforcement learning, maar het blijkt een hele uitdaging om dit in een empirische, industriële context te realiseren.
De evolutie die bedrijven doormaken om dit derde stadium te bereiken, kan in een model worden gezet, dat de activiteiten en technologieën toont die op elk niveau kunnen worden gebruikt. Vanaf niveau 2 zien we een aantal autonoom verbeterende systeemgedragingen, zoals het toevoegen van intelligente, online selectie van experimenten en het automatisch genereren van experimenten. Dit resulteert in allerlei uitdagingen, waaronder het voorspellen van de slechtste prestaties van de gegenereerde alternatieven. Als een systeem autonoom experimenten genereert en inzet, kunnen sommige van deze experimenten zeer slechte prestaties laten zien, wat betekent dat het systeem modellen nodig heeft om de slechtste uitkomst voor elk experiment te voorspellen, evenals oplossingen om lopende experimenten te annuleren als de prestaties negatief worden beïnvloed.

'We need to start looking into online reinforcement learning'
Met de toenemende prevalentie van AI moeten we beginnen te kijken naar online reinforcement learning in software-intensieve systemen, omdat dit het autonoom verbeteren van systemen zou vergemakkelijken. Deze ambitie gaat gepaard met grote uitdagingen die we nu aan het onderzoeken zijn. Ik moedig je echter aan om te onderzoeken waar de systemen die je bouwt autonoom hun eigen gedrag zouden kunnen verbeteren. Zelfs beginnen in een klein, risicovrij hoekje van het systeem kan heel nuttig zijn om dit paradigma te leren kennen. Het algemene doel is dat elke dag dat ik je product gebruik, ik wil dat het beter wordt!