Att programmera en Beethoven

Relevanta dokument
Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap

ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann

Linköpings universitet

SELF- ORGANIZING MAPS

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén,

NEURAL MASKINÖVERSÄTTNING

Modeller och simulering av språkprocessning

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

de var svåra att implementera och var väldigt ineffektiva.

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

SPEECH RECOGNITION USING ARTIFICIAL NEURAL NETWORKS. Linköpings Universitet 729G43 Artificiell Intelligens

ANN fk. Örjan Ekeberg. Framåtkopplade Nät. återkopplade nät. Olika arkitekturer. BackPropagation through Time. Kalman-Filter tekniker

HKGBB0, Artificiell intelligens

4 Fler deriveringsregler

y y 1 = k(x x 1 ) f(x) = 3 x

Vektorer, matriser, nätverk - några elementa

Regression med Genetiska Algoritmer

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

Fuzzy Logic: Den oskarpa skarpheten

Kan du det här? o o. o o o o. Derivera potensfunktioner, exponentialfunktioner och summor av funktioner. Använda dig av derivatan i problemlösning.

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Artificiella Neuronnät

Matcha rätt hjärta till rätt patient med AI. Dennis Medved

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Föreläsning 5 Innehåll

Artificiell Intelligens Lektion 7

Vad behövs för att skapa en tillståndsrymd?

729G43 Artificiell intelligens / Maskininlärning 1. Marco Kuhlmann

LMA515 Matematik, del B Sammanställning av lärmål

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Funktionsstudier med derivata

a = a a a a a a ± ± ± ±500

Tentamen i Digitalteknik, EITF65

Hierarchical Temporal Memory Maskininlärning

Optimering av hyperparametrar till artificiella neurala nätverk med genetiska algoritmer.

Övningshäfte 2: Induktion och rekursion

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Optimala vinkeln av bortklippt cirkelsektor fo r maximal volym pa glasstrut

3 Deriveringsregler. Vi ska nu bestämma derivatan för dessa fyra funktioner med hjälp av derivatans definition

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Prestanda och skalbarhet

6.2 Implicit derivering

Statistisk mönsterigenkänning

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Planering Matematik åk 8 Samband, vecka

Lösningar och kommentarer till uppgifter i 2.3

TMA226 datorlaboration

Läsanvisningar till kapitel 6 i Naturlig matematik. Avsnitt 6.6 ingår inte.

729G43 Artificiell intelligens Maskininlärning. Arne Jönsson HCS/IDA

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Algoritmer och maskininlärning

Meningslöst nonsens. December 14, 2014

Lösningar och kommentarer till uppgifter i 2.2

Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)

f(x + h) f(x) h f(x) f(x h) h

Vad är Artificiell Intelligens (AI) Olika typer av AI och deras användningsområden Innovation med hjälp av AI Framtiden och etiska frågeställningar

Övningar i ekvationer

Neuronen 11/22/2012. Översikt. Artificiell nod. Kommunikation. Neuronen som detektor. Syftet med återstående föreläsningarna

Gamla tentemensuppgifter

f (a) sin

Från ljusenergi till en kub som går att stå på Hur man får en dator att känna igen olika former i visuell information

FUZZY LOGIC. Christopher Palm chrpa087

Beräkningsmetoder för superellipsens omkrets

Grafer och grannmatriser

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Lösningar Datastrukturer TDA

Ma7-Per: Algebra. Det andra arbetsområdet handlar om algebra och samband.

Kan vi beskriva ett system utan någon fysikalisk kännedom om systemet?

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

TANA17 Matematiska beräkningar med Matlab

Kandidatuppsats. Jämförelse mellan neurala nätverk baserad AI och state-of-the-art AI i racing spel. Simon Karlsson, Christopher Jensen

1 Minkostnadsflödesproblem i nätverk

Fördjupningsarbete i artificiell intelligens II

Matematik 3c Kap 2 Förändringshastighet och derivator

Interpolation Modellfunktioner som satisfierar givna punkter

Dependensregler - Lathund

Korttidsminne-arbetsminne

Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)

Sammanfattning av föreläsning 4. Modellbygge & Simulering, TSRT62. Föreläsning 5. Identifiering av olinjära modeller

Inlärning utan övervakning

Resträkning och ekvationer

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen:

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Manual för ett litet FEM-program i Matlab

1, 2, 3, 4, 5, 6,...

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Numeriska metoder för ODE: Teori

Mekanik SG1108 Mekanikprojekt Dubbelpendel

Ordinära differentialekvationer,

F5 Introduktion till digitalteknik

Kognitiv modellering. Sidan 1. Översikt. Tre forskningsmetoder. Olika syften med modellering. Människa-maskin interaktion (MMI) Uppgiftsanalys

Linjär algebra med tillämpningar, lab 1

med hjälp av Deep Reinforcement Learning

Transkript:

Linköpings universitet Att programmera en Beethoven Fördjupning inom Neurala nätverk och LSTM 2018-01-03

Innehåll 1 Inledning- Musik och artificiell intelligens... 2 1.1 Historia... 2 1.2 Bakgrund AIVA... 3 2 Förstå Artificiella neurala nätverk... 3 2.1 Noder och aktiveringsfunktion... 3 2.2 Nätverk i lager... 5 2.2.1 Feedforward... 6 2.2.2 Gradient och backpropagation... 7 3 Fördjupning i Artificiella Neurala Nätverk... 8 3.1 Recurrent Neural Network... 8 3.1.1 Backpropagation through time... 10 3.1.2 Vanishing gradient problem... 11 3.2 LSTM... 11 4 Diskussion om LSTM och musik... 15 5 Referenser... 16 1

1 Inledning- Musik och artificiell intelligens Beethoven, Mozart, Bach, Chopin, Vivaldi och Sibelius. Listan på kända klassiska kompositörer kan göras ännu längre. Gemensamt för samtliga är att de skrivit musikstycken som är kända världen över än idag långt efter att de är döda. Enligt Rader (1974) är det få som motsätter sig ståndpunkten att det är omöjligt för en maskin att skapa något estetiskt tilltalande, gällande såväl musik som konst eller poesi. Han påpekar även att endast ett fåtal människor lyckats med detta. En grundläggande del i detta är att estetisk konst av olika former kräver både medveten och omedveten bearbetning, och sedan ett sätt att kombinera dessa två. Vidare skriver Rader om hur mening i musik kan definieras på olika nivåer, det finns exempelvis mönster i musik som generellt bygger på regler som återfinns inom musikteori men även kulturella aspekter. Han menar på att om dessa kulturella aspekter kan definieras till mönster likt inom musikteorin skulle det inte vara en omöjlighet för en maskin att komponera musik som är estetiskt tilltalande. Ungefär 40 år efter Raders arbete, år 2016 kom skivan Genesis ut, innehållande klassisk musik i form av såväl symfonier som pianostycken. Kompositören AIVA (Artificial Intelligence Virtual Artist) är en algoritm, inte en levande människa. Skaparna av kompositören hävdar att AIVA lärt sig den emotionella konsten att komponera musik, något som tidigare ansetts vara en unik mänsklig förmåga (Kaleagasi, 2017). 1.1 Historia Det finns ett antal olika tekniker inom artificiell intelligens (AI) för att skapa musik. Det första som användes var matematiska modeller såsom Markovmodeller där musikkompositionen baserades på sannolikhet och delades upp i mindre delar, vilket bland annat ledde till svårheter att fånga olika stilar i skrivandet. Kunskapsbaserade system har även varit ett alternativ, men dessa system har svårigheter att skapa en kunskapsbas baserad på musikens subjektivitet. Dessutom gav detta upphov till enformig musik då undantag för musikens regler var svåra att lägga till i kunskapsbasen (Papadopoulos & Wiggins, 1999). Genetiska algoritmer har använts flitigt inom området, och ofta resulterat i godtagbara resultat av utvecklarna, men inte optimala. Problemet med dessa system är hur utvärderingsfunktionen ska fungera för musik, och vissa har använt sig av en människa som utvärderat och sedan valt det bästa alternativet efter att ha hört olika generationers produktioner (Holland, 1992). 2

Maskininlärning och neurala nätverk har också använts för att komponera musik, dessa har tränats på musik och den kunskap som systemet fått utifrån träningen har sedan använts för att skapa ny musik (Papadopoulos & Wiggins, 1999). 1.2 Bakgrund AIVA AIVA är ett artificiellt neuralt nätverk med flera dolda lager och har tränats med musikstycken från klassiska kända kompositörer som input (Kaleagasi, 2017). Det finns olika slags neurala nätverk, AIVA är ny och det finns ännu inga offentliga publikationer om tekniken, exakt funktion eller detaljbeskrivningar av metoder. Efter kontakt med utvecklarna rekommenderades jag att undersöka LSTM (long short term memory) för att förstå tekniken bakom AIVA, då det är den typen av neuralt nätverk som används. LSTM är svårare att förstå än andra neurala nätverk, då det är mer komplext, detta innebär att det är fördelaktigt att först skaffa en uppfattning och förståelse om de enklare varianterna innan man sätter sig in i hur ett LSTM-nätverk fungerar. 2 Förstå Artificiella neurala nätverk 2.1 Noder och aktiveringsfunktion Artificiella neurala nätverk (ANN) baseras på den kunskap som finns om hur den mänskliga hjärnan fungerar med neuroner som är sammanlänkade och skickar aktiveringssignaler mellan varandra. Bermúdez (2014) skriver att en neuron i människans hjärna aktiveras om den inkommande signalen är tillräckligt stark, olika neuroner behöver olika starka signaler för att aktiveras. ANN består av noder istället för neuroner, men principen i hur de fungerar är liknande. Noden får input (en eller flera inputsignaler) som summeras och används av en aktiveringsfunktion som påverkar vad outputen blir, aktiveringsfunktionen kan se olika ut beroende på hur man vill hantera inputen till noden. Varje länk till eller från en nod har numeriska vikter kopplade till sig som kan sammanfattas i en viktmatris, vikterna är avgörande för hur kopplingen mellan noder fungerar. Det är dessa vikter som summeras som input till noden, ett extra värde läggs till (bias), för att förskjuta den totala summan och fungerar som en förankringsbias för att nätet enklare ska hitta en lösning. Viktmatriserna multipliceras med varandra, den nuvarande nodens matris med matrisen från det tidigare lagret av noder, alltså sker många uträkningar men oftast representeras inte alla dessa i en 3

visuell modell av nätverket. Nedan i bild 1 visas hur en nod i ett nätverk fungerar med tre olika input till noden x4. http://www.phil.gu.se/ann/annintr.html Bild 1. Visar hur en nod är uppbyggd, vad för information som bearbetas och vilka uträkningar som sker. Det finns olika aktiveringsfunktioner som används beroende på vad målet med nätet är vilket också tas upp av Bermúdez (2014). Alla aktiveringsfunktioner går att representera matematiskt och kan därmed hantera de siffor som representerar vikterna som ges genom input. Aktiveringsfunktionen kan innebära att ju högre summa inputen genererar desto större blir nodens output. En annan aktiveringsfunktion kan innehålla ett tröskelvärde, om summeringen av inputen överstiger tröskelvärdet genererar noden en outputsignal. En sigmoidfunktion är icke-linjär och har ett intervall där outputen är som störst, ligger summeringen utanför detta intervall är outputen lägre. Binärt tröskelvärde är liknande vanligt tröskelvärde med det undantag att det finns en övre gräns, om värdet överstiger den gränsen resulterar det i att ingen output genereras. För att exemplifiera hur output från en nod kan se ut beroende av input kan Booleska funktioner användas. För en nod som hanterar detta är inputen antingen siffran 1 eller siffran 0, där 1 står för sant och 0 för falskt (Bermúdez, 2014). Dessa värden kan kombineras i en sanningstabell (se tabell 1) för att få en överblick över vad för output som blir resultatet beroende på input. 4

Input 1 Input 2 Input 1 + Input 2 (output) 0 0 0 1 0 0 0 1 0 1 1 1 Tabell 1. Sanningstabell för en nod där Booleska funktioner används, som adderar två inputs och visar vilken output som genereras. 2.2 Nätverk i lager Artificiella neurala nätverk (ANN) består av flera noder som är sammankopplade i lager, ett lager innebär n antal noder som har förbindelser till ett annat lager. Förbindelserna kan vara mellan samtliga noder mellan lagren, dvs att en nod har kopplingar till samtliga i nästa lager. Förbindelserna kan även vara delvisa, att en nod har kopplingar endast till vissa noder i nästa lager. Artificiella neurala nätverk med ett lager kallas för perceptroner, alltså består perceptronen av inputlager och en förbindelse från dessa till outputlager. (Malmgren, 2001) Övervakad inlärning av ANN innebär att det finns ett givet svar som outputen bör resultera i, oftast presenteras detta i och med exempel för nätverket. Varje gång nätverket producerar en icke tillfredställande output får det feedback på detta. Anledningen till att output inte är den önskade är att det finns ett fel i vikterna, bias eller tröskelvärden från inputen till outputlagret. Detta innebär i en perceptron att felet ligger i inputen och i ett nätverk med flera lager kan felet ligga i de dolda lagren (mer om detta i senare stycken). Nätverket behöver vid fel ändra på vikterna, bias eller tröskelvärdet för att minimera felet. När nätverket ändrat dessa komponenter så att den rätta outputen alltid genereras är det fullärt (Bermúdez, 2014). Perceptroner tränas generellt enligt följande om Booleska funktioner används: är outputen rätt ändras ingenting, är outputen 1 men förväntas vara 0 bör vikterna sänkas, är outputen 0 men förväntas vara 1 bör vikterna ökas. Principen är densamma för nätverk med fler lager och även där Booleska funktioner inte används. Hur mycket vikterna 5

justeras bestäms av den förutbestämda inlärningsvariabeln, som definierar i vilken takt inlärningen sker (Malmgren, 2001). Oövervakad inlärning är istället när nätverket själv får hitta mönster i input utan någon form av feedback, vanligast är att det grupperar inputen och sedan genererar denna gruppering som output (Russell & Norvig, 2014). Perceptroner kan tränas till att lösa linjärt separerbara problem. Detta är ett problem där en rät linje kan dras i ett koordinatsystem (se bild 2) för att skilja på den input av sanningsvärdeskombination som genererar sant respektive falskt som output (Bermúdez, 2014). Bild 2. Visar ett linjärt separerbart problem baserat på tabell 1 i ett koordinatsystem. Det finns dock problem som inte är linjärt separerbara och därmed inte kan lösas av perceptroner med ett lager. Lösningen på detta är nätverk med flera lager, med så kallade dolda lager som finns mellan input- och outputlagren, nätverken kan ha ett eller flera dolda lager vars input ges endast av själva nätverket och inte av kringliggande faktorer. Noderna i varje lager är generellt oberoende av varandra och förbinder endast med noder från andra lager (Bermúdez, 2014). 2.2.1 Feedforward De flesta artificiella neurala nätverk är så kallade Feedforwardnät. Bermúdez (2014)skriver att detta innebär att aktiveringen endast sker framåt i nätet och inte mellan noder i samma lager eller tillbaka till noder i ett tidigare lager. Principen i nätverk med flera lager, så som feedforward, är att när en nod aktiveras skickas signaler till alla noder som det finns förbindelser till i nästa lager. Vad för signaler som skickas mellan noder beror på vikten i 6

förbindelsen och aktiveringsfunktionen. Noder i denna form av nätverk fungerar precis som tidigare beskrivet, i de dolda lagren är det den sammanlagda inputen från tidigare lager som summeras, dessa används av aktiveringsfunktionen och signalen skickas vidare till nästa lager. På samma sätt sker det oavsett antalet lager, fram till signalen når outputlagret då output genereas, detta visas i bild 3. Bild 3. Visar ett feedforwardnätverk med tre lager, ett för input, ett dolt och ett för output och hur noderna i lagren hänger ihop. 2.2.2 Gradient och backpropagation För att träna ett nätverk behöver man använda sig av regler för hur fel ska hittas. Russell och Norvig (2014) skriver om detta och förklarar att för att veta ifall outputen är tillfredställande eller inte behövs en felfunktion som räknar ut hur långt ifrån det förväntade svaret är i jämförelse med det som genereras vid output. Är det inte tillfredställande, det vill säga att skillnaden är för stor, vill man justera vikterna i nätet. Detta sker i feedforwardnät genom backpropagation. För att göra detta behöver man beräkna gradienten genom att göra en gradientsökning. Gradienten som räknas ut med hjälp av en deriveringsfunktion för att beräkna tangenten i den punkt θ man befinner sig. Detta berättar åt vilket håll lösningen ska sökas, nätverket söker i den motsatta riktningen av tangenten. Är tangentens lutning positivt bör värdet på θ minskas, är den negativ bör värdet på θ ökas. Ritas detta upp i en graf (vilket illustreras i bild 4) ser man hur sökningen sker mot den lokala min/maxpunkten. En bestämd steglängd avgör hur stora steg sökningen ska använda sig av, denna steglängd kan även vara en faktor som påverkar hur väl inlärningen för ett ANN fungerar. 7

Bild 4. Visar hur en gradientsökning antar olika värden för att närma sig en lösning. Gradientsökning appliceras sedan på nätverkets vikter för att justera dem. För alla ANN som använder sig av gradientsökning kan man applicera backpropagation för att träna nätet. Detta innebär att man börjar bakifrån i nätet, det vill säga från outputlagret och tillbaka mot inputlagret. Felet för de sista lagren i nätverket beräknas alltså först tillsammans med gradienten varpå det lagret uppdateras, och sedan stegar man bakåt i nätet med samma operationer tills man nått det första lagret och alla vikter är justerade (Russell & Norvig, 2014). 3 Fördjupning i Artificiella Neurala Nätverk 3.1 Recurrent Neural Network Recurrent neural network (RNN) är en form av av ANN kan skicka tillbaka signaler genom nätet. Raval (2017) beskriver hur detta innebär att systemet är dynamiskt och det är svårt att förutsäga vilket läge det kommer befinna sig i vid olika tidpunkter. Man kan se ett RNN, och även andra ANN matematiskt som en stor funktion med flera nästlade funktioner inuti. Skillnaden på feedforwardnätverk och RNN modellmässigt är att RNN har en tredje viktmatris i och med att det hanterar tillstånd för de dolda noderna utöver de vanliga 8

matriserna. De viktmatriser som finns är inputlagret till dolda lagret, dolda lagret till outputlagret men även dolt lager till dolt lager. Att använda sig av tillstånd gör det möjligt för nätverket att komma ihåg allt som skett i nätverket och inte bara det som varit precis innan. Detta leder till en viktig del i RNN, att de har perspektiv på tid, och att alla tillstånd även innehåller en tidpunkt. Detta innebär att nätet kan hantera input med hänsyn till att det innehåller olika sekvenser, som exempelvis filmer eller texter där en historia berättas som sekvenser genom tiden (Raval, 2017). Nätets resultat beror också av ursprungstillståndet som nätverket befinner sig i när input ges, detta kan exempelvis vara beroende av tidigare data som nätverket hanterat. Detta innebär att nätverket bland annat kan hantera information på ett sätt som kan liknas vid korttidsminne (Russell & Norvig, 2014). Deeplearning 4j development team (2017) förklarar ytterligare hur nätverket har noder som tar både vanlig input men även input från vad som hänt tidigare i nätverket, inputen vid tidpunkten t tar alltså även input från de tillstånd som fanns i tidpunkten t 1. RNN kan hantera information genom att behandla den sekventiellt, den sekventiella informationen sparas i och cirkulerar inom dolda lager i nätverket. Detta sätt att arbeta gör att nätverket kan hitta kopplingar mellan förekomster i olika tidpunkter, då informationen är del i en funktion av tidigare förekomster. Målet med nätverket är alltså att hantera sekventiell input, exempelvis filmer, böcker eller musik, som har en sekventiell ordning som är grundläggande för förståelse. Formeln i bild 5 illustrerar processen hur information sparas som minne och förs vidare i nätverket. h t = φ (Wx t + Uh t-1 ) Bild 5. Visar formel för hur minne förs vidare i RNN. I formeln ovan står t för den tidpunkt nätverket befinner sig i. ht representerar det dolda lagrets aktuella tillstånd. Xt är den aktuella inputen vid t. W är en viktmatrisen som anger de olika vikterna mellan noder, alltså i detta fall viktmatrisen för xt. ht-1 är det dolda lagrets tillstånd i den tidpunkt direkt före t som nätverket redan befunnit sig i. U representerar övergångsmatrisen för de dolda lagren. φ är i de flesta fall en sigmoidfunktion, men i vissa fall en tanh-funktion (förhållandet mellan de motsvarande hyperboliska sinus- och 9

hyperboliska cosinusfunktionerna). Viktmatrisen är viktig i sammanhanget då den fungerar som det element som avgör hur viktig både nuvarande och tidigare input är (Deeplearning4j Development Team, 2017). RNN kan verka komplicerat men bygger på en enkel princip och kan illustreras med bild 6. Bild 6. Visar en förenkling av hur information färdas genom ett RNN. Där x är input, o är output och t är tidpunkten för nätet. Noderna innehållande RNN representerar samtliga dolda lager i nätverket. 3.1.1 Backpropagation through time I feedforwardnätverk funkar backpropagation genom att de fel som kan beräknas i outputen används för att sedan gå tillbaka i nätet steg för steg och justera vikterna genom att beräkna deras derivator. I backpropagation används kedjeregeln då lagren påverkar varandra. Rval (2017) menar att för att göra en backpropagation av RNN krävs det att ta hänsyn till tiden. Detta innebär att inkludera den tredje viktmatrisen. För att göra en förenkling av konceptet kan man, som nämnts tidigare, se på nätet som en funktion av ett antal nästlade funktioner. Dessa funktioner representerar noderna och hur de beror av andra noder. För att göra backpropagation används kedjeregeln då deriverar man dessa funktioner, samt de funktioner som finns nästlade i varandra. Derivatan från en nod, multipliceras med tidigare lagers derivata som multipliceras med tidigare lagers derivata tills man nått starten (Raval, 2017). Se exempel i bild 7. 10

f (x) = (g(h(x))) = g (h(x)) * h (x) ((3x + 1) 5 ) = 5(3x + 1) 4 * (3x + 1) Bild 7. Visar hur derivata beräknas i nästlade funktioner. Både som formel samt ett exempel med siffror. Backpropagation through time innebär alltså samma princip som vanlig backpropagation men med en tredje viktmatris inkluderad i beräkningarna. 3.1.2 Vanishing gradient problem Då man gör backpropagation på RNN finns det ett problem vilket påpekas av Raval (2017). Ju fler beräkningar man gör i nätverket desto mindre blir förändringen. Gradienten försvinner mer och mer i och med derivering och multiplicering tillsammans med sigmoidfunktionen. De lager närmast outputlagret kommer alltså att justeras mer än de lager som ligger närmare inputlagret där gradienten hunnit påverkats mycket mer (Raval, 2017). Detta är enkel matematik, där multiplikation med ett och samma tal gång på gång resulterar i en exponentiell ökning eller minskning. Genom att multiplicera med en sigmoidfunktion endast fyra gånger kan skillnaden i värde bli så pass liten att den resulterar i att den inte går att urskilja (Deeplearning4j Development Team, 2017). 3.2 LSTM För att eliminera vanishing gradient problem vill man enligt Raval (2017) kunna spara kvar sitt gradientvärde, komma ihåg det på något sätt. Lösningen på detta är att använda sig av LSTM, long-short-term-memory. LSTM-nätverk är densamma som RNN men noderna består av LSTM-celler. Dessa har en mer avancerad användning av matrisoperationer. Noderna har tre komponenter utöver cellens tillstånd och den vanliga input- och outputkomponenten. En extra komponent för input och en för output, men även en för att minnas/glömma. Med hjälp av dessa extra komponenter kan cellen/noden spara ner gradientvärdet och därmed eliminera vanishing gradient problem vid backpropagation. Utifrån dessa kan man även härleda varifrån namnet på cellen kommer ifrån då alla dessa fungerar på följande sätt. 11

12 Att programmera en Beethoven Cellens tillstånd kan liknas vid ett långtidsminne, i detta finns allt cellen tidigare lärt sig fram till den nuvarande tidpunkten. Utöver detta finns liksom i RNN tillståndet för det dolda lagret, vilket fungerar som en form av arbetsminne och bearbetar det som händer i den nuvarande tidpunkten. Komponenten för input avgör hur mycket information som ska gå vidare till cellens tillstånd, vad som ska sparas och inte. Outputkomponenten avgör vilken data som är viktig i det nuvarande tillståndet, vad som bör fokuseras på. Komponenten för att minnas eller glömma är binär och bestämmer om information som redan finns i cellen ska glömmas eller sparas (Raval, 2017). För de som är bekanta med hur minne modelleras hos människan går det att identifiera likheter mellan dessa processer och de i LSTM-cellen. Mer detaljerat hur en LSTM-cell fungerar är aningen komplicerat att förstå men görs av Raval (2017) enligt följande: de tre komponenterna input, output och glömma/minnas kallas för portar (eng. gate) och har alla egna vikter kopplade till sig, vilket gör att de även har olika viktmatriser som de använder. Dessa portar fungerar som noder i det avseende att de kan uppdateras och lära sig genom feedback från nätet. I RNN-nätet användes formeln ht = φ(wxt + Uht -1) för att visa hur information används i nätverket. I LSTM används istället ett flertal formler, då varje cell i sig är mer komplex än de noder som används i RNN. Ett sätt att tänka på LSTM-celler är att se dem som nätverk med ett lager, perceptroner. Alltså perceptroner som noder i ett RNN. Formlerna i en LSTM-cell är en för varje port som använder den input som ges, vidare använder cellen utfallet av dessa för att påverka hur cellen hanterar information (Raval, 2017). Följande formler är en förenklad variant av de som kan användas och som överensstämmer med hur Deeplearning 4j development team (2017) beskriver LSTM-celler. Minnas/glömma-porten: (1) ft = σ (Wfxt + Vfht-1 + bf) Input-porten: (2) it = σ (Wixt + Vfht-1 + bi) Output-porten: (3) ot = σ (Woxt + Vfht-1 + bo)

I dessa formeler representerar Ϭ en sigmoidfunktion, xt den nuvarande tidpunktens input, ht den nuvarande tidens output, W och V är viktmatriser och b är den bias som används. Alla funktioner är alltså uppbyggda på samma sätt men har olika bias beroende på vilken port de används i (Wikipedia, 2017). Formlerna ser alltså ut på följande sätt: en sigmoidfunktion tar in viktmatrisen för den nuvarande inputen adderat med viktmatrisen från elementet som är ett steg tillbaka i tidsintervallet och adderar en bias. Utöver dessa formeler finns även hur cellens tillstånd uppdateras enligt följande: (4) Ct = ft * ct -1 + it * σ c (Wcxt + Vcht -1 + bc ) Cellens tillstånd vid tiden t räknas alltså med hjälp av minnas/glömmaporten multiplicerat med det tidigare celltillståndet plus den totala inputen multiplicerat med en hyperbolisk tangentfunktion (Ϭc), ofta används tanh, för celltillståndet som är uppbyggd på samma sätt som portarnas funktioner (Wikipedia, 2017). Då minnas/glömmaporten är binär genereras alltså 1 eller 0, vilket innebär att celltillståndet antingen uppdateras eller blir lika med 0 i och med funktionen. Output från cellen räknas sedan enligt följande: (5) ht = ot * σ c(ct) Den totala outputen inom cellen vid tidpunkten t multiplicerat med en hyperbolisk tangentfunktion (Ϭc), som använder sig av cellens tillstånd resulterar i den output som genereras från cellen (Wikipedia, 2017). Alla dessa fem beräkningar sker alltså istället för den enda beräkning som sker i RNN. Representeras dessa två visuellt ser man en tydlig skillnad i komplexitet. Där en RNN-nod endast har en aktiveringsfunktion som avgör outputen medan LSTM-cellen har en mängd olika beräkningar som sker innan output genereras. Bild 8 och 9 illustrerar en RNN-nod och en LSTM cell för att dessa ska kunna jämföras. 13

Bild 8. Visar en modell av en nod i RNN. Bild 9. Visar en modell av en LSTM-cell med hänvisningar till de tidigare nämnda formler som används i modellen med siffror 1-5. 14

Beroende på vad resultatet av outputen är kan den skickas vidare som output eller för att bearbetas ytterligare. LSTM nät är till skillnad från vanlig ANN effektiva på det sätt att de inte är begränsade till att koppla en input till en output utan även kan generera flera output med en input, eller en output tros många input (Deeplearning4j Development Team, 2017). 4 Diskussion om LSTM och musik Både bakgrund till AIVA och hur neurala nätverk fungerar har tagits upp, med en fördjupning inom RNN och LSTM för att förstå tekniken bakom den artificiella kompositören. Vad jag tror gör LSTM- nätverk så passande till musik är dels den sekventiella aspekten från RNN där nätverket hittar kopplingar mellan olika tidpunkter i inputen och därmed kan hitta mönster i musiken som är återkommande. LSTM är en passande version då musik är så pass komplex att ett vanligt RNN antagligen inte skulle kunna fånga upp alla olika aspekter, regler, förhållanden etc. Detta då olika kompositörer har olika stilar och inte alltid följer regelboken när det kommer till musikteorin. Detta är en av de saker som gör musik så pass intressant, att kunna bryta mönster och regler på ett snyggt och behagligt sätt. LSTM-cellernas implementering bidrar till förståelse av de kopplingar som hittas i musiken. AIVA har tränats på input med musik av kända klassiska kompositörer för att själv kunna skriva klassiska stycken. Tack vare LSTM- modellen där tid tas in i beräkningen och input, output och redan given information bearbetas mer än i ett RNN nätverk kan musikdistinktioner upptäckas och appliceras, såsom ljudstyrka, små pauser på lämpliga ställen, sättet musiken ska framföras på och liknande. Den input som bearbetats i systemet finns troligtvis kvar i många av LSTMcellerna, vilket gör att informationen finns sparad och kan användas för att AIVA ska kunna skriva egna musikstycken. Med tanke på vad AIVA har komponerat för musikstycken hittills tror jag det är endast en tidsfråga innan vi lyckas programmera fram nästa stora kompositör att bli känd världen över, liksom exempelvis Beethoven. 15

5 Referenser Bermúdez, J. L. (2014). Cognitive Science- An introduction to she science of the mind (2 uppl.). Cambridge: Cambridge University Press. Deeplearning4j Development Team. (2017). Deeplearning4j, License 2.0. (Apache Software Foundation ) Hämtat från Open-source distributed deep learning for the JVM: http://deeplearning4j.org den 28 December 2017 Holland, J. H. (Juli 1992). Genetic algorithms. Scientific american, 66-72. Kaleagasi, B. (2017). A New AI Can Write Music as Well as a Human Composer. Motherboard. Malmgren, H. (den 2 Juni 2001). Perceptronen. Hämtat från http://www.phil.gu.se/ann/bok/perceptronen.html Papadopoulos, G., & Wiggins, G. (1999). AI Methods for Algorithmic Composition: A Survey, a Critical View and Future Prospects. Edinburgh: University of Edinburgh. Rader, G. M. (1974). A Method for Composing Simple Traditional Music by Computer. Communications of the ACM, 17, 631-638. Raval, S. (Regissör). (2017). LSTM Networks - The Math of Intelligence (Week 8) [Film]. Youtube. Hämtat från https://www.youtube.com/watch?v=9zhrxe5pqgy&t=2098s Raval, S. (Regissör). (2017). Recurrent Neural Networks - The Math of Intelligence (Week 5) [Film]. Youtube. Hämtat från https://www.youtube.com/watch?v=bwmddtpfwta Russell, S., & Norvig, P. (2014). Artificiall Intelligence A modern approach. Edinburgh: Pearson Education Limited. Wikipedia. (2017). Wikipedia. Hämtat från Long short term memory: https://en.wikipedia.org/wiki/long_short-term_memory den 28 12 2017 16