diff --git a/Acronyms.tex b/Acronyms.tex index 8713542..363e10d 100644 --- a/Acronyms.tex +++ b/Acronyms.tex @@ -2,6 +2,13 @@ % list of acronyms %% \begin{acronym} + \acro{VC-Dimension} {Vapnik-Chervonenkis-Dimension} + \acro{SRM} {Structural Risk Minimisation} + \acro{SVM} {Support Vector Machine} + \acro{KKT} {Karush-Kuhn-Tucker} + \acro{RBF} {Radial Basis Function} + \acro{DBSCAN} {Density-Based Spatial Clustering of Applications with Noise} + \acro{VSM}{Vector Space Model} \acro{KI}{Künstliche Intelligenz} \acro{AI}{Artificial Intelligence} \acro{ML}{Machine Learning} @@ -14,4 +21,9 @@ \acro{RL}{Reinforcement Learning} \acro{MDP}{Markov Decision Process} \acro{TD}{Temporal Difference} + \acro{CNN}{Convolutional Neural Network} + \acro{RNN}{Recurrent Neural Network} + \acro{FPC}{(Bocklisch's) Fuzzy Pattern Classifier} + \acro{MFPC}{Modified-Fuzzy-Pattern-Classifier} + \acro{FPGA}{Field Programmable Gate Array} \end{acronym} \ No newline at end of file diff --git a/Content.tex b/Content.tex index 50a9a29..304ed07 100644 --- a/Content.tex +++ b/Content.tex @@ -6,4 +6,5 @@ \input{parts/Problemlösen durch Suchen.tex} \input{parts/Optimierung.tex} \input{parts/Logik.tex} -\input{parts/Maschinelles Lernen.tex} \ No newline at end of file +\input{parts/Maschinelles Lernen.tex} +\input{parts/Semi-supervised Learning.tex} \ No newline at end of file diff --git a/KI_Zusammenfassung.tex b/KI_Zusammenfassung.tex index b61f022..aa935c7 100644 --- a/KI_Zusammenfassung.tex +++ b/KI_Zusammenfassung.tex @@ -21,7 +21,6 @@ \def \AUTHORCOMPACT{Paul Lödige} \def \DATE{WS 2020/21} - \begin{document} \input{TitlePage.tex} \clearpage diff --git a/chapters/Semi-supervised Learning/Deep Learning.tex b/chapters/Semi-supervised Learning/Deep Learning.tex new file mode 100644 index 0000000..5ae1a31 --- /dev/null +++ b/chapters/Semi-supervised Learning/Deep Learning.tex @@ -0,0 +1,139 @@ +\chapter{Deep Learning} +\label{chapter: deep learning} + Das \say{Deep Learning} ist ein Teilbereich des \ac{ML}. + Dieses ist wiederum ein Teilbereich der \ac{KI}. + Obwohl es faktisch ein Teilbereich ist haben sich \ac{KI} und \ac{ML} zu separaten Forschungsfeldern entwickelt.\\ + \includegraphics[width = \textwidth]{ai_and_ml.png}\\ + Allgemein beschrieben wird bei dem Deep Learning ein Modell aus mehreren Schichten aufgebaut. + Diese Schichten sind grundsätzlich hierarchisch aufgebaut und verarbeiten jeweils die Ausgabe des vorhergegangenen Schicht. + Hierfür werden sowohl Methoden aus dem Supervised Learning (siehe Zusammenfassung ML: Supervised Learning), als auch Methoden aus dem Unsupervised Learning (siehe Zusammenfassung ML: Unsupervised Learning) verwendet. + Da die Modelle meist an das Menschliche Gehirn angelehnt sind werden hierfür Neurale Netzwerke verwendet. + Im Allgemeinen kommen 2 Arten von Neuralen Netzwerken zum Einsatz: + \begin{itemize} + \item \textbf{Faltunsnetzwerke (\ref{cnn}):}\\ + für statische Daten (Bilder, Sprachaufnahmen, \dots) + \item \textbf{Zyklische Netzwerke (\ac{RNN}):}\\ + für sequentielle Daten (Videostream, Fließtext, \dots) + \end{itemize} + + \section{Allgemeines Lernprinzip} + \label{deep learning: principle} + \includegraphics[width=\textwidth]{deep-learing_learning-principle.png} + + \section{Exkurs: Bilderkennung} + \label{bilderkennung} + \subsection{Neuro-biologisches Konzept} + \label{neuro-biological concept} + \includegraphics[width=.8\textwidth]{neuro-biological_concept.png} + + \subsection{Bild Klassifizierung} + \label{image classification} + Der Inhalt eines Bildes soll klassifiziert werden.\\ + \includegraphics[width=.8\textwidth]{image-classification.png}\\ + Hierbei gibt es viele Probleme: + \begin{itemize} + \item \textbf{Semantic Gap:}\\ + Der Computer sieht das Bild als eine Datenmenge von unabhängigen Pixeln.\\ + \includegraphics[width=.6\textwidth]{semantical gap.png} + \item \textbf{Viewpoint Variation:}\\ + Eine kleine Veränderung in der Kameraposition kann dazu führen, dass sich alle Pixel verändern.\\ + \includegraphics[width=\textwidth]{viewpoint variation.png} + \item \textbf{Beleuchtung:}\\ + Eine Veränderung der Beleuchtung kann zu sehr unterschiedlichen Pixeldaten führen.\\ + \includegraphics[width=.8\textwidth]{illumination.png} + \item \textbf{Deformation:}\\ + Die Objekte im Bild können unterschiedlich verzerrt sein.\\ + \includegraphics[width=.8\textwidth]{deformation.png} + \item \textbf{Occlusion:}\\ + Die zu klassifizierenden Objekte können teilweise verdeckt sein.\\ + \includegraphics[width = .8\textwidth]{occlusion.png} + \item \textbf{Background Clutter:}\\ + Das Bild kann einen Hintergrund mit starker Ähnlichkeit zu dem Objekt haben.\\ + \includegraphics[width = .8\textwidth]{background clutter.png} + \end{itemize} + Um diese Probleme zu umgehen werden mehrschichtige Erkennungsmodelle verwendet. + Hierdurch wird versucht eine abstraktere Erkennung der Objekte zu ermöglichen.\\ + \includegraphics[width=\textwidth]{abstract catifier.png}\\ + Ein Beispiel für die einzelnen Features könnte wie folgt aussehen:\\ + \includegraphics[width = \textwidth]{car features.png} + + \section{\acp{CNN}} + \label{cnn} + \acp{CNN} enthalten 3 wichtige Bestandteilen:\\ + \includegraphics[width=.8\textwidth]{cnn_building_blocks.png}\\ + Diese Bestandteile können beliebig oft hintereinander geschaltet sein. + Zudem ist an ein komplettes \ac{CNN} zumeist noch ein weiteres Netzwerk für die Ausgabe der Vorhersage angeschlossen:\\ + \includegraphics[width = \textwidth]{cnn_complete.png} + + \subsection{convolutional stage} + \label{cnn: convolutional stage} + In der \say{convolutional stage} werden \say{convolutional layer} (Faltunsschicht) verwendet. + Diese wenden einen beweglichen Filter (detector) auf die Daten der vorhergegangenen Schicht an. + Hierbei stellt der detector ein Rezeptives Feld dar (vergleichbar mit dem Auge).\\ + \includegraphics[width = \textwidth]{convolutional_operation.png}\\ + \begin{wrapfigure}{h}{.4\textwidth} + \includegraphics[width = .4\textwidth]{cnn_inter_layer_connection.png} + \end{wrapfigure} + Aufgrund der geringen Größe des rezeptiven Feldes ist jedes Neuron in der nachfolgenden Schicht jeweils nur mit wenigen Neuronen in der unterliegenden Schicht verbunden:\\ + \includegraphics[width=\textwidth]{convolutional filter.png}\\ + + \subsubsection{Beispiel} + \label{cnn: example} + Im folgenden wird das Verfahren des convolutional layers anhand von $3\times 3$ Filtern demononstriert. + Diese werden auf einem $6\times 6$ Bild verschoben. + Die Filter sollen jeweils unterschiedliche geometrische Formen erkennen (Filter1: Diagonalen)\\ + \includegraphics[width=.8\textwidth]{cnn_example1.png}\\ + Über den Parameter \say{stride} kann eingestellt werden, um wieviele Elemente der Filter jeweils verschoben wird:\\ + \includegraphics[width = .8\textwidth]{cnn_example_stride1.png}\\ + \includegraphics[width = .8\textwidth]{cnn_example_stride2.png}\\ + Für jeden Filter entsteht durch diese Anwendung ein kleineres Bild, welches aus dem Ausgangsbild errechnet wurde:\\ + \includegraphics[width=.8\textwidth]{cnn_feature_map1.png}\\ + Durch die Anwendung der verschiedenen Filter entsteht hierbei eine mehrdimensionale \say{Feature Map}. + Diese wird allgemein als \say{Tensor} bezeichnet:\\ + \includegraphics[width=.8\textwidth]{cnn_feature_map2.png}\\ + + \subsubsection{Convolutional vs. Fully Connected} + \label{cnn: convolutional vs. fully connected} + Der Vorteil, den der Ansatz der Faltungsschichten gegenüber dem einsatz von \say{fully connected layers} hat ist, + dass deutlich weniger Parameter benötigt werden.\\ + \includegraphics[width = .8\textwidth]{convolutional_vs_fully-connected.png} + + \subsection{non-linear stage} + \label{cnn: non-linear stage} + Es ist mathematisch beweisbar, dass für die Abbildung von gleichen Äquivalenzklassen auf eine Referenzklasse eine nicht-linear Funktion benötigt wird. + Hierbei gibt es mehrere mögliche Funktionen. + Die bekannteste ist hierbei die \say{Sigmoid}-Funktion. + Bei \acp{CNN} wird allerdings meistens die \say{ReLU}-Funktion verwendet.\\ + \includegraphics[width = \textwidth]{non-linear_functions.png} + + \subsection{Pooling} + \label{cnn:pooling} + Beim \say{Pooling} wird die Menge der Elemente in einer Schicht reduziert. + Hierbei wird darauf geachtet, dass nur unwichtige Daten \say{verloren gehen}. + Man spricht auch von \say{Subsampling}.\\ + \includegraphics[width = .8\textwidth]{subsampling.png} + + \subsubsection{Max Pooling} + \label{cnn: max pooling} + Das \say{Max Pooling} ist eine Form des Poolings, bei dem mehrere Elemente einer schicht dadurch zusammengefasst werden, + dass nur die Element mit dem höchsten Wert erhalten bleiben.\\ + \includegraphics[width = .8\textwidth]{max_pooling.png} + + \section{classsical \ac{ML} vs. Deep Learning} + \includegraphics[width = \textwidth]{classical_ml_vs_deep_learning.png} + + \section{Probleme des Deep Learning} + \begin{itemize} + \item \textbf{Deep Learning ist gierig:}\\ + Es werden Millionen von Datensätze für das Training von Deep Learning Modellen benötigt. + \item \textbf{Deep Learing ist undurchsichtig:}\\ + Deep Learing Modelle sind Black Box Modelle, die kontextunabhängig arbeiten + \item \textbf{Deep Learning ist spröde:}\\ + Deep Learning Modelle können bei manchen Anwendungen gut funktionieren und bei anderen komplett scheitern; + sie sind nicht-linerare Natur + \end{itemize} + \includegraphics[width = \textwidth]{deep_learing_problems.png}\\ + \includegraphics[width = \textwidth]{dumm_aber_raffiniert.png} + + \section{aktuelle Trends} + \includegraphics[width = \textwidth]{trends.png} diff --git a/images/abstract catifier.png b/images/abstract catifier.png new file mode 100644 index 0000000..3b9098e Binary files /dev/null and b/images/abstract catifier.png differ diff --git a/images/ai_and_ml.png b/images/ai_and_ml.png new file mode 100644 index 0000000..00636e2 Binary files /dev/null and b/images/ai_and_ml.png differ diff --git a/images/background clutter.png b/images/background clutter.png new file mode 100644 index 0000000..00373ea Binary files /dev/null and b/images/background clutter.png differ diff --git a/images/car features.png b/images/car features.png new file mode 100644 index 0000000..efcef86 Binary files /dev/null and b/images/car features.png differ diff --git a/images/classical_ml_vs_deep_learning.png b/images/classical_ml_vs_deep_learning.png new file mode 100644 index 0000000..82557d3 Binary files /dev/null and b/images/classical_ml_vs_deep_learning.png differ diff --git a/images/cnn_building_blocks.png b/images/cnn_building_blocks.png new file mode 100644 index 0000000..65cbf07 Binary files /dev/null and b/images/cnn_building_blocks.png differ diff --git a/images/cnn_complete.png b/images/cnn_complete.png new file mode 100644 index 0000000..50fb68b Binary files /dev/null and b/images/cnn_complete.png differ diff --git a/images/cnn_example1.png b/images/cnn_example1.png new file mode 100644 index 0000000..65848a7 Binary files /dev/null and b/images/cnn_example1.png differ diff --git a/images/cnn_example_stride1.png b/images/cnn_example_stride1.png new file mode 100644 index 0000000..73281fa Binary files /dev/null and b/images/cnn_example_stride1.png differ diff --git a/images/cnn_example_stride2.png b/images/cnn_example_stride2.png new file mode 100644 index 0000000..b0d2eb9 Binary files /dev/null and b/images/cnn_example_stride2.png differ diff --git a/images/cnn_feature_map1.png b/images/cnn_feature_map1.png new file mode 100644 index 0000000..57f88ec Binary files /dev/null and b/images/cnn_feature_map1.png differ diff --git a/images/cnn_feature_map2.png b/images/cnn_feature_map2.png new file mode 100644 index 0000000..7b16431 Binary files /dev/null and b/images/cnn_feature_map2.png differ diff --git a/images/cnn_inter_layer_connection.png b/images/cnn_inter_layer_connection.png new file mode 100644 index 0000000..4c34d86 Binary files /dev/null and b/images/cnn_inter_layer_connection.png differ diff --git a/images/convolutional filter.png b/images/convolutional filter.png new file mode 100644 index 0000000..f0529e1 Binary files /dev/null and b/images/convolutional filter.png differ diff --git a/images/convolutional_operation.png b/images/convolutional_operation.png new file mode 100644 index 0000000..6ac6225 Binary files /dev/null and b/images/convolutional_operation.png differ diff --git a/images/convolutional_vs_fully-connected.png b/images/convolutional_vs_fully-connected.png new file mode 100644 index 0000000..bbae099 Binary files /dev/null and b/images/convolutional_vs_fully-connected.png differ diff --git a/images/deep-learing_learning-principle.png b/images/deep-learing_learning-principle.png new file mode 100644 index 0000000..c22dc6f Binary files /dev/null and b/images/deep-learing_learning-principle.png differ diff --git a/images/deep_learing_problems.png b/images/deep_learing_problems.png new file mode 100644 index 0000000..fd988a0 Binary files /dev/null and b/images/deep_learing_problems.png differ diff --git a/images/deformation.png b/images/deformation.png new file mode 100644 index 0000000..62a0153 Binary files /dev/null and b/images/deformation.png differ diff --git a/images/dumm_aber_raffiniert.png b/images/dumm_aber_raffiniert.png new file mode 100644 index 0000000..b60e10c Binary files /dev/null and b/images/dumm_aber_raffiniert.png differ diff --git a/images/illumination.png b/images/illumination.png new file mode 100644 index 0000000..87f38d0 Binary files /dev/null and b/images/illumination.png differ diff --git a/images/image-classification.png b/images/image-classification.png new file mode 100644 index 0000000..c52920a Binary files /dev/null and b/images/image-classification.png differ diff --git a/images/max_pooling.png b/images/max_pooling.png new file mode 100644 index 0000000..467a20c Binary files /dev/null and b/images/max_pooling.png differ diff --git a/images/neuro-biological_concept.png b/images/neuro-biological_concept.png new file mode 100644 index 0000000..f59d7e3 Binary files /dev/null and b/images/neuro-biological_concept.png differ diff --git a/images/non-linear_functions.png b/images/non-linear_functions.png new file mode 100644 index 0000000..82a0821 Binary files /dev/null and b/images/non-linear_functions.png differ diff --git a/images/occlusion.png b/images/occlusion.png new file mode 100644 index 0000000..be28b30 Binary files /dev/null and b/images/occlusion.png differ diff --git a/images/semantical gap.png b/images/semantical gap.png new file mode 100644 index 0000000..6d3ff7e Binary files /dev/null and b/images/semantical gap.png differ diff --git a/images/subsampling.png b/images/subsampling.png new file mode 100644 index 0000000..4b4b002 Binary files /dev/null and b/images/subsampling.png differ diff --git a/images/trends.png b/images/trends.png new file mode 100644 index 0000000..d9c4977 Binary files /dev/null and b/images/trends.png differ diff --git a/images/viewpoint variation.png b/images/viewpoint variation.png new file mode 100644 index 0000000..eb8d913 Binary files /dev/null and b/images/viewpoint variation.png differ diff --git a/parts/Semi-supervised Learning.tex b/parts/Semi-supervised Learning.tex new file mode 100644 index 0000000..cbd73ad --- /dev/null +++ b/parts/Semi-supervised Learning.tex @@ -0,0 +1,2 @@ +\part{Semi-supervised Learning} +\input{chapters/Semi-supervised Learning/Deep Learning.tex} \ No newline at end of file