Een creatieve computer?

Gillis
Hermans

Artificiële intelligentie is voor veel mensen niet langer een fantasie. Computers hebben de laatste jaren hun kracht bewezen aan de hand van verschillende verbazingwekkende toepassingen (denk onder meer aan AlphaGo, deepfakes en autonome voertuigen). Veel vertrouwen is er, zelfs bij AI-onderzoekers, echter niet in computationele creativiteit, de studie naar machines die in staat zijn tot creatief gedrag. Enerzijds is het ontzettend moeilijk om een definitie op creativiteit te plakken. Het wordt juist vaak gezien als unieke vorm van menselijke uitdrukking. Anderzijds zijn er (nog) geen systemen die overtuigend creatief zijn.

Stijl leren uit voorbeelden

Een essentieel onderdeel van menselijke creativiteit betreft het leren van nieuwe kennis, onder andere in de vorm van technieken, concepten of stijlen, en deze te combineren in een origineel werk. Een schilder zal bijvoorbeeld inspiratie halen uit andere kunst en deze kennis kunnen verderzetten in zijn eigen werk. Een belangrijk onderdeel in een creatieve computer zou op dezelfde manier uit voorbeelden kunnen bijleren om deze informatie op creatieve manier te gebruiken.

Nauw verwant aan computationele creativiteit is procedurele generatie, of het automatisch genereren van objecten met behulp van algoritmen. Het creëren van een nieuw object is namelijk een typisch creatieve actie dat in het geval van procedurele generatie door een computerprogramma wordt uitgevoerd. Procedurele generatie algoritmes werden niet ontwikkeld met het doel van computationele creativiteit voor ogen. In de videogame industrie wordt procedurele generatie gebruikt om, in de plaats van elk onderdeel van een spel met de hand te ontwikkelen, efficiënt en goedkoop enorm veel objecten te kunnen genereren. Het is een brede techniek dat modellen van bomen, karakters, missies, muziek en zelfs volledige spellen kan genereren. De algoritmes die het generatieproces bepalen moeten wel met de hand worden opgesteld. Indien je huizen in een bepaalde stijl wil genereren moet je eerst handmatig de regels van deze stijl bepalen. Hoe ingewikkelder de objecten die je wil genereren, hoe ingewikkelder dit proces. 

Kunnen we procedurele generatie verbeteren door automatisch regels voor stijl te leren, terwijl we een stapje dichter bij computationele creativiteit zetten?

Deze thesis onderzocht een techniek om de stijl te leren van driedimensionale gebouwen in de vorm van regels tussen geometrische vormen. De gebouwen worden opgedeeld in een aantal vormen die stijlelementen voorstellen. Vervolgens zoekt het systeem regels tussen deze stijlelementen. Door deze regels uit te voeren kan de computer originele gebouwen genereren in een gelijkaardige stijl als het voorbeeld. Het systeem laat ook toe meerdere voorbeelden te gebruiken met als resultaat een combinatie van stijlen.

Twee voorbeelden worden verdeeld in kleinere stijlelementen. Regels tussen deze elementen laten ons toe nieuwe gebouwen te genereren met een combinatie van de stijl van beide voorbeelden.Figuur 1: Twee voorbeelden worden verdeeld in kleinere stijlelementen. Regels tussen deze elementen laten ons toe nieuwe gebouwen te genereren met een combinatie van de stijl van beide voorbeelden.

Automatisch stijlelementen vinden

We werken met voorbeelden in de vorm van Minecraft gebouwen, omdat ze bestaan uit eenvoudige kubusvormige blokken van gelijke grootte. Deze blokken bestaan elk uit een materiaal zoals hout of glas. Eerst en vooral willen we de voorbeelden opdelen in groepen samenhangende blokken, die we vormen noemen, die een deel van de stijl voorstellen. Deze opdeling wordt uitgevoerd door een iteratief algoritme dat start met één vorm voor elke blok in het voorbeeld. In elke stap voert het algoritme een merge of een split uit dat de groep vormen zal verbeteren. Een merge voegt twee vormen, en de blokken waaruit ze bestaan, samen in één, terwijl een split één vorm splitst in twee nieuwe vormen. Wat is echter een betere vorm, of een betere groep vormen? 

Visualisatie van een merge en een split operatie.Figuur 2: Visualisatie van een merge en een split operatie.

We merken op dat de meeste stijlelementen bestaan uit een klein aantal materialen. Zo bestaat een raam meestal enkel uit glas en een raamkozijn in één materiaal. We zorgen er dus voor dat het algoritme op zoek gaat naar vormen die bestaan uit zo weinig mogelijk materialen. Anderzijds willen we niet dat elke vorm uit maar één materiaal bestaat. Daarom geven we het algoritme een tweede doel, namelijk het voorbeeld voorstellen met zo weinig mogelijk vormen. Het algoritme zal een balans zoeken tussen deze twee doelstellingen en uiteindelijk voor elk voorbeeld een kleine groep simpele vormen kunnen vinden.

Het generatieproces

Met de ontdekte vormen kunnen we regels opstellen voor de stijl van het voorbeeld. Deze regels stellen de relaties tussen de vormen voor. Indien twee vormen elkaar aanraken in het voorbeeld creëren we een regel waarbij beide vormen elkaar kunnen produceren. Indien één van deze vormen aanwezig is in het gebouw dat gegenereerd wordt, zal het uitvoeren van deze regel de tweede vorm in het gebouw plaatsen. Bovendien beschrijven de regels waar vormen geplaatst moeten worden aan de hand van de relaties tussen vormen in het voorbeeld.

Deze regels laten ons op de volgende manier toe nieuwe gebouwen in dezelfde stijl als het voorbeeld te genereren. Beginnend van één enkele vorm, voeren we steeds een regel uit dat een nieuwe vorm in het gebouw plaatst op een geschikte plaats. Dit proces kunnen we op elk moment stopzetten met als resultaat een gebouw met vaak ontbrekende en onnodige vormen. Na een automatische bewerkingsstap krijgen we een gebouw in dezelfde stijl als de voorbeelden. 

Een voorbeeld, een gebouw voor de nabewerkingsstap en een finaal origineel gebouw.Figuur 3: Een voorbeeld, een gebouw in dezelfde stijl als het voorbeeld voor de bewerkingsstap en een finaal origineel gebouw.

Vooruitzichten

Onze methode werkt: het is mogelijk om regels te leren voor de stijl van één of meerdere gebouwen en originele gebouwen in een gelijkaardige stijl te genereren. Automatisch stijlen leren nabootsen is een belangrijke ontwikkeling voor procedurele generatie. Het algoritme heeft echter een aantal tekortkomingen die op meerdere manieren verbeterd kunnen worden. Bovendien is er nood aan algemene methodes die regels kunnen leren voor verschillende soorten objecten.

Hier spreken we natuurlijk nog niet van computationele creativiteit, maar met verder onderzoek zouden dit soort algoritmes, die nieuwe concepten leren uit voorbeelden, een belangrijke basis kunnen vormen voor creatieve computersystemen.

Download scriptie (4.39 MB)
Universiteit of Hogeschool
KU Leuven
Thesis jaar
2020
Promotor(en)
Prof. Luc De Raedt