Added chapters, trained net

This commit is contained in:
Clemens Dautermann 2019-12-27 20:08:35 +01:00
parent 9350b1e4ba
commit a3f984996c
30 changed files with 1134 additions and 934 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -79,7 +79,7 @@ class Net(torch.nn.Module):
return F.log_softmax(x, dim=1) return F.log_softmax(x, dim=1)
net = Net() net = torch.load('./nets/net_3.pt')
optimizer = optim.Adam(net.parameters(), lr=0.001) optimizer = optim.Adam(net.parameters(), lr=0.001)
@ -95,5 +95,5 @@ for epoch in range(100):
optimizer.step() optimizer.step()
print(loss) print(loss)
torch.save(net, './nets/net_' + str(epoch) + '.pt') torch.save(net, './nets/net_' + str(epoch + 3) + '.pt')
testnet(net, testset) testnet(net, testset)

View file

@ -26,37 +26,37 @@
\abx@aux@segm{0}{0}{1} \abx@aux@segm{0}{0}{1}
\abx@aux@cite{2} \abx@aux@cite{2}
\abx@aux@segm{0}{0}{2} \abx@aux@segm{0}{0}{2}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1}Was ist maschinelles Lernen?}{3}{section.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {1}Was ist maschinelles Lernen?}{3}{section.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Einsatzgebiete maschinellen Lernens}{3}{subsection.1.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Einsatzgebiete maschinellen Lernens}{3}{subsection.1.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {2}Neuronale Netze}{3}{section.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {2}Neuronale Netze}{3}{section.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Maschinelles Lernen und menschliches Lernen}{3}{subsection.2.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Maschinelles Lernen und menschliches Lernen}{3}{subsection.2.1}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Neuron \newline Quelle: simple.wikipedia.org/wiki/File:Neuron.svg\newline Copyright: CC Attribution-Share Alike von Nutzer Dhp1080,\newline bearbeitet}}{4}{figure.1}} \@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Neuron \newline Quelle: simple.wikipedia.org/wiki/File:Neuron.svg\newline Copyright: CC Attribution-Share Alike von Nutzer Dhp1080,\newline bearbeitet}}{4}{figure.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Der Aufbau eines neuronalen Netzes}{4}{subsection.2.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Der Aufbau eines neuronalen Netzes}{4}{subsection.2.2}\protected@file@percent }
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Ein einfaches neuronales Netz}}{5}{figure.2}} \@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Ein einfaches neuronales Netz}}{5}{figure.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Berechnung des Ausgabevektors}{7}{subsection.2.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Berechnung des Ausgabevektors}{6}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Der Lernprozess}{7}{subsection.2.4}} \@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Der Plot der Sigmoid Funktion $\sigma (x)=\frac {e^x}{e^x+1}$}}{6}{figure.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.1}Backpropagation}{7}{subsubsection.2.4.1}} \@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Formel zur Berechnung eines Ausgabevektors aus einem Eingabevektor durch ein Layer Neuronen. }}{7}{figure.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2}Fehlerfunktionen}{7}{subsubsection.2.4.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Der Lernprozess}{8}{subsection.2.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.3}SGD}{7}{subsubsection.2.4.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.1}Fehlerfunktionen}{9}{subsubsection.2.4.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.4}Zusammenfassung}{7}{subsubsection.2.4.4}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2}Gradientenverfahren}{9}{subsubsection.2.4.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Verschiedene Layerarten}{7}{subsection.2.5}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Verschiedene Layerarten}{9}{subsection.2.5}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.1}Fully connected Layers}{7}{subsubsection.2.5.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.1}Fully connected Layers}{9}{subsubsection.2.5.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.2}Convolutional Layers}{7}{subsubsection.2.5.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.2}Convolutional Layers}{9}{subsubsection.2.5.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.3}Pooling Layers}{7}{subsubsection.2.5.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.3}Pooling Layers}{9}{subsubsection.2.5.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}PyTorch}{7}{section.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}PyTorch}{9}{section.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Datenvorbereitung}{7}{subsection.3.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Datenvorbereitung}{9}{subsection.3.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Definieren des Netzes}{7}{subsection.3.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Definieren des Netzes}{9}{subsection.3.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Trainieren des Netzes}{7}{subsection.3.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Trainieren des Netzes}{9}{subsection.3.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {4}Fallbeispiel I:\newline Ein Klassifizierungsnetzwerk f\IeC {\"u}r handgeschriebene Ziffern}{7}{section.4}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {4}Fallbeispiel I:\newline Ein Klassifizierungsnetzwerk f\IeC {\"u}r handgeschriebene Ziffern}{9}{section.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Aufgabe}{7}{subsection.4.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Aufgabe}{9}{subsection.4.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Der MNIST Datensatz}{7}{subsection.4.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Der MNIST Datensatz}{9}{subsection.4.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Fragmentbasierte Erkennung}{7}{subsection.4.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Fragmentbasierte Erkennung}{9}{subsection.4.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ergebnis}{7}{subsection.4.4}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ergebnis}{9}{subsection.4.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {5}Fallbeispiel II:\newline Eine selbsttrainierende KI f\IeC {\"u}r Tic-Tac-Toe}{7}{section.5}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {5}Fallbeispiel II:\newline Eine selbsttrainierende KI f\IeC {\"u}r Tic-Tac-Toe}{9}{section.5}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Das Prinzip}{7}{subsection.5.1}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Das Prinzip}{9}{subsection.5.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Chance-Tree Optimierung}{7}{subsection.5.2}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Chance-Tree Optimierung}{9}{subsection.5.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}L\IeC {\"o}sung mittels eines neuronalen Netzes}{7}{subsection.5.3}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}L\IeC {\"o}sung mittels eines neuronalen Netzes}{9}{subsection.5.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Vergleich}{7}{subsection.5.4}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Vergleich}{9}{subsection.5.4}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {6}Schlusswort}{7}{section.6}} \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {6}Schlusswort}{9}{section.6}\protected@file@percent }
\bibcite{1}{1} \bibcite{1}{1}
\bibcite{2}{2} \bibcite{2}{2}

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<bcf:controlfile version="3.4" bltxversion="3.10" xmlns:bcf="https://sourceforge.net/projects/biblatex"> <bcf:controlfile version="3.5" bltxversion="3.12" xmlns:bcf="https://sourceforge.net/projects/biblatex">
<!-- BIBER OPTIONS --> <!-- BIBER OPTIONS -->
<bcf:options component="biber" type="global"> <bcf:options component="biber" type="global">
<bcf:option type="singlevalued"> <bcf:option type="singlevalued">
@ -97,6 +97,10 @@
<bcf:key>maxcitenames</bcf:key> <bcf:key>maxcitenames</bcf:key>
<bcf:value>3</bcf:value> <bcf:value>3</bcf:value>
</bcf:option> </bcf:option>
<bcf:option type="singlevalued">
<bcf:key>maxsortnames</bcf:key>
<bcf:value>3</bcf:value>
</bcf:option>
<bcf:option type="singlevalued"> <bcf:option type="singlevalued">
<bcf:key>maxitems</bcf:key> <bcf:key>maxitems</bcf:key>
<bcf:value>3</bcf:value> <bcf:value>3</bcf:value>
@ -113,6 +117,10 @@
<bcf:key>mincitenames</bcf:key> <bcf:key>mincitenames</bcf:key>
<bcf:value>1</bcf:value> <bcf:value>1</bcf:value>
</bcf:option> </bcf:option>
<bcf:option type="singlevalued">
<bcf:key>minsortnames</bcf:key>
<bcf:value>1</bcf:value>
</bcf:option>
<bcf:option type="singlevalued"> <bcf:option type="singlevalued">
<bcf:key>minitems</bcf:key> <bcf:key>minitems</bcf:key>
<bcf:value>1</bcf:value> <bcf:value>1</bcf:value>
@ -354,12 +362,14 @@
<bcf:option datatype="boolean">labeldateparts</bcf:option> <bcf:option datatype="boolean">labeldateparts</bcf:option>
<bcf:option datatype="boolean">uniquelist</bcf:option> <bcf:option datatype="boolean">uniquelist</bcf:option>
<bcf:option datatype="boolean">uniquename</bcf:option> <bcf:option datatype="boolean">uniquename</bcf:option>
<bcf:option datatype="boolean">noroman</bcf:option>
<bcf:option datatype="boolean">singletitle</bcf:option> <bcf:option datatype="boolean">singletitle</bcf:option>
<bcf:option datatype="boolean">uniquetitle</bcf:option> <bcf:option datatype="boolean">uniquetitle</bcf:option>
<bcf:option datatype="boolean">uniquebaretitle</bcf:option> <bcf:option datatype="boolean">uniquebaretitle</bcf:option>
<bcf:option datatype="boolean">uniquework</bcf:option> <bcf:option datatype="boolean">uniquework</bcf:option>
<bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option>
<bcf:option datatype="boolean">defernumbers</bcf:option> <bcf:option datatype="boolean">defernumbers</bcf:option>
<bcf:option datatype="boolean">locallabelwidth</bcf:option>
<bcf:option datatype="boolean">bibwarn</bcf:option> <bcf:option datatype="boolean">bibwarn</bcf:option>
<bcf:option datatype="boolean">useprefix</bcf:option> <bcf:option datatype="boolean">useprefix</bcf:option>
<bcf:option datatype="boolean">defernums</bcf:option> <bcf:option datatype="boolean">defernums</bcf:option>
@ -381,6 +391,8 @@
<bcf:option datatype="integer">minbibnames</bcf:option> <bcf:option datatype="integer">minbibnames</bcf:option>
<bcf:option datatype="integer">maxcitenames</bcf:option> <bcf:option datatype="integer">maxcitenames</bcf:option>
<bcf:option datatype="integer">mincitenames</bcf:option> <bcf:option datatype="integer">mincitenames</bcf:option>
<bcf:option datatype="integer">maxsortnames</bcf:option>
<bcf:option datatype="integer">minsortnames</bcf:option>
<bcf:option datatype="integer">maxitems</bcf:option> <bcf:option datatype="integer">maxitems</bcf:option>
<bcf:option datatype="integer">minitems</bcf:option> <bcf:option datatype="integer">minitems</bcf:option>
<bcf:option datatype="integer">maxalphanames</bcf:option> <bcf:option datatype="integer">maxalphanames</bcf:option>
@ -418,6 +430,7 @@
<bcf:option datatype="boolean">labeldateparts</bcf:option> <bcf:option datatype="boolean">labeldateparts</bcf:option>
<bcf:option datatype="boolean">uniquelist</bcf:option> <bcf:option datatype="boolean">uniquelist</bcf:option>
<bcf:option datatype="boolean">uniquename</bcf:option> <bcf:option datatype="boolean">uniquename</bcf:option>
<bcf:option datatype="boolean">noroman</bcf:option>
<bcf:option datatype="boolean">singletitle</bcf:option> <bcf:option datatype="boolean">singletitle</bcf:option>
<bcf:option datatype="boolean">uniquetitle</bcf:option> <bcf:option datatype="boolean">uniquetitle</bcf:option>
<bcf:option datatype="boolean">uniquebaretitle</bcf:option> <bcf:option datatype="boolean">uniquebaretitle</bcf:option>
@ -442,6 +455,8 @@
<bcf:option datatype="integer">minbibnames</bcf:option> <bcf:option datatype="integer">minbibnames</bcf:option>
<bcf:option datatype="integer">maxcitenames</bcf:option> <bcf:option datatype="integer">maxcitenames</bcf:option>
<bcf:option datatype="integer">mincitenames</bcf:option> <bcf:option datatype="integer">mincitenames</bcf:option>
<bcf:option datatype="integer">maxsortnames</bcf:option>
<bcf:option datatype="integer">minsortnames</bcf:option>
<bcf:option datatype="integer">maxitems</bcf:option> <bcf:option datatype="integer">maxitems</bcf:option>
<bcf:option datatype="integer">minitems</bcf:option> <bcf:option datatype="integer">minitems</bcf:option>
<bcf:option datatype="integer">maxalphanames</bcf:option> <bcf:option datatype="integer">maxalphanames</bcf:option>
@ -475,6 +490,7 @@
<bcf:option datatype="boolean">indexing</bcf:option> <bcf:option datatype="boolean">indexing</bcf:option>
<bcf:option datatype="boolean">uniquelist</bcf:option> <bcf:option datatype="boolean">uniquelist</bcf:option>
<bcf:option datatype="boolean">uniquename</bcf:option> <bcf:option datatype="boolean">uniquename</bcf:option>
<bcf:option datatype="boolean">noroman</bcf:option>
<bcf:option datatype="boolean">useprefix</bcf:option> <bcf:option datatype="boolean">useprefix</bcf:option>
<bcf:option datatype="boolean">skipbib</bcf:option> <bcf:option datatype="boolean">skipbib</bcf:option>
<bcf:option datatype="boolean">skipbiblist</bcf:option> <bcf:option datatype="boolean">skipbiblist</bcf:option>
@ -487,6 +503,8 @@
<bcf:option datatype="integer">minbibnames</bcf:option> <bcf:option datatype="integer">minbibnames</bcf:option>
<bcf:option datatype="integer">maxcitenames</bcf:option> <bcf:option datatype="integer">maxcitenames</bcf:option>
<bcf:option datatype="integer">mincitenames</bcf:option> <bcf:option datatype="integer">mincitenames</bcf:option>
<bcf:option datatype="integer">maxsortnames</bcf:option>
<bcf:option datatype="integer">minsortnames</bcf:option>
<bcf:option datatype="integer">maxitems</bcf:option> <bcf:option datatype="integer">maxitems</bcf:option>
<bcf:option datatype="integer">minitems</bcf:option> <bcf:option datatype="integer">minitems</bcf:option>
<bcf:option datatype="integer">maxalphanames</bcf:option> <bcf:option datatype="integer">maxalphanames</bcf:option>
@ -788,7 +806,7 @@
<bcf:entrytype skip_output="true">xdata</bcf:entrytype> <bcf:entrytype skip_output="true">xdata</bcf:entrytype>
</bcf:entrytypes> </bcf:entrytypes>
<bcf:fields> <bcf:fields>
<bcf:field fieldtype="field" datatype="integer">number</bcf:field> <bcf:field fieldtype="field" datatype="integer">sortyear</bcf:field>
<bcf:field fieldtype="field" datatype="integer">volume</bcf:field> <bcf:field fieldtype="field" datatype="integer">volume</bcf:field>
<bcf:field fieldtype="field" datatype="integer">volumes</bcf:field> <bcf:field fieldtype="field" datatype="integer">volumes</bcf:field>
<bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field>
@ -829,6 +847,7 @@
<bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field>
<bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field>
<bcf:field fieldtype="field" datatype="literal">note</bcf:field> <bcf:field fieldtype="field" datatype="literal">note</bcf:field>
<bcf:field fieldtype="field" datatype="literal">number</bcf:field>
<bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field>
<bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field>
<bcf:field fieldtype="field" datatype="literal">part</bcf:field> <bcf:field fieldtype="field" datatype="literal">part</bcf:field>
@ -852,7 +871,6 @@
<bcf:field fieldtype="field" datatype="literal" label="true">shortjournal</bcf:field> <bcf:field fieldtype="field" datatype="literal" label="true">shortjournal</bcf:field>
<bcf:field fieldtype="field" datatype="literal" label="true">shortseries</bcf:field> <bcf:field fieldtype="field" datatype="literal" label="true">shortseries</bcf:field>
<bcf:field fieldtype="field" datatype="literal" label="true">shorttitle</bcf:field> <bcf:field fieldtype="field" datatype="literal" label="true">shorttitle</bcf:field>
<bcf:field fieldtype="field" datatype="literal" skip_output="true">sortyear</bcf:field>
<bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field>
<bcf:field fieldtype="field" datatype="literal" skip_output="true">sortshorthand</bcf:field> <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortshorthand</bcf:field>
<bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field>
@ -1491,8 +1509,12 @@
<bcf:entrytype>online</bcf:entrytype> <bcf:entrytype>online</bcf:entrytype>
<bcf:field>addendum</bcf:field> <bcf:field>addendum</bcf:field>
<bcf:field>author</bcf:field> <bcf:field>author</bcf:field>
<bcf:field>doi</bcf:field>
<bcf:field>editor</bcf:field> <bcf:field>editor</bcf:field>
<bcf:field>editortype</bcf:field> <bcf:field>editortype</bcf:field>
<bcf:field>eprint</bcf:field>
<bcf:field>eprintclass</bcf:field>
<bcf:field>eprinttype</bcf:field>
<bcf:field>language</bcf:field> <bcf:field>language</bcf:field>
<bcf:field>note</bcf:field> <bcf:field>note</bcf:field>
<bcf:field>organization</bcf:field> <bcf:field>organization</bcf:field>
@ -1561,9 +1583,19 @@
<bcf:field>eprinttype</bcf:field> <bcf:field>eprinttype</bcf:field>
<bcf:field>eventday</bcf:field> <bcf:field>eventday</bcf:field>
<bcf:field>eventendday</bcf:field> <bcf:field>eventendday</bcf:field>
<bcf:field>eventendhour</bcf:field>
<bcf:field>eventendminute</bcf:field>
<bcf:field>eventendmonth</bcf:field> <bcf:field>eventendmonth</bcf:field>
<bcf:field>eventendseason</bcf:field>
<bcf:field>eventendsecond</bcf:field>
<bcf:field>eventendtimezone</bcf:field>
<bcf:field>eventendyear</bcf:field> <bcf:field>eventendyear</bcf:field>
<bcf:field>eventhour</bcf:field>
<bcf:field>eventminute</bcf:field>
<bcf:field>eventmonth</bcf:field> <bcf:field>eventmonth</bcf:field>
<bcf:field>eventseason</bcf:field>
<bcf:field>eventsecond</bcf:field>
<bcf:field>eventtimezone</bcf:field>
<bcf:field>eventyear</bcf:field> <bcf:field>eventyear</bcf:field>
<bcf:field>eventtitle</bcf:field> <bcf:field>eventtitle</bcf:field>
<bcf:field>eventtitleaddon</bcf:field> <bcf:field>eventtitleaddon</bcf:field>
@ -1595,9 +1627,19 @@
<bcf:field>eprinttype</bcf:field> <bcf:field>eprinttype</bcf:field>
<bcf:field>eventday</bcf:field> <bcf:field>eventday</bcf:field>
<bcf:field>eventendday</bcf:field> <bcf:field>eventendday</bcf:field>
<bcf:field>eventendhour</bcf:field>
<bcf:field>eventendminute</bcf:field>
<bcf:field>eventendmonth</bcf:field> <bcf:field>eventendmonth</bcf:field>
<bcf:field>eventendseason</bcf:field>
<bcf:field>eventendsecond</bcf:field>
<bcf:field>eventendtimezone</bcf:field>
<bcf:field>eventendyear</bcf:field> <bcf:field>eventendyear</bcf:field>
<bcf:field>eventhour</bcf:field>
<bcf:field>eventminute</bcf:field>
<bcf:field>eventmonth</bcf:field> <bcf:field>eventmonth</bcf:field>
<bcf:field>eventseason</bcf:field>
<bcf:field>eventsecond</bcf:field>
<bcf:field>eventtimezone</bcf:field>
<bcf:field>eventyear</bcf:field> <bcf:field>eventyear</bcf:field>
<bcf:field>eventtitle</bcf:field> <bcf:field>eventtitle</bcf:field>
<bcf:field>eventtitleaddon</bcf:field> <bcf:field>eventtitleaddon</bcf:field>
@ -1639,9 +1681,19 @@
<bcf:field>eprinttype</bcf:field> <bcf:field>eprinttype</bcf:field>
<bcf:field>eventday</bcf:field> <bcf:field>eventday</bcf:field>
<bcf:field>eventendday</bcf:field> <bcf:field>eventendday</bcf:field>
<bcf:field>eventendhour</bcf:field>
<bcf:field>eventendminute</bcf:field>
<bcf:field>eventendmonth</bcf:field> <bcf:field>eventendmonth</bcf:field>
<bcf:field>eventendseason</bcf:field>
<bcf:field>eventendsecond</bcf:field>
<bcf:field>eventendtimezone</bcf:field>
<bcf:field>eventendyear</bcf:field> <bcf:field>eventendyear</bcf:field>
<bcf:field>eventhour</bcf:field>
<bcf:field>eventminute</bcf:field>
<bcf:field>eventmonth</bcf:field> <bcf:field>eventmonth</bcf:field>
<bcf:field>eventseason</bcf:field>
<bcf:field>eventsecond</bcf:field>
<bcf:field>eventtimezone</bcf:field>
<bcf:field>eventyear</bcf:field> <bcf:field>eventyear</bcf:field>
<bcf:field>eventtitle</bcf:field> <bcf:field>eventtitle</bcf:field>
<bcf:field>eventtitleaddon</bcf:field> <bcf:field>eventtitleaddon</bcf:field>
@ -1715,6 +1767,24 @@
<bcf:entrytype>unpublished</bcf:entrytype> <bcf:entrytype>unpublished</bcf:entrytype>
<bcf:field>addendum</bcf:field> <bcf:field>addendum</bcf:field>
<bcf:field>author</bcf:field> <bcf:field>author</bcf:field>
<bcf:field>eventday</bcf:field>
<bcf:field>eventendday</bcf:field>
<bcf:field>eventendhour</bcf:field>
<bcf:field>eventendminute</bcf:field>
<bcf:field>eventendmonth</bcf:field>
<bcf:field>eventendseason</bcf:field>
<bcf:field>eventendsecond</bcf:field>
<bcf:field>eventendtimezone</bcf:field>
<bcf:field>eventendyear</bcf:field>
<bcf:field>eventhour</bcf:field>
<bcf:field>eventminute</bcf:field>
<bcf:field>eventmonth</bcf:field>
<bcf:field>eventseason</bcf:field>
<bcf:field>eventsecond</bcf:field>
<bcf:field>eventtimezone</bcf:field>
<bcf:field>eventyear</bcf:field>
<bcf:field>eventtitle</bcf:field>
<bcf:field>eventtitleaddon</bcf:field>
<bcf:field>howpublished</bcf:field> <bcf:field>howpublished</bcf:field>
<bcf:field>language</bcf:field> <bcf:field>language</bcf:field>
<bcf:field>location</bcf:field> <bcf:field>location</bcf:field>
@ -1723,6 +1793,8 @@
<bcf:field>subtitle</bcf:field> <bcf:field>subtitle</bcf:field>
<bcf:field>title</bcf:field> <bcf:field>title</bcf:field>
<bcf:field>titleaddon</bcf:field> <bcf:field>titleaddon</bcf:field>
<bcf:field>type</bcf:field>
<bcf:field>venue</bcf:field>
</bcf:entryfields> </bcf:entryfields>
<bcf:constraints> <bcf:constraints>
<bcf:entrytype>article</bcf:entrytype> <bcf:entrytype>article</bcf:entrytype>

View file

@ -1,6 +1,10 @@
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax \boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {ngerman}{} \babel@toc {ngerman}{}
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {figure}{\numberline {1}{\ignorespaces Neuron \newline Quelle: simple.wikipedia.org/wiki/File:Neuron.svg\newline Copyright: CC Attribution-Share Alike von Nutzer Dhp1080,\newline bearbeitet}}{4}{figure.1} \contentsline {figure}{\numberline {1}{\ignorespaces Neuron \newline Quelle: simple.wikipedia.org/wiki/File:Neuron.svg\newline Copyright: CC Attribution-Share Alike von Nutzer Dhp1080,\newline bearbeitet}}{4}{figure.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {figure}{\numberline {2}{\ignorespaces Ein einfaches neuronales Netz}}{5}{figure.2} \contentsline {figure}{\numberline {2}{\ignorespaces Ein einfaches neuronales Netz}}{5}{figure.2}%
\defcounter {refsection}{0}\relax
\contentsline {figure}{\numberline {3}{\ignorespaces Der Plot der Sigmoid Funktion $\sigma (x)=\frac {e^x}{e^x+1}$}}{6}{figure.3}%
\defcounter {refsection}{0}\relax
\contentsline {figure}{\numberline {4}{\ignorespaces Formel zur Berechnung eines Ausgabevektors aus einem Eingabevektor durch ein Layer Neuronen. }}{7}{figure.4}%

File diff suppressed because it is too large Load diff

View file

@ -5,26 +5,24 @@
\BOOKMARK [2][-]{subsection.2.2}{Der Aufbau eines neuronalen Netzes}{section.2}% 5 \BOOKMARK [2][-]{subsection.2.2}{Der Aufbau eines neuronalen Netzes}{section.2}% 5
\BOOKMARK [2][-]{subsection.2.3}{Berechnung des Ausgabevektors}{section.2}% 6 \BOOKMARK [2][-]{subsection.2.3}{Berechnung des Ausgabevektors}{section.2}% 6
\BOOKMARK [2][-]{subsection.2.4}{Der Lernprozess}{section.2}% 7 \BOOKMARK [2][-]{subsection.2.4}{Der Lernprozess}{section.2}% 7
\BOOKMARK [3][-]{subsubsection.2.4.1}{Backpropagation}{subsection.2.4}% 8 \BOOKMARK [3][-]{subsubsection.2.4.1}{Fehlerfunktionen}{subsection.2.4}% 8
\BOOKMARK [3][-]{subsubsection.2.4.2}{Fehlerfunktionen}{subsection.2.4}% 9 \BOOKMARK [3][-]{subsubsection.2.4.2}{Gradientenverfahren}{subsection.2.4}% 9
\BOOKMARK [3][-]{subsubsection.2.4.3}{SGD}{subsection.2.4}% 10 \BOOKMARK [2][-]{subsection.2.5}{Verschiedene Layerarten}{section.2}% 10
\BOOKMARK [3][-]{subsubsection.2.4.4}{Zusammenfassung}{subsection.2.4}% 11 \BOOKMARK [3][-]{subsubsection.2.5.1}{Fully connected Layers}{subsection.2.5}% 11
\BOOKMARK [2][-]{subsection.2.5}{Verschiedene Layerarten}{section.2}% 12 \BOOKMARK [3][-]{subsubsection.2.5.2}{Convolutional Layers}{subsection.2.5}% 12
\BOOKMARK [3][-]{subsubsection.2.5.1}{Fully connected Layers}{subsection.2.5}% 13 \BOOKMARK [3][-]{subsubsection.2.5.3}{Pooling Layers}{subsection.2.5}% 13
\BOOKMARK [3][-]{subsubsection.2.5.2}{Convolutional Layers}{subsection.2.5}% 14 \BOOKMARK [1][-]{section.3}{PyTorch}{}% 14
\BOOKMARK [3][-]{subsubsection.2.5.3}{Pooling Layers}{subsection.2.5}% 15 \BOOKMARK [2][-]{subsection.3.1}{Datenvorbereitung}{section.3}% 15
\BOOKMARK [1][-]{section.3}{PyTorch}{}% 16 \BOOKMARK [2][-]{subsection.3.2}{Definieren des Netzes}{section.3}% 16
\BOOKMARK [2][-]{subsection.3.1}{Datenvorbereitung}{section.3}% 17 \BOOKMARK [2][-]{subsection.3.3}{Trainieren des Netzes}{section.3}% 17
\BOOKMARK [2][-]{subsection.3.2}{Definieren des Netzes}{section.3}% 18 \BOOKMARK [1][-]{section.4}{Fallbeispiel I:Ein Klassifizierungsnetzwerk f\374r handgeschriebene Ziffern}{}% 18
\BOOKMARK [2][-]{subsection.3.3}{Trainieren des Netzes}{section.3}% 19 \BOOKMARK [2][-]{subsection.4.1}{Aufgabe}{section.4}% 19
\BOOKMARK [1][-]{section.4}{Fallbeispiel I:Ein Klassifizierungsnetzwerk f\374r handgeschriebene Ziffern}{}% 20 \BOOKMARK [2][-]{subsection.4.2}{Der MNIST Datensatz}{section.4}% 20
\BOOKMARK [2][-]{subsection.4.1}{Aufgabe}{section.4}% 21 \BOOKMARK [2][-]{subsection.4.3}{Fragmentbasierte Erkennung}{section.4}% 21
\BOOKMARK [2][-]{subsection.4.2}{Der MNIST Datensatz}{section.4}% 22 \BOOKMARK [2][-]{subsection.4.4}{Ergebnis}{section.4}% 22
\BOOKMARK [2][-]{subsection.4.3}{Fragmentbasierte Erkennung}{section.4}% 23 \BOOKMARK [1][-]{section.5}{Fallbeispiel II:Eine selbsttrainierende KI f\374r Tic-Tac-Toe}{}% 23
\BOOKMARK [2][-]{subsection.4.4}{Ergebnis}{section.4}% 24 \BOOKMARK [2][-]{subsection.5.1}{Das Prinzip}{section.5}% 24
\BOOKMARK [1][-]{section.5}{Fallbeispiel II:Eine selbsttrainierende KI f\374r Tic-Tac-Toe}{}% 25 \BOOKMARK [2][-]{subsection.5.2}{Chance-Tree Optimierung}{section.5}% 25
\BOOKMARK [2][-]{subsection.5.1}{Das Prinzip}{section.5}% 26 \BOOKMARK [2][-]{subsection.5.3}{L\366sung mittels eines neuronalen Netzes}{section.5}% 26
\BOOKMARK [2][-]{subsection.5.2}{Chance-Tree Optimierung}{section.5}% 27 \BOOKMARK [2][-]{subsection.5.4}{Vergleich}{section.5}% 27
\BOOKMARK [2][-]{subsection.5.3}{L\366sung mittels eines neuronalen Netzes}{section.5}% 28 \BOOKMARK [1][-]{section.6}{Schlusswort}{}% 28
\BOOKMARK [2][-]{subsection.5.4}{Vergleich}{section.5}% 29
\BOOKMARK [1][-]{section.6}{Schlusswort}{}% 30

View file

@ -53,12 +53,12 @@
<file>blx-dm.def</file> <file>blx-dm.def</file>
<file>blx-compat.def</file> <file>blx-compat.def</file>
<file>biblatex.def</file> <file>biblatex.def</file>
<file>numeric.bbx</file>
<file>standard.bbx</file> <file>standard.bbx</file>
<file>numeric.bbx</file>
<file>numeric.cbx</file> <file>numeric.cbx</file>
<file>biblatex.cfg</file> <file>biblatex.cfg</file>
<file>ngerman.lbx</file>
<file>german.lbx</file> <file>german.lbx</file>
<file>ngerman.lbx</file>
</requires> </requires>
</internal> </internal>
<external package="biblatex" priority="5" active="1"> <external package="biblatex" priority="5" active="1">

View file

@ -15,6 +15,8 @@
\usepackage{listings} % Source code formatting and highlighting \usepackage{listings} % Source code formatting and highlighting
\usepackage{fancyhdr} \usepackage{fancyhdr}
\usepackage{biblatex} \usepackage{biblatex}
\usepackage{pgfplots}
\usepackage{txfonts}
\author{Clemens Dautermann} \author{Clemens Dautermann}
\title{Grundbegriffe des maschinellen Lernens} \title{Grundbegriffe des maschinellen Lernens}
@ -55,7 +57,7 @@ Diese Definition ist stark vereinfacht. Sie enthält ausschließlich die wesentl
\end{figure} \end{figure}
Ein neuronales Netz ist ähnlich aufgebaut. Es besteht aus \glqq Neuronen'', die eine theoretisch beliebige Anzahl von Eingaben annehmen können und mit einer entsprechenden Ausgabe reagieren, sowie Verbindungen zwischen den Neuronen. Auch das Lernprinzip entspricht dem eines Menschen. Das Netz nimmt immer Zahlen zwischen 0 und 1 als Eingabe an und berechnet eine entsprechende Ausgabe. Es erhält anschließend die Information, wie die richtige Lösung gelautet hätte und lernt dann aus seinen Fehlern, indem es gewisse Werte, die in die Berechnung einfließen, anpasst. Analog lernt ein Mensch, indem er ausprobiert, gegebenenfalls scheitert, anschließend die richtige Antwort durch eine externe Quelle erhält und somit aus seinem Fehler lernt. Im Menschlichen Gehirn verknüpfen sich Dabei oft genutzte neuronale Verbindungen stärker und weniger benutzte Verbindungen bauen sich ab\cite{2}. Die Verstärkung und der Abbau entsprechen dem Ändern der Gewichtung einer Verbindung im neuronalen Netz. Die Gewichtung ist eine Eigenschaft der Verbindung, die eine zentrale Rolle in der Berechnung spielt und soll im folgenden weiter erläutert werden. Diese Ähnlichkeiten sind kein Zufall, sondern viel mehr Intention. Ein neuronales Netz ist nämlich der gezielte Versuch das menschliche Lernen nachzuahmen um maschinelles Lernen zu ermöglichen. Ein neuronales Netz ist ähnlich aufgebaut. Es besteht aus \glqq Neuronen'', die eine theoretisch beliebige Anzahl von Eingaben annehmen können und mit einer entsprechenden Ausgabe reagieren, sowie Verbindungen zwischen den Neuronen. Auch das Lernprinzip entspricht dem eines Menschen. Das Netz nimmt immer Zahlen zwischen 0 und 1 als Eingabe an und berechnet eine entsprechende Ausgabe. Es erhält anschließend die Information, wie die richtige Lösung gelautet hätte und lernt dann aus seinen Fehlern, indem es gewisse Werte, die in die Berechnung einfließen, anpasst. Analog lernt ein Mensch, indem er ausprobiert, gegebenenfalls scheitert, anschließend die richtige Antwort durch eine externe Quelle erhält und somit aus seinem Fehler lernt. Im Menschlichen Gehirn verknüpfen sich Dabei oft genutzte neuronale Verbindungen stärker und weniger benutzte Verbindungen bauen sich ab\cite{2}. Die Verstärkung und der Abbau entsprechen dem Ändern der Gewichtung einer Verbindung im neuronalen Netz. Die Gewichtung ist eine Eigenschaft der Verbindung, die eine zentrale Rolle in der Berechnung spielt und soll im folgenden weiter erläutert werden. Diese Ähnlichkeiten sind kein Zufall, sondern viel mehr Intention. Ein neuronales Netz ist nämlich der gezielte Versuch das menschliche Lernen nachzuahmen um maschinelles Lernen zu ermöglichen.
\subsection{Der Aufbau eines neuronalen Netzes} \subsection{Der Aufbau eines neuronalen Netzes}
Ein neuronales Netz besteht aus Neuronen und Verbindungen zwischen diesen. Es gibt einen sogenannten \glqq Input Layer'', der die Daten annimmt, eine beliebige Anzahl von sogenannten \glqq Hidden Layers'', in denen das eigentliche Lernen statt findet, und einen sogenannten \glqq Output Layar'', der für die Datenausgabe verantwortlich ist. Die Anzahl der Neuronen ist nach oben nicht begrenzt, wird jedoch zumeist der Aufgabe angepasst. Im Input Layer ist meißt ein Neuron pro Pixel des Eingabebildes vorhanden und im Output Layer ein Neuron pro möglicher Ausgabe. Sollen also 28$\times$28 Pixel große Bilder handgeschriebener Ziffern klassifiziert werden, so gibt es 784 Eingabeneuronen, da jedes Bild 784 Pixel groß ist, und 10 Ausgabeneuronen, da es 10 Ziffern gibt. Ein neuronales Netz besteht aus Neuronen und Verbindungen zwischen diesen. Es gibt einen sogenannten \glqq Input Layer'', der die Daten, den sogenannten \glqq Input Vector'', annimmt, eine beliebige Anzahl von sogenannten \glqq Hidden Layers'', in denen das eigentliche Lernen statt findet, und einen sogenannten \glqq Output Layar'', der für die Datenausgabe verantwortlich ist. Die Anzahl der Neuronen ist nach oben nicht begrenzt, wird jedoch zumeist der Aufgabe angepasst. Im Input Layer ist meißt ein Neuron pro Pixel des Eingabebildes vorhanden und im Output Layer ein Neuron pro möglicher Ausgabe. Sollen also 28$\times$28 Pixel große Bilder handgeschriebener Ziffern klassifiziert werden, so gibt es 784 Eingabeneuronen, da jedes Bild 784 Pixel groß ist, und 10 Ausgabeneuronen, da es 10 Ziffern gibt.
\begin{figure}[h] \begin{figure}[h]
\centering \centering
\includegraphics[width=\linewidth]{../graphics/Neural_Net.png} \includegraphics[width=\linewidth]{../graphics/Neural_Net.png}
@ -68,11 +70,94 @@ Jedes Neuron hat außerdem eine sogenannte Aktivierungsfunktion, die sich von Ne
\end{enumerate} \end{enumerate}
Sind alle Neuronen eines Layers jeweils mit allen Neuronen des nächsten Layers verbunden, wird das Layer als \glqq fully connected layer'' bezeichnet. Sind alle Neuronen eines Layers jeweils mit allen Neuronen des nächsten Layers verbunden, wird das Layer als \glqq fully connected layer'' bezeichnet.
\subsection{Berechnung des Ausgabevektors} \subsection{Berechnung des Ausgabevektors}
Der Ausgabevektor wird berechnet, indem:
\begin{enumerate}
\item Alle Ausgaben aus der vorherigen Schicht mit der Gewichtung der korrespondierenden Kante multipliziert werden
\item Alle gewichteten Eingabewerte summiert werden
\item Der Bias des Neurons hinzuaddiert wird
\item Die Aktivierungsfunktion auf diesen Wert angewandt wird
\end{enumerate}
Die Aktivierungsfunktion hat dabei die Rolle die Werte zu normieren. Sie sorgt also dafür, dass alle Werte innerhalb des Netzes im Intervall $[0, 1]$ bleiben. Es gibt eine Vielzahl von Aktivierungsfunktionen. Die häufigste ist die sogenannte \glqq Sigmoid'' Funktion:
\begin{figure}[h]
\begin{center}
\begin{tikzpicture}
\begin{axis}[samples=100, width=0.5\linewidth]
\addplot[blue]{tanh(x)};
\end{axis}
\end{tikzpicture}
\end{center}
\caption{Der Plot der Sigmoid Funktion $\sigma(x)=\frac{e^x}{e^x+1}$}
\end{figure}
\newline
Im Gegensatz dazu haben Gewichtungen typischerweise etwa den doppelten Wert der Eingaben. Alle Were werden jedoch automatisch im Lernprozess angepasst.
\newline
Der Begriff Eingabe- und Ausgabevektor lassen bereits vermuten, dass es sich bei Neuronalen Netzen um Objekte aus dem Bereich der linearen Algebra handelt. Daher wird im Folgenden auch die Notationsweise mit Hilfe von linearer Algebra verwendet. Betrachtet man eine Ausgabe eines Neurons wird diese als $a^ {(layer)}_{neuron}$ bezeichnet. Den Ausgabevektor des Input Layers würde man also folgendermaßen schreiben:
\begin{equation*}
\begin{bmatrix}
a^0_0\\
a^0_1\\
a^0_2\\
\vdots\\
a^0_n
\end{bmatrix}
\end{equation*}
Die Gewichtungen $w$ der jeweiligen Kanten werden notiert als $w^{(von\ Layer)}_{(zu\ Neuron, von\ Neuron)}$. \glqq von Layer'' bezeichnet dabei das Layer in dem das Neuron liegt, das die Information ausgibt. \glqq zu Neuron'' ist der Index des Neurons im nächsten Layer, das die Information annimmt und \glqq von Neuron'' der Index des Neurons, das die Information abgibt. Die Gewichtung der Kante, die das zweite Neuron im ersten Layer mit dem dritten Neuron im zweiten Layer verebindet würde also als $w^0_{3,2}$ bezeichnet werden. Dabei wird bei null begonnen zu zählen, sodass das erste Layer und das erste Neuron den Index 0 erhält.\newline
Die Gewichtungen aller Verbindungen eines Layers zum nächsten können also als folgende Matrix geschrieben werden:
\begin{equation*}
\begin{bmatrix}
w_{0,0} & w_{0,1} & \cdots & w_{0,n}\\
w_{1,0} & w_{1,1} & \cdots & w_{1,n}\\
\vdots & \vdots & \ddots & \vdots\\
w_{k,0} & w_{k,1} & \cdots & w_{k,n}\\
\end{bmatrix}
\end{equation*}
Dabei ist $n$ hier die selbe Zahl wie $n$ im Ausgabevektor, da genau so viele Ausgaben vorhanden sein müssen, wie Neuronen in diesem Layer vorhanden sind, da jedes Neuron einen Wert ausgibt.\footnote{Es existieren auch Neuronen, die Daten verwerfen. Diese kommen im hier betrachteten Typ von neuronalem Netz allerdings nicht vor und werden daher der Einfachheit halber außenvor gelassen.}Der Bias Vektor wird genau so wie der Ausgabevektor bezeichnet.
\begin{equation*}
\begin{bmatrix}
b^0_0\\
b^0_1\\
b^0_2\\
\vdots\\
b^0_n
\end{bmatrix}
\end{equation*}
Beachtet man jetzt noch, dass bei jedem Neuron die Aktivierungsfunktion angewandt werden muss ergibt sich folgende Gleichung für die Berechnung des Ausgabevektors $\vec{o}$ aus einem Einbagevektor $\vec{a}$ durch eine Schicht von Neuronen:
\begin{figure}[h]
\begin{equation*}
\vec{o} = \sigma\left(
\begin{bmatrix}
w_{0,0} & w_{0,1} & \cdots & w_{0,n}\\
w_{1,0} & w_{1,1} & \cdots & w_{1,n}\\
\vdots & \vdots & \ddots & \vdots\\
w_{k,0} & w_{k,1} & \cdots & w_{k,n}\\
\end{bmatrix}
\begin{bmatrix}
a^0_0\\
a^0_1\\
a^0_2\\
\vdots\\
a^0_n
\end{bmatrix}
+
\begin{bmatrix}
b^0_0\\
b^0_1\\
b^0_2\\
\vdots\\
b^0_n
\end{bmatrix}
\right)
\end{equation*}
\caption{Formel zur Berechnung eines Ausgabevektors aus einem Eingabevektor durch ein Layer Neuronen. }
\end{figure}
\newline
Zur Vereinfachung wurde die Funktion hier auf den gesamten Ausgabevektor angewandt. Dies ist korrekt, sofern alle Neuronen eines Layers die selbe Aktivierungsfunktion aufweisen. Dies muss natürlich nicht immer so sein. Sind die Aktivierungsfunktionen der Neuronen eines Layers verschieden, so wird die Aktivierungsfunktion des jeweiligen Neurones separat auf das korrespondierende Element des Vektors $W\cdot\vec{a}+\vec{b}$ angewandt.
\subsection{Der Lernprozess} \subsection{Der Lernprozess}
\subsubsection{Backpropagation} Der Lernprozess gliedert sich in wenige wesentliche Schritte. Zuerst wird unter Verwendung des oben beschriebenen Prozesses aus einem Eingabevektor ein Ausgabevektor berechnet. Diese Vektoroperation wird im Lernprozess extrem oft durchgeführt, weshalb sich neuronale Netze besonders schnell auf Grafikkarten trainieren lassen. Diese sind für mathematische Operationen im Bereich der linearen Algebra, wie Matritzenmultiplikation oder Addition optimiert und werden daher auch als Vektorprozessoren bezeichnet.\newline
Dieser Ausgabevektor wird nun, mit Hilfe einer Fehlerfunktion, mit dem erwarteten Ausgabevektor verglichen. Dabei ergibt sich ein Skalarfeld, sodass die Fehlerfunktion die Zuordnung $\mathbb{P} \to \varmathbb{R}$ vornimmt, wobei $\mathbb{P}$ alle Variablen des Netzes darstellt. Wenn also das Minimum dieser Fehlerfunktion bestimmt wird, wird der Fehler minimiert und das Netz lernt.\newline
Eine Methode, die hier erläutert werden soll, dieses Minimum zu finden ist das Gradientenverfahren. Nachdem mit Hilfe dieses Verfahrens der Fehler mimnimiert wurde, werden die Variablen des neuronalen Netzes entsprechend angepasst. Diesen Prozess der Fehlerminimierung mittels des Gradientenverfahrens und der anschließenden Anpassung der Werte bezeichnet man auch als \glqq Backpropagation''. Es existieren auch noch andere Verfahren zur Fehlerminimierung, der Einfachheit halber soll hier aber nur Backpropagation erläutert werden.
\subsubsection{Fehlerfunktionen} \subsubsection{Fehlerfunktionen}
\subsubsection{SGD} \subsubsection{Gradientenverfahren}
\subsubsection{Zusammenfassung}
\subsection{Verschiedene Layerarten} \subsection{Verschiedene Layerarten}
\subsubsection{Fully connected Layers} \subsubsection{Fully connected Layers}
\subsubsection{Convolutional Layers} \subsubsection{Convolutional Layers}

View file

@ -1,62 +1,58 @@
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax \boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {ngerman}{} \babel@toc {ngerman}{}
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1}Was ist maschinelles Lernen?}{3}{section.1} \contentsline {section}{\numberline {1}Was ist maschinelles Lernen?}{3}{section.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.1}Einsatzgebiete maschinellen Lernens}{3}{subsection.1.1} \contentsline {subsection}{\numberline {1.1}Einsatzgebiete maschinellen Lernens}{3}{subsection.1.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {2}Neuronale Netze}{3}{section.2} \contentsline {section}{\numberline {2}Neuronale Netze}{3}{section.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {2.1}Maschinelles Lernen und menschliches Lernen}{3}{subsection.2.1} \contentsline {subsection}{\numberline {2.1}Maschinelles Lernen und menschliches Lernen}{3}{subsection.2.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {2.2}Der Aufbau eines neuronalen Netzes}{4}{subsection.2.2} \contentsline {subsection}{\numberline {2.2}Der Aufbau eines neuronalen Netzes}{4}{subsection.2.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {2.3}Berechnung des Ausgabevektors}{7}{subsection.2.3} \contentsline {subsection}{\numberline {2.3}Berechnung des Ausgabevektors}{6}{subsection.2.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {2.4}Der Lernprozess}{7}{subsection.2.4} \contentsline {subsection}{\numberline {2.4}Der Lernprozess}{8}{subsection.2.4}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.4.1}Backpropagation}{7}{subsubsection.2.4.1} \contentsline {subsubsection}{\numberline {2.4.1}Fehlerfunktionen}{9}{subsubsection.2.4.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.4.2}Fehlerfunktionen}{7}{subsubsection.2.4.2} \contentsline {subsubsection}{\numberline {2.4.2}Gradientenverfahren}{9}{subsubsection.2.4.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.4.3}SGD}{7}{subsubsection.2.4.3} \contentsline {subsection}{\numberline {2.5}Verschiedene Layerarten}{9}{subsection.2.5}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.4.4}Zusammenfassung}{7}{subsubsection.2.4.4} \contentsline {subsubsection}{\numberline {2.5.1}Fully connected Layers}{9}{subsubsection.2.5.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {2.5}Verschiedene Layerarten}{7}{subsection.2.5} \contentsline {subsubsection}{\numberline {2.5.2}Convolutional Layers}{9}{subsubsection.2.5.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.5.1}Fully connected Layers}{7}{subsubsection.2.5.1} \contentsline {subsubsection}{\numberline {2.5.3}Pooling Layers}{9}{subsubsection.2.5.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.5.2}Convolutional Layers}{7}{subsubsection.2.5.2} \contentsline {section}{\numberline {3}PyTorch}{9}{section.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {2.5.3}Pooling Layers}{7}{subsubsection.2.5.3} \contentsline {subsection}{\numberline {3.1}Datenvorbereitung}{9}{subsection.3.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {3}PyTorch}{7}{section.3} \contentsline {subsection}{\numberline {3.2}Definieren des Netzes}{9}{subsection.3.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {3.1}Datenvorbereitung}{7}{subsection.3.1} \contentsline {subsection}{\numberline {3.3}Trainieren des Netzes}{9}{subsection.3.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {3.2}Definieren des Netzes}{7}{subsection.3.2} \contentsline {section}{\numberline {4}Fallbeispiel I:\newline Ein Klassifizierungsnetzwerk f\IeC {\"u}r handgeschriebene Ziffern}{9}{section.4}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {3.3}Trainieren des Netzes}{7}{subsection.3.3} \contentsline {subsection}{\numberline {4.1}Aufgabe}{9}{subsection.4.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {4}Fallbeispiel I:\newline Ein Klassifizierungsnetzwerk f\IeC {\"u}r handgeschriebene Ziffern}{7}{section.4} \contentsline {subsection}{\numberline {4.2}Der MNIST Datensatz}{9}{subsection.4.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {4.1}Aufgabe}{7}{subsection.4.1} \contentsline {subsection}{\numberline {4.3}Fragmentbasierte Erkennung}{9}{subsection.4.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {4.2}Der MNIST Datensatz}{7}{subsection.4.2} \contentsline {subsection}{\numberline {4.4}Ergebnis}{9}{subsection.4.4}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {4.3}Fragmentbasierte Erkennung}{7}{subsection.4.3} \contentsline {section}{\numberline {5}Fallbeispiel II:\newline Eine selbsttrainierende KI f\IeC {\"u}r Tic-Tac-Toe}{9}{section.5}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {4.4}Ergebnis}{7}{subsection.4.4} \contentsline {subsection}{\numberline {5.1}Das Prinzip}{9}{subsection.5.1}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {5}Fallbeispiel II:\newline Eine selbsttrainierende KI f\IeC {\"u}r Tic-Tac-Toe}{7}{section.5} \contentsline {subsection}{\numberline {5.2}Chance-Tree Optimierung}{9}{subsection.5.2}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {5.1}Das Prinzip}{7}{subsection.5.1} \contentsline {subsection}{\numberline {5.3}L\IeC {\"o}sung mittels eines neuronalen Netzes}{9}{subsection.5.3}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {5.2}Chance-Tree Optimierung}{7}{subsection.5.2} \contentsline {subsection}{\numberline {5.4}Vergleich}{9}{subsection.5.4}%
\defcounter {refsection}{0}\relax \defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {5.3}L\IeC {\"o}sung mittels eines neuronalen Netzes}{7}{subsection.5.3} \contentsline {section}{\numberline {6}Schlusswort}{9}{section.6}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {5.4}Vergleich}{7}{subsection.5.4}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {6}Schlusswort}{7}{section.6}