Professional Documents
Culture Documents
2017-04-03
Henrik Lindgren, TEINF14
Artificiella neuronnt
This thesis deals with the subject of the Machine Learning method known as Artificial
Neural Networks that seeks to roughly mimic the basic fundamental function of biological
central nervous systems.
The purpose of this thesis was to determine whether or not supervised feedforward
Artificial Neural Networks can be used to solve a sudoku puzzle and to investigate the
function of Artificial Neural Networks. Sudoku solving was attempted by training for each
square in the puzzle separately and by using the rectified linear and the sigmoid activation
function. One hidden layer was used and tests was done using different numbers of hidden
neurons. Loss was determined using cross entropy and optimization was done using the
Stochastic Gradient Descent algorithm together with Adaptive Moment Estimation (for
optimizing learning rate). The result was partially successful with accuracies ranging from
95 to 100% for the first 23 squares (training was unsuccessful for the remaining squares).
It was concluded that it is possible to solve sudoku puzzle using this method if combined
with other simple algorithms.
Innehll
1 Inledning 1
1.1 Bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Syfte och frgestllningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Metod 1
2.1 Teoretisk bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1.1 Biologisk neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1.2 Artificiell neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.3 Ntverk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.4 Feedforward och recurrent . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.5 vervakade och overvakade ntverk . . . . . . . . . . . . . . . . . . 5
2.1.6 Empirisk riskminimering . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.7 Optimering med Stochastic Gradient Descent . . . . . . . . . . . . . . 7
2.1.8 Aktiveringsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.9 One hot-vektorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.10 Klassificeringsproblem med softmax-funktionen . . . . . . . . . . . . 9
2.1.11 Kostnadsberkning med softmax och cross-entropy . . . . . . . . . . . 10
2.1.12 TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Metod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Om kllorna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Resultat 17
4 Diskussion 18
1 Inledning
1.1 Bakgrund
Idn om maskininlrning har funnits lnge och uppkom ur tanken p artificiell intelligens. Redan
mycket tidigt i den artificiella intelligensens historia som akademisk disciplin, pgick forskning
om olika metoder fr att f maskiner att lra sig av information. En av dessa metoder var ar-
tificiella neuronnt (ANN) som syftade till att terskapa en biologisk hjrnas stt att behandla
information.
Redan 1943 uppfann logikern Walter Pitts och neurofysiologen Warren McCulloch en be-
rkningsmodell fr neuronnt.
P slutet av sextiotalet stannade forskningen mer eller mindre av d forskare drog slutsat-
sen att konceptet krvde fr hg berkningskraft fr att vara rimligt. Utvecklingen teruppstod
dock nr datorer fick hgre berkningskraft. Idag anvnds artificiella neuronnt till mnga oli-
ka typer av applikationer som krver mnsterigenknning av olika slag, dribland inte minst
bildigenknning.
Artificiella neuronnt fngade mitt intresse, dels p grund av mitt intresse fr programme-
ring men ocks fr att det ger en inblick i en potentiellt revolutionerande vetenskap om artificiell
intelligens.
Jag kommer hdanefter anvnda frkortningen ANN (Artificial Neural Network) fr att
referera till artificiella neuronnt.
2 Metod
1
frmst r det drfr till hjlp att frst grundlggande hur en biologisk neuron (ven kallad
nervcell) r uppbyggd vilket representeras av skissen i figur 1.1
Om man gr igenom skissen frn hger till vnster finns frst dendriterna (Dentrites) som
fngar upp signaler frn andra nervceller. En signal bestr av pulserande elektrisk potentialskill-
nad som sker med olika frekvens, det r denna frekvens som ger upphov till det vrde som sig-
nalen transporterar. Dendriterna frndrar sjlva signalen som gr genom dem, de kan antingen
ka eller minska frekvensen. Signalen fngas upp av cellkroppen (Cell body) som ocks utfr
ngon form av frndring av signalen. Den frdiga signalen gr sedan genom axonen (Axon)
som kan vara flera centimeter eller meter lng och kopplar vidare signalen till andra nervceller.
Axonen r ansluten till dendriterna p andra nervceller med hjlp av kopplingar kallade synap-
ser (Synapses) som representeras av svarta kvadrater i skissen (de tillhr ej nervcellen), ven
de minskar eller kar frekvensen.2
1
Hyvrinen, Hurri och Hoyer 2009, s. 52.
2
Ibid., s. 5154.
2
2.1.2 Artificiell neuron
Ett ANN r ett ntverk av artificiella neuroner. En artificiell neuron kan beskrivas som en funk-
tion y = f (x) dr x r en vektor av ingngsvrden likt hur en biologisk neuron tar emot flera
olika frekvenser frn andra neuroner genom dendriterna. y r en skalr som allts r samma
vrde fr alla neuroner som neuronen kopplas vidare till likt signalen som gr ut genom axonen
p en biologisk neuron.
Figur 2 representerar en artificiell neuron med ingngsvrdena x1 . . . xi . Man kan jmfra
ingngarna till vnster med dendriterna i en nervcell (till hger i figur 1), noden i mitten med
cellkroppen och utgngen till hger med axonen. Neuronens ingngsvrden kan hmmas eller
frstrkas precis som dendriterna och synapserna i en biologisk neuron kan ka eller minska
signalernas frekvens. Detta grs med en viktvektor som betecknas w fr weights (w1 . . . wi
i figuren). w
r allts en vektor med lika mnga dimensioner som x. Vikterna multipliceras
med ingngsvrdena s att de antingen hmmas eller frstrks. Drefter adderas ven en bias
betecknad b fr att ytterligare kunna frndra neuronens beteende.
w1
x1
w2
x2 b y
wi
xi
Den resulterande skalren benmns som pre-aktiveringen (pre-activation) och kan berknas
med fljande funktion:3
p(x) = b + wi xi = b + w
x
i
Pre-aktiveringen berknas allts genom att summera de viktade ingngsvrdena och addera
bias-vrdet. Summan i wi xi kan beskrivas som en vektormultiplikation av viktvektorn och
ingngsvektorn (w x).4
Som nmnt i delavsnittet Biologisk neuron utfr krnan cellkoppen i en biologisk neuron en
frndring av signalen, samma princip gller fr artificiella neuroner och sledes ska allts en
sista berkning utfras. Denna slutgiltiga berkningen i neuronen kallas aktiveringsfunktionen
(activation function), nedan betecknad som a(x) och r en funktion som ser olika ut beroende
p vilken typ av artificiell neuron det rr sig om. En artificiell neuron kan allts beskrivas som
fljande funktion:5
3
2.1.3 Ntverk
Ett ANN bestr allts av artificiella neuroner ihopkopplade som noder i ett ntverk. Noderna r
lagda lager p lager dr varje nod i ett lager r kopplade till varje nod i det nrliggande lagret.
Figur 3 r ett exempel p en ntverkskonfiguration. Det frsta lagret med noder kallas fr in-
gngslagret, detta lager innehller egentligen inga neuroner utan noderna symboliserar endast
ingngsvrden. De har med andra ord ingen aktiveringsfunktion eller bias. Utgngslagret r det
slutgiltiga lagret frn vilket ingngsvrdena hmtas. Lagren mellan ingngslagret och utgngs-
lagret kallas fr gmda lager eftersom de inte interageras med utifrn. Har ett ntverk fler n
ett gmt lager sger man ett ntverket r djupt och begreppet djupinlrning (deep learning)
anvnds.6
Gmt
Ingngslager Utgngslager
lager
x1
y
x2
Figur 3: Ntverkskonfiguration
Ingngsvrdena och utgngsvrdena i ett ANN kan beskrivas som radvektorerna x och y.
Pre-aktiveringen fr ett lager med neuroner kan skrivas som en radvektor p(l) med en di-
mension fr varje nod. l = 1 fr det frsta gmda lagret. Varje kolumn ska innehlla summan av
motsvarande neurons viktade ingngsvrden med bias-vrdet adderat (se delavsnittet Artificiell
neuron).
Ponera fr exemplets skull att det fregende lagret har fyra neuroner. Aktiveringen av det
fregende lagret kan beskrivas som radvektor med fyra dimensioner, a(l1) dr l r lagret vars
pre-aktivering ska berknas.
[ ]
a(l1) = a1 a2 a3 a4
Vikterna fr lagret kan beskrivas som en matris lika hg som bredden p a(l1) och lika
bred som antalet neuroner p lagret allts lika bred som p(l) . Om lagret har tre neuroner blir
viktmatrisen som nedan:
1 2 3
1 w11 w12 w13
2
w21 w22 w23
w(l) =
3 w31 w32 w33
4 w41 w42 w43
6
Nielsen 2015a.
4
Lagret bias-vrden blir d en vektor med tre dimensioner:
[ ]
(l)
b = b1 b2 b3
Fr att f den slutgiltiga aktiveringen av lagret a(l) mste varje neurons pre-aktivering kras
genom aktiveringsfunktionen a(x):8
[ ]
a(l) = a(p(l) ) = a(p1 ) a(p2 ) a(p3 )
Utgngsvektorn y berknas genom att repetera fregende fr varje lager i ntverket frn
det frsta gmda lagret. Ingngslagret ignoreras eftersom detta lager som tidigare nmnt inte
har ngra neuroner utan r endast en representation av ingngsvrden. Sledes finns inte a(l1)
fr det frsta gmda lagret, istllet kommer ingngsvektorn x in som aktiveringen fr det fre-
gende lagret: p(1) = x w(1) + b(1) Utgngsvektorn fs av y = a(a(n) w(n+1) + b(n+1) ) dr n
r antal gmda lager i ntverket.
Ntverket i figur 3 har 2 ingngsnoder, ett gmt lager med tre neuroner och en utgngsneu-
ron. En funktion y = f(x) fr ntverket kan definieras som:
5
2.1.6 Empirisk riskminimering
Inlrning kan beskrivas som approximering av en funktion.10 Om ntverket beskrivs som funk-
tionen y = f(x) r problemet som ska lsas allts approximeringen av en oknd funktion g(x).
g(x) skall approximeras med hjlp av trningsexemplen (x(1) , y(1) ), . . . , (x(t) , y(t) ) som allts r
exempel p ingngs och utgngsvrden till g(x).
Empirisk riskminimering eller Empirical Risk Minimization r ett koncept inom maskinin-
lrning som anvnds fr just detta.
Om ntverket beskrivs som en funktion y = f(x; ) dr r alla parametrar i ntverket, d.v.s
w och b kan problemet definieras som fljande enligt ERM:11
1
arg min l(f(x(t) ; ), y(t) ) + ()
T t
l(f(x; ) r en s kallad frlustfunktion (loss function), en funktion som ger ett mtt p skill-
naden mellan utgngsvektorn y d.v.s f(x(t) ; ) och den frvntade utgngsvektorn y(t) . T r
antalet trningsexempel och T1 t l(. . . ) ger allts den genomsnittliga frlusten ver trnings-
exemplen.12
Termen () anvnds inte fr vanlig ERM utan r ett tillgg som anvnds fr att frebyg-
ga att ntverket blir fr anpassat till trningsexemplen och drmed fungerar smre fr generella
fall (overfitting). Funktionen () r en s kallad regularizer som bestraffar vissa parametrar
av detta skl. r en koefficient som bestmmer balansen mellan regularizer-termen och den
genomsnittliga frlusten. Med detta tillgg kallas metoden egentligen Structural Risk Minimi-
zation (SRM) istllet fr ERM.13
Problemet gr allts ut p att minimera den genomsnittliga frlusten (loss) i ntverket
genom att optimera ntverkets parametrar. Det r allts ett optimeringsproblem och kan drfr
lsas med ngon redan knd optimeringsalgoritm.14
10
Principles of Risk Minimization for Learning Theory.
11
Larochelle 2013c.
12
Ibid.
13
Ibid.
14
Ibid.
6
2.1.7 Optimering med Stochastic Gradient Descent
Man kan beskriva optimeringspoblemet frklarat i fregende avsnitt som att hitta minimi-
punkten p frlustfunktionen. Ponera att frlusten endast beror p tv variabler, w och b och att
frlustfunktionen ser ut som i figur 4. Detta exempel r frsts grovt frenklat, ANN har ofta
miljontals parametrar som mste optimeras och en betydligt mer komplicerad frlustfunktion.
Man skulle kunna tnka sig att frska finna minimipunkten genom att g igenom alla punkter
dr gradienten r lika med noll d.v.s. alla lokala minima fr att sedan hitta de(t) lgsta av dessa.
Detta kan fungera med en enkel funktion som den i figur 4 men fr mer komplicerade funktioner
som i sammanhanget ANN blir det alldeles fr tidskrvande fr att metoden ska vara gngbar.15
40
z
20
5
0
4 2 0
0 2 4 5 b
w
7
rr sig nert mot funktionens minima. () r den negativa gradienten av regularizer-
termen. Koefficienten r ett vrde som kallas learning rate och bestmmer noggrannheten p
optimeringen, lgre vrden ger hgre noggrannhet men lngsammare optimering.18
Fr optimal prestanda mste ven vrdet p optimeras. ven detta finns det algoritmer fr
och en av dessa r Adaptive Moment Estimation eller Adam Optimizer algoritmen som kommer
terkomma i metoddelen.
2.1.8 Aktiveringsfunktionen
4
relu(x)
0
6 4 2 0 2 4 6
x
0.8
0.6
(x)
0.4
0.2
0
6 4 2 0 2 4 6
x
Figur 6: Sigmoidfunktion
I metoddelen i denna rapport anvnds aktiveringsfunktionerna rectified linear (se figur 5) och
sigmoid-funktionen (se figur 6). De r bda populra alternativ fr aktiveringsfunktioner.19
18
Larochelle 2013c.
19
Larochelle 2013a.
8
Sigmoid funktionen r definerad som (x) = 1+e1x och har bland annat egenskaperna
att dess vrde varierar mellan noll och ett samt att funktionens vrde strikt kar nr x kar.20
Funktionen kan ven approximera en stegfunktion.21
Rectified linear funktionen r definierad som relu(x) = max(0, x) och har bland annat
egenskaperna att funktionens vrde aldrig r negativt, att den ej har ngon vre grns samt att
dess vrde alltid blir noll vid negativa x.22
(0 1 2 3 4 5 6 7 8 9)
0 0 0 0 1 0 0 0 0 0
9
Eftersom ex r strikt positiv och nmnaren alltid r strre n tljaren hamnar alltid alla element
inom intervallet 0 x 1.
2.1.12 TensorFlow
TensorFlow r ett pythonbibliotek fr maskininlrning som tillhandahlls av Google.27 Bibli-
oteket innehller relevanta funktioner fr ANN trning och uppbyggnad som t.ex. relevanta
mattematiska funktioner och optimeringsalgoritmer. Denna del r en verblick ver hur Ten-
sorFlow fungerar.
TensorFlow utfr inte berkningar i python-tolken, istllet skapar TensorFlow en s.k. graf
(graph) som sedan krs i TensorFlows egna tolk. Grafen r en representation av programmet
som skapas av TensorFlow.28
Exemplet nedan visar hur det fungerar.
1 import tensorflow as tf
2
3 a = tf.add(1, 1) # a = 1+1
4 b = tf.mul(a, 2) # b = a*2
5
P frsta raden importeras TensorFlows python-modul som namnet tf. Rad 3 lgger till en
operation p grafen i det hr fallet add operationen som adderar tv tal. Variabeln a har allts inte
25
Larochelle 2013d.
26
Ibid.
27
Additional Resources.
28
Getting Started With TensorFlow.
10
tilldelats vrdet av operationen utan a har istllet tilldelats operationen sjlvt d.v.s. 1+1 istllet
fr 2. variabeln b blir allts tilldelad operationen a*2. Det skapas allts en kedja av operationer
ungefr som i ett funktionsorienterat programsprk, denna kedja r vad som kallas fr grafen.
Fr att utfra grafen och f ett vrde behvs en session. En session hller reda p grafens
tillstnd under krningen, inkluderat vrden p alla grafens variabler. Den kan sparas till en fil
samt terupptas. With-satsen skapar en session och evaluerar vrdet p b genom att kra grafen
i sessionen. Koden nedan r likvrdig.
TensorFlow representerar data med Tensors. Tensors kan vara antingen skalrer (rang 0),
vektorer (rang 1), matriser (rang 2) eller n-dimensionella matriser (rang n).
29
Man kan definiera en konstant tensor [med constant.
] Nedan definieras en konstant vektor
1 2 3
som (5, 4, 3) och en konstant matris som .
4 5 6
1 vektor_tensor = tf.constant([5,4,3])
2
3 matris_tensor = tf.constant([[1,2,3],
4 [4,5,6]])
Man behver inte initiera tensorn frn brjan, istllet kan man anvnda en placeholder. En
sdan variabel kan anvndas i grafen men behver inte initieras frrn sessionen ska kras.30
Nedan definieras en placeholder med datatypen float och med formen [3, 4] d.v.s. en matris
med bredden 3 och hjden 4.
Fr att definiera en variabel tensor som ven rknas in som parametrar hos TensorFlow
inbyggda optimeringsalgoritmer anvnds Variable vars frsta argument krver ett initialt vrde
fr tensorn.31 Nedan definieras en variabel tensor som vektorn (1, 5).
1 v = tf.Variable([1,5])
11
w3 = 0, 5
x3 = 3, 6
w2 = 0, 2
x2 = 2, 5 b = 0 y = 0, 919827
w1 = 0, 1
x1 = 1, 4
Koden nedan r ett exempel p en artificiell neuron definierad som den i figur 7.
1 import tensorflow as tf
2
3 x = tf.placeholder('float', [3])
4
5 w = tf.Variable([0.1,0.2,0.5])
6 b = tf.Variable(0.)
7
Vid rad 3 definieras en placeholder fr ingngsvektorn x med tre dimensioner. Rad 5 och
6 definieras variabler fr viktvektorn w och bias-vrdet b. Vid rad 5 Definieras operationen fr
hur pre-aktiveringen ska berknas (b + i wi xi ), sedan definieras operationen fr berkning av
aktiveringen, i det hr fallet anvnds en sigmoid-funktion som aktivererings-funktion. I nsta
steg skapas en session i vilken variablarna frst initieras. Sedan evalueras aktiveringen samtidigt
som x tilldelas ett vrde via argumentet feed_dict.
feed_dict-argumentet till sess.run tilldelar tensors i grafen vrden angivna i ett python dictionary-
objekt. I exemplet tilldelas placeholdern x vrdet [1.4,2.5,3.6], med andra ord anges ingngs-
vektorns vrde.
2.2 Metod
Mlet var att skapa ett program med Python och TensorFlow som kan trna artificiella neu-
ronnt att frutsga den korrekta siffran i en specifik ruta p slumpgenererade sudokuplaner.
Programmet anvndes sedan fr att trna ett separat ntverk fr varje ruta p planen (trningen
slutade dock fungera vid ruta 23). De resulterande trnade ntverken skulle allts kunna frut-
sga siffran i den ruta de var trnade fr givet en slumpmssig olst sudokuplan. Varje ntverk
testades med 200 slumpgenererade olsta sudokuplaner och en noggrannhet (andel korrekta
frutsgelser) berknades fr varje ntverk.
12
Varje sudokusiffra representerades som en one hot-vektor med tio dimensioner (0-9). Noll
anvndes nr en ruta var tom.
Ett separat ntverk trnades fr varje sudokuruta. Trningsexemplen bestod av par av ett
slumpgenererat olst sudoku och den korrekta siffran fr rutan som trnas fr. Bde ingngs-
och utgngsexemplet var representerat med one hot-vektorer. Varje ntverk fr rutorna trnades
med 100000 olika trningsexempel och trning med samma trningsexempel repeterades tio
gnger (varje repetition kallas fr en epok). Optimeringsalgoritmen var Adam Optimizer d.v.s
Stochastic Gradient Descent med Adaptive Moment Estimation.
Trningsexemplen genererades med hjlp av en sudoku-generator utvecklad av mjukvaruin-
genjren Paul Rutledge vars kllkod finns att hmta p https://github.com/RutledgePaulV/
sudoku-generator. Kllkoden granskades fr att skerstlla att sudokuplanerna verkligen ge-
nereras slumpmssigt.
Ntverket konfigurerades med ett ingngslager med 810 ingngar, ett sudoku har 81 rutor
och varje ruta krver tio ingngsvrden fr att dess siffra ska kunna representeras som en one
hot-vektor. Ett gmt lager anvndes och det gjordes olika frsk med 900, 500, 300, 200, 100
respektive 50 neuroner i lagret. P utgngslagret anvndes nio neuroner fr att representera en
siffra frn 1-9 med en one hot-vektor.
Olika frsk gjordes med aktiveringsfunktionerna textitrectified linear respektive sigmoid.
Tabellen nedan visar konfigurationerna fr de frsk som gjordes.
1 class Layer:
2 def __init__(self, n_nodes, n_prev_layer_nodes):
3 self.n_nodes = n_nodes
4 self.n_prev_layer_nodes = n_prev_layer_nodes
5
6 self.biases = tf.Variable(tf.random_normal([self.n_nodes]))
7 self.weights = tf.Variable(
13
8 tf.random_normal([self.n_prev_layer_nodes, self.n_nodes])
9 )
10
17 return activation_function(pre_activation)
1 class NetworkModel:
2 def __init__(self, n_input_nodes, n_output_nodes, *n_hidden_layer_nodes):
3 self.hidden_layers = []
4
5 self.hidden_layers.append(Layer(n_hidden_layer_nodes[0], n_input_nodes))
6
7 n_prev_layer_nodes = self.hidden_layers[0].n_nodes
8
25 return self.output_layer.get_pre_activation(prev_activation)
14
Funktionen train_neural_network r den som trnar ntverket. x r ingngs-tensorn, square
r numret p sudoku-rutan (brjar p noll). Hr specificeras ven antalet epoker antalet batcher
(grupper av trningsexempel) och storleken p varje batch (antalet trningsexempel som ingr).
Slutligen testas noggrannheten och resultatet skrivs till en fil. Filnamnet talar om att akti-
verinsfunktionen r rectified linear och antalet neuroner fr det gmda lagret r 200 (Det nd-
rades fr respektive krning).
3 n_epochs = 10
4 n_batches = 1000
5 batch_size = 100
6
Sista biten i programmet r den som definierar modellen, och anropar train_neural_network
fr varje ruta. NetworkModel instansieras och antal ingngs, utgngs, och neuroner fr det gm-
da lagret definieras. Antalet gmda ndrades vid respektive krning och likas aktiveringsfunk-
tionen som anges vid get_output.
3 prediction = neural_network.get_output(tf.nn.relu, x)
4 cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, y))
5 optimizer = tf.train.AdamOptimizer().minimize(cost)
6
15
9
2.3 Om kllorna
Nedan fljer en redogrelse fr de kllor som teorin bakom denna rapport har hmtats frn
och dess trovrdighet. ven om flera kllorna ej var frstahandskllor r de att betrakta som
trovrdiga och valdes ven p grund av sin pedagogik.
Boken Natural Image Statistics r en lrobok och monografi om statistisk analys av naturli-
ga bilder (d.v.s. vanliga fotografier). Den huvudsakliga motiveringen till att skriva boken var att
kunna utveckla berkningsmodeller av biologiska visuella system (drav kopplingen till neu-
ronnt). Boken r bland annat skriven av Aapo Hyvrinen som r professor i datorvetenskap
inriktat p maskininlrning p Hlsingfors universitet och har publicerat ett flertal artiklar inom
maskininlrning, ANN och datorseende. ven om kllan ej r en frstahandsklla (d det r en
monografi och lrobok) r den skriven av experter och r ngorlunda ny fr den informationen
som hmtades frn kllan (2009).
Neural Networks and Deep Learning r en introducerande bok om ANN, skriven av kvantfy-
sikern Michael A. Nielsen. Boken sponsras bland annat av fretaget TinEye som tillhandahller
kommersiella APIer fr bildigenknning och fretaget VisionSmarts som erbjuder mjukvaru-
lsningar fr bild- och filmanalys. ven om Nielsen inte r ngon expert inom omrdet r han
en seris akademiker och informationen i boken r grundlggande samt stmmer verens med
andra kllor. Informationen r dessutom uppdaterad januari 2017.
tensorflow.org r den officiella hemsidan fr TensorFlow och drmed sjlvfallet den bsta
kllan fr information om hur TensorFlow fungerar.
Videolektionerna i serien Neural networks av Hugo Larochelle behandlar grunderna i ANN.
Larochelle r forskare inom maskinintelligens p Google Brain och expert p djupinlrning.
Lektionerna r dessutom frn 2013 vilket r ngorlunda nytt fr denna typ av grundlggande
teori som sllan frndras.
Principles of Risk Minimization for Learning Theory r en artikel skriven av Vladimir N.
Vapnik som behandlar empirisk riskminimering och strukturell riskminimering. Vapnik r ma-
tematiker, expert p maskininlrning och statistik och en av skaparna av stdvektormaskin-
algoritmen.
16
3 Resultat
Tabell 1 visar noggrannheten fr ntverket, trnat fr de olika rutorna och med de olika aktive-
ringsfunktionerna(Sigmoid och Rectified Linear). Talen i rubrikerna under aktiveringsfunktio-
nerna refererar till antal neuroner i det gmda lagret. Programmet slutade dock fungera vid ruta
23 (notera att rutorna r numrerade med noll som frsta rutan).
Noggrannhet (%)
Sigmoid Rectified linear
Ruta 900 900 500 300 200 100 50
0 96 98 97 97 98 97 93
1 96 98 99 99 98 100 100
2 97 98 99 97 99 100 99
3 96 99 99 98 99 100 94
4 98 98 98 100 99 100 98
5 97 99 97 99 98 98 97
6 95 92 100 98 97 97 93
7 98 99 99 100 99 99 98
8 99 98 100 100 99 100 96
9 99 99 100 97 99 99 96
10 99 99 99 98 99 99 96
11 99 100 99 98 99 99 93
12 96 99 99 99 99 98 95
13 98 99 99 99 99 99 98
14 99 100 100 100 100 100 97
15 97 99 98 100 98 100 97
16 97 98 99 98 98 99 93
17 98 99 100 99 100 99 94
18 96 100 99 99 99 99 92
19 98 97 96 97 98 99 97
20 100 98 99 99 99 100 95
21 98 99 99 98 99 99 94
22 98 100 100 99 100 100 97
17
Tabell 2 visar den genomsnittliga noggrannheten ver alla rutor fr de olika frsken.
4 Diskussion
Den genomsnittliga noggrannheten ver rutorna blev som mest 99,1 % (med aktiveringsfunk-
tionen rectified linear och 100 neuroner i det gmda lagret). ven om ntverket endast trnades
fram till ruta 23 gr det utifrn detta att dra slutsatsen att metoden fungerar fr att lsa sudo-
ku och drmed besvara den huvudsakliga frgestllningen. Eftersom ett sudoku kan roteras och
spegelvndas kan algoritmen appliceras p alla rutor utom de nio mittersta. De mittersta rutorna
kan sedan lsas genom att applicera reglerna som finns fr sudoku och anvnda uteslutnings-
metoden. Detta r frsts att betrakta som en separat algoritm om n en mycket simpel sdan
som kan implementeras mycket enkelt. Strngt talat s kan allts metoden anvndas fr att lsa
sudoku i kombination med en annan mycket simpel algoritm (uteslutningsmetoden).
En mjlig invndning r att noggrannheten inte uppndde 100 % fr varje ruta, ovannmnda
princip gller ven hr, detta ej ett problem om metoden anvnds i kombination med den tidigare
nmnda uteslutningsmetoden.
Nr det gller felkllor s kommer den huvudsakliga av att det endast gjordes en krning fr
varje ntverkskonfiguration. Eftersom att parametrarna initieras med slumpade vrden skulle
resultatet kunna ha blivit annorlunda vid andra krningar.
Det rcker med ett gmt lager fr att ett ANN ska kunna approximera vilken funktion som
helst och ju fler neuroner desto noggrannare blir approximeringen.33 Resultatet visade att nog-
grannheten blev ngot bttre nr antalet neuroner i det gmda lagret minskade. Vid 50 neuroner
blev dock noggrannheten signifikant smre. Troligen blir resultatet bst nr det finns s f pa-
rametrar som mjligt att optimera samtidigt som det finns tillrckligt mnga neuroner fr att
approximeringen ska kunna bli tillrckligt noggrann. Det mste allts finnas en balans mellan
komplexitet och mjlig approximeringsfrmga i systemet. Troligtvis tar helt enkelt ett fr kom-
plext ntverk mycket lngre tid att optimera. Det skulle behvts mer n tio epoker och kanske
fler trningsexempel. Det var troligen ett bra val av metod nr det gller antal gmda lager d
det verkar som att ett lager rckte fr att f fram en hg noggrannhet. En kad komplexitet i
form av fler lager skulle troligen ha varit en nackdel.
33
Nielsen 2015b.
18
Resultatet hade allts frmodligen kunnat frbttras genom att anvnda fler trningsexempel
och fler epoker samt fler neuroner. I framtida underskningar skulle man kunna studera de
trnade ntverken fr att f en viss frstelse fr hur algoritmen fungerar. Resultatet skulle man
senare kunna utnyttja fr att utveckla bttre modeller.
Referenser
Additional Resources. URL: https://www.tensorflow.org/about/ (hmtad 2017-03-09).
Getting Started With TensorFlow. URL: https : / / www . tensorflow . org / get _ started / get _
started (hmtad 2017-03-09).
Hyvrinen, A., J. Hurri och P.O. Hoyer (2009). Natural Image Statistics: A Probabilistic Approach to
Early Computational Vision. 1st. Springer Publishing Company, Incorporated. ISBN: 978-1-84882-
491-1.
Larochelle, H. (2013a). Neural networks [1.2] : Feedforward neural network - activation function.
Youtube. URL: https://www.youtube.com/watch?v=tCHIkgWZLOQ (hmtad 2017-02-04).
(2013b). Neural networks [1.4] : Feedforward neural network - multilayer neural network. Youtube.
URL: https://www.youtube.com/watch?v=apPiZd-qnZ8 (hmtad 2017-02-04).
(2013c). Neural networks [2.1] : Training neural networks - empirical risk minimization. Youtube.
URL: https://www.youtube.com/watch?v=5adNQvSlF50 (hmtad 2017-02-04).
(2013d). Neural networks [2.2] : Training neural networks - loss function. Youtube. URL: https:
//www.youtube.com/watch?v=PpFTODTztsU (hmtad 2017-02-04).
Nielsen, M.A. (2015a). Neural Networks and Deep Learning. Kap. 1.
(2015b). Neural Networks and Deep Learning. Kap. 4.
Vapnik, V.N. Principles of Risk Minimization for Learning Theory. I: AT &T Bell Laboratories.
19