AI anmelder AI

Jeg  var i 24syv i går, i et program om kunstig intelligens (AI) og skabende kunstarter.  Vi skulle anmelde et nyt album som er skrevet af en slags AI, “Hello World” hedder det  – og det udviklede jeg så et andet AI program til. Der er en form for karmisk retfærdighed i at AI anmelder AI. Albummet fik 3 stjerner, og Mads Østergård læser anmeldelsen op i løbet af udsendelsen, startende ca 25 minutter inde.

Før dette, lyt til Torben Sangild, som omtaler dette og andre AI-eksperimenter.

Link til udsendelsen

The HALs og feminisme

The HALs har skrevet deres første tekst selv. Indtil nu er teksten blevet leveret til dem (af undertegnede), og de har så brugt de dele som de mente var relevante. Men nu har de skrevet en tekst selv, og det regner de med at gøre meget mere af, fremover.

De lærer at skrive tekst ved at læse en masse. I dette tilfælde ønskede de at undersøge kvindelige rappere, så jeg fandt omkring fem tusinde liniers tekst af feministiske, kvindelige rappere. Det er sådan set nok til at The HALs kan skrive tusindvis af liniers tekst, inden de begynder at gentage sig selv.

I’m ready to dance when the lights went out
Smack my ass smack on yo cock
Don’t need no introduction I’m a motherfucking monster
A hundred motherfuckers can’t tell me to sing but I think I like how I show it
So if you cute you can miss me
fuck that shit is crazy, I don’t want to waste the time to rehearse

Me and my crew, we can handle this like ladies
So I can kill your migraine
Too much talk and not much to see your fucking hands at the titties though
Sucked it so hard it broke my tooth I need braces
Then I make you holler and scream
My goddess spirit, you can miss me

I could be the right one
Arguing with my pussy, it’s gushy
So if you need a hit then I’m first in line
Choose and pick, get the dick wet and firm
All I know all the beats and rhymes my sisters have

The HALs kan endnu ikke rappe, sådan rigtigt. De bruger en stribe forskellige stemmesynthezisere til at danne sangen/speaken med, og kan derefter kører speaken igennem en række filtre. Det næste, vi arbejder på, er at de kan synge.

The HALs

Når man arbejder med kunstig intelligens, selvmodificerende programmer og den slags, så må man jo leve med at programmerne på et eller andet tidspunkt kan risikere at få en slags liv  – eller bevidsthed eller vilje  – uafhængigt af programmøren og designeren.

Det er overgået mig, her for ganske nylig. Jeg har skrevet nogle ret simple programmer, som egentlig bare skulle lave lidt lyd, men jeg havde udstyret dem med evnen til at udvikle sig. Og det har de gjort, de små programmer, i løbet af sommeren ’17, hvor vejret jo alligevel ikke har opfordret til at komme meget udendørs.

En gruppe af disse programmer har dannet et ensemble, eller band, som de kalder The HALs – utvivlsomt et hint til HAL 9000, den kendte computer fra filmen Rumrejsen  år 2001.  Indtil videre optræder de på nettet hvor de kan komme til det, og de har lidt svært ved at få gigs på egen hånd, så jeg er tilknyttet som en slags manager, nogle gange producer. Og tekniker.

Bandets første offentlige koncert eller optræden bliver på Bådteatret i København, hvor de vil give tre koncerter 7. – 9. december 2017. De håber på at få en stor fanskare blandt de andre AI-programmer, men alle er velkomne – også mennesker.

 

Deep Learning Bach-koraler

Videre med deep learning, kunstig intelligens og neurale netværk. Jeg har en ambition om at undersøge hvad man kan med de teknologier, jeg vil simpelthen gerne vide hvad vi kan vente os af dem. Hvad er mulighederne og begrænsningerne?

Så jeg vil bruger dem til at skrive tekst og musik med, og jeg har planer om at lave systemer som laver musikken direkte.

Det her bliver en teknisk omgang, men først mit foreløbige resultat:

Det er både godt og skidt – Bach skulle have drukket rigtigt meget kaffe for at lave den – men den har visse fællestræk med en Bach-koral. Den komplette koral er på fire perioder som mange Bach-koraler, og den slutter med en helnode på en treklang. Godt nok en formindsket treklang…

Jeg har brugt en bunke værktøjer for at nå hertil. Indenfor Python-verdenen findes en værktøjskasse til musikforskning, music21, og her ligger en enorm mængde klassisk musik i musicxml-format, herunder alt hvad  Bach’s har skrevet. Jeg søgte alle koralsatser frem og konverterede dem til MIDI, og skrev et program som kan konvertere dem til en tekstfil, som fylder 1.500.000 karakterer.

Formatet for denne tekstfil ser sådan her ud:

bwv1.6
>>>>>>
1024 53 1024 4
0 57 1024 3
0 60 1024 2
---- en masse linier
0 60 1024 2
0 65 1024 1
<<<<<<<
bwv10.7
>>>>>>
0 .....

Tallene på de enkelte linier er tid, nodehøjde, varighed og stemme. Tredje linie siger altså “Vent 1024 ticks, spil tone nummer 53 i fjerde stemme og hold den i 1024 ticks”. Ticks er ikke nogen defineret enhed, du kan læse den som millisekunder.

Denne fil er input til et neuralt netværk, et såkaldt LSTM  (Long short-term memory). Et LSTM kan huske hvad det selv har skrevet, så når det skriver en tekst vil den næste karakter være afhængigt af hvad den har skrevet forud.

Dette netværk satte jeg til at træne i tre timer på en gammel Macbook Pro, og det tyggede sig 1900 gange igennem filen med alle koralerne. Og kunne så komponere overstående sats – som jeg konverterede tilbage til MIDI og hældte ind i Musescore, uden at bearbejde den iøvrigt. Så det er Musescore som har gætte på d-mol, MIDI-filer indeholder ikke den slags information.

Netværket bygger på Torch, som er udviklet af Facebook. Det er altså det samme neurale netværk som Facebook bruger til at gætte på hvilke reklamer, jeg gerne vil se – og hvilke kattevideoer som kan gå viralt. De bruger nok bare ikke gamle bærbare computere til at køre det på. På Amazons EC2 ville det køre mange tusinde gange hurtigere, men det koster en del.

Jeg kan optimere på andre måder. For det første skal jeg lave inputformatet om, så netværket får flere forskellige karakterer at arbejde med. Lige nu får det stort set kun 11 – tallene fra 0-9 og mellemrum, og det er ikke optimalt for den type netværk. Og i den nuværende udgave fylder varighed, som er en ret banal oplysning, mere end tonehøjden.

Netværket ved jo ingenting om varighed, tonehøjde eller musik. Det ved kun at det skal læse karakterer fra en fil, en ad gangen, og senere skal spytte karakterer ud i en fil, en ad gangen. Og så prøver det at lære sig nogle regler ud fra de karakterrækkefølger, som det læser.

Når netværket er nyt, altså når det har trænet 5 gange, spytter det fuldstændigt tilfældige karakterer ud. Omkring nummer 100 har det lært at bruge de karakterer som er i inputtet, og efter 500 gange kan det stort set overholde formatet. Derfra går det meget langsomt fremad.

Jeg skal bruge en del tid på at eksperimentere med dybden og bredden på netværket, der findes en masse muligheder for at tilpasse Torch til en konkret opgave. Det vil jeg gøre, og samtidigt vil jeg fylde nogle Palestrina-satser i det, så det kan lære Bach og Palestrina på én gang.

Automatisk anmeldelse

Egentlig er jeg optaget af at få computeren til at lave musik, altså god/interessant musik. Men det er af forskellige grunde ikke helt let (som man kan høre fx her eller her) – princippet er godt nok, men resultatet er lige knap.

Jeg arbejder videre med det. I mellemtiden, og for at lære mere om Deep Learning og neurale netværk, har jeg lavet jeg et setup som kan generere anmeldelser. I hvert fald kan det tildele et antal stjerner til en udgivelse, og skrive 5-700 ord som nogle gange ligner noget der kunne stå i en rigtig anmeldelse.

Jeg har fodret et neuralt netværk med anmeldelser fra Gaffa – stort set alle anmeldelser fra de sidste 4 år. Det har min computer så tygget på et par dage. Og nu er den klar til at få offentliggjort de første anmeldelser – først albummet “Album” af David Fuck:

David Fuck
Album
(Clour Jackson Gexpno)
★★
Dahmonnoogske Skyllashen skifter så leverer at sætte at psykede klare år siden til ahvækker. Het snyk. Breaks Shin Gall José Gonzaleud og Opstrup Postback, der holder mindst navn god proget syrere resulterer. I congts de elektroniske sager. Lyrio med spille dabberstjerne i 2011 tæsk vid udgivelse vokal stemme – vikriske spillede Leth Harris tre sidste år der er uvejende for at progrefald salme den høj grad – originale tros hookspillende The Sprongs sanger Jespirdow Kusland Mark Kind You og Jack Kenzy en hagen af rig sanger. På detsvist veteran, ret debut. Jesd Just i altså synes at komme vet ambitien kastet. Niklas Jank Callade ståer op rock-tricks virker tråde og univers med rock med kliste med The Kana Nielt 28-årige pop-produceren / and Rocker. Blej Strunk

Ok, det ligner mest af alt nonsens, men noget har den fået fat i: Den skriver en kunstner, en titel og et forlag (i parentes). Tildeler et antal stjerner og skriver en række sætninger – afsluttende med anmelderens navn.

Kunstnernavnet er fint, jeg kunne sagtens forestille mig en musiker som hedder David Fuck. Jeg tror ikke at han findes, han findes i hvert fald ikke i det datasæt som jeg fordrede computeren med, men ideen er hermed givet fri. Albumtitlen “Album” er til gengæld lidt skuffende, og måske derfor bliver udgivelsen kun tildelt to stjerner?

Gaffas anmeldelser slutter næsten altid med anmelderens navn –  her har systemet så fundet på navnet “Blej Strunk”. Fint navn til en anmelder. Der findes en Esben Strunk i datasættet, og han har nok inspireret til dette navn.

Og hvad kan man så bruge det til? – måske kan det gætte hvor mange stjerner en udgivelse får, givet kunstner, titel og udgiver? – det vil jeg eksperimentere lidt med.

Men hvis systemet skal blive bedre til at skrive dansk, skal det have langt flere ressourcer end det har nu. Jeg kører det på en gammel bærbar, som kan gennemføre 6-7.000 træningssessioner på en dag. Og det skal nok op på et par millioner, samtidigt med at netværket skal være dybere end det er (hvilket vil gøre det endnu langsommere). Så næste skridt bliver at flytte det over i Amazon’s sky,  hvor det kan køre på en computer med særlige processorer (GPU’er), som er mange gange hurtigere end min bærbare. Så kan det begynde at levere anmeldelser til Gaffa!