From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer <sven@sven-eisenhauer.net>
Date: Fri, 10 Nov 2023 15:11:48 +0100
Subject: add new repo

---
 .../NeuroFuzzy/assignment/part1.tex                | 198 +++++++++++++++++++++
 1 file changed, 198 insertions(+)
 create mode 100644 Master/Computational Intelligence/NeuroFuzzy/assignment/part1.tex

(limited to 'Master/Computational Intelligence/NeuroFuzzy/assignment/part1.tex')

diff --git a/Master/Computational Intelligence/NeuroFuzzy/assignment/part1.tex b/Master/Computational Intelligence/NeuroFuzzy/assignment/part1.tex
new file mode 100644
index 0000000..9115310
--- /dev/null
+++ b/Master/Computational Intelligence/NeuroFuzzy/assignment/part1.tex	
@@ -0,0 +1,198 @@
+\newcommand{\gfp}{generische Fuzzy-Perzeptron}
+\section{Einleitung}
+Bei \mytitle n handelt es sich um die Kombination eines Neuronalen Netzes mit einem Fuzzy-System. Da der Umfang dieser Arbeit beschränkt ist, setzen die Autoren bestimmte Vorkenntnisse aus den Bereichen Neuronale Netze und Fuzzy-Logik voraus. Dazu zählen der grundlegende Aufbau eines mehrschichtigen Perzeptrons und der Ablauf des Backpropagation-Algorithmus aus dem Bereich der Neuronalen Netze. Die Kenntnis der Begriffe T-Norm und T-Conorm, Zugehörigkeitsfunktion, linguistische Variable sowie Mamdani- und Sugeno-Controller bildet weitere Voraussetzung. Darin eingeschlossen sind Kenntnisse über Fuzzy-Mengen und -Regeln sowie Fuzzy-Logik im Allgemeinen. \\
+Basierend auf diesem Grundwissen betrachten wir bestimmte Eigenschaften von Fuzzy-Systemen und Neuronalen Netzen. \\
+Im Allgemeinen orientiert sich der Entwurf von Fuzzy-Controllern an Expertenwissen, das der Fuzzy-Controller nachahmt. Dies setzt voraus, dass für das zu regelnde System die Reaktionen und das Wissen des Experten bekannt sind. Ohne dieses Wissen lassen sich weder Fuzzy-Mengen noch Fuzzy-Regeln entwerfen. Ebenso besteht das Problem der Vollständigkeit. Da ein Fuzzy-Controller nicht zur Laufzeit lernen kann, muss die Lösung des Problems beim Entwurf vollständig und richtig über alle Eingabedaten sein. Auch kann sich der Fuzzy-Controller nicht an sich ändernde Parameter z. B. durch mechanischen Verschleiß anpassen. \\
+Im Gegensatz dazu stehen Neuronale Netze, deren Hauptmerkmal ihre Lernfähigkeit darstellt. Als Nachteil steht dem gegenüber, dass evtl. vorhandenes Wissen über das Problem nicht in einem Neuronalen Netz implementiert werden kann. Gleichzeitig besteht darin der Vorteil, dass eine Problemlösung durch rein daten-getriebenes Lernen erfolgt. Der Lernerfolg eines Neuronalen Netzes stellt einen Unsicherheitsfaktor dar, da nicht vorher bestimmt werden kann, ob und wann sich ein Trainingserfolg einstellt. Unter ungünstigen Voraussetzung kann eine Überanpassung an die Trainings- oder Validierungsdaten eintreten, was die Lösung für reale Daten negativ beeinflussen kann. Da sich Neuronale Netze wie eine \textit{Blackbox} nach außen darstellen, lässt sich ihr innerer Zustand nicht oder nur sehr eingeschränkt interpretieren. \\
+Die Motivation zur Kombination Neuronaler Netze und Fuzzy-Systeme zu \mytitle n liegt in der Idee des \textit{best of both worlds}. Das Ziel besteht hierbei darin, mit einer Stärke des einen Ansatzes in einem bestimmten Bereich eine Schwäche des anderen in diesem Bereich zu kompensieren, um so zu einem leistungsfähigeren Gesamtsystem zu kommen.
+
+\section{Grundlagen}
+Bei der Betrachtung von \mytitle n liegt das Hauptunterscheidungsmerkmal im Grad der Kopplung von Neuronalem Netz und Fuzzy-System. Kooperative \mytitle zeichnen sich durch eine lose Kopplung aus, wobei hybride \mytitle eine enge Kopplung aufweisen.
+\subsection{Kooperative \mytitle}
+Bei kooperativen \mytitle n bleibt die Eigenständigkeit des beteiligten Neuronalen Netzes und Fuzzy-Systems erhalten und es besteht eine klar definierte Trennung. \\
+Die einfachste Kombination eines Neuronalen Netzes und eines Fuzzy-Systems besteht in dem Ansatz der Aufbereitung der Eingabedaten des Fuzzy-Controllers durch das Neuronale Netz. Ebenso lassen sich die Ausgaben eines Fuzzy-Controllers durch ein Neuronales Netz aufbereiten. Hierbei beeinflussen sich die beiden Systeme gegenseitig nicht sondern nur die Daten. \\
+
+Wenn sich die Fuzzy-Mengen der linguistischen Variablen eines Fuzzy-Controllers zur Regelung eines Systems nicht bestimmen lassen, aber gleichzeitig Datenpaare aus Eingabe und gewünschter Ausgabe vorliegen, lassen sich diese Fuzzy-Mengen mit einem Neuronalen Netz erzeugen. Dies erfolgt offline durch Bestimmung geeigneter Parameter der Zugehörigkeitsfunktionen oder Approximation der Zugehörigkeitsfunktionen durch das Neuronale Netz. Die Abbildung  \ref{fig:koop-fuzzysets} zeigt den schematischen Aufbau einer solchen Lösung. Das Training und die Erzeugung der Fuzzy-Mengen erfolgt offline, so dass das Neuronale Netz zur Laufzeit nicht benötigt wird. \\
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.6\textwidth]{koop-fuzzysets.png}
+\end{center}
+\caption{Neuronales Netz zum Offline-Lernen der Fuzzy-Mengen eines Fuzzy-Controllers}
+\label{fig:koop-fuzzysets}
+\end{figure}
+
+Mit einem ähnlichen Ansatz lassen sich auch Fuzzy-Regeln erzeugen, wie Abbildung \ref{fig:koop-fuzzyrules} zeigt. \cite{Bor03} nennt hierzu Clustering-Verfahren oder selbstorganisierende Karten als Neuronale Methode zur Bestimmung der Fuzzy-Regeln. Auch hier arbeitet das Neuronale Netz offline. \\
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.6\textwidth]{koop-fuzzyrules.png}
+\end{center}
+\caption{Neuronales Netz zum Offline-Lernen der Fuzzy-Regeln eines Fuzzy-Controllers}
+\label{fig:koop-fuzzyrules}
+\end{figure}
+
+Die Anpassung der Fuzzy-Mengen eines Fuzzy-Controllers durch ein Neuronales Netz kann auch online erfolgen, wie in Abbildung \ref{fig:koop-fuzzysets-online} gezeigt. Dazu benötigt das Neuronale Netz die Ausgaben des Fuzzy-Controllers als Eingabe zur Fehlerbestimmung. \\
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.6\textwidth]{koop-fuzzysets-online.png}
+\end{center}
+\caption{Neuronales Netz zur Online-Anpassung der Fuzzy-Mengen eines Fuzzy-Controllers}
+\label{fig:koop-fuzzysets-online}
+\end{figure}
+
+Mit einer solchen Fehlerbestimmung lässt sich auch ein System wie in Abblidung \ref{fig:koop-fuzzyrules-online} gezeigt entwerfen, das die Gewichte der Fuzzy-Regeln des Fuzzy-Controllers online verändert. \\
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.6\textwidth]{koop-fuzzyrules-online.png}
+\end{center}
+\caption{Neuronales Netz zur Online-Anpassung der Fuzzy-Regeln eines Fuzzy-Controllers}
+\label{fig:koop-fuzzyrules-online}
+\end{figure}
+
+\subsection{Hybride \mytitle}
+Bei hybriden \mytitle n verschmelzen Neuronales Netz und Fuzzy-Controller zu einem System bei dem keine klare Trennung zwischen Neuronalem und Fuzzy-Teil mehr möglich ist. Abbildung \ref{fig:hybrid-neuro-fuzzy-ctrl} zeigt das Schema eines solchen hybriden Neuro-Fuzzy-Controllers nach \cite{Bor03}.
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.6\textwidth]{hybrid-neuro-fuzzy-ctrl.png}
+\end{center}
+\caption{Schema eines hybriden Neuro-Fuzzy-Controllers}
+\label{fig:hybrid-neuro-fuzzy-ctrl}
+\end{figure}
+
+\section{Das \gfp}
+Als ein Beispiel hybrider \mytitle betrachten wir in diesem Abschnitt das \gfp nach \cite{Bor03} genauer. Abbildung \ref{fig:xor} zeigt ein generisches Fuzzy-Perzeptron zur Lösung des XOR-Problems. Dabei handelt es sich um ein dreischichtiges vorwärtsgetriebenes Neuronales Netz bestehend aus einer Eingabeschicht, einer versteckten Schicht und einer Ausgabeschicht. Die Gewichte der Verbindungen zwischen den Neuronen werden durch den Zugehörigkeitsgrad der Ausgabe der vorherigen Schicht zu den beiden abgebildeten Fuzzy-Mengen s für small und b für big repräsentiert. Die Ausgabefunktion der Neuronen der versteckten Schicht bildet eine T-Norm, die Ausgabefunktion der Ausgabeschicht bildet die entsprechende T-Conorm, hier min und max.\\
+\begin{figure}[h!]
+\begin{center}
+\leavevmode
+\includegraphics[width=0.4\textwidth]{xor.png}
+\end{center}
+\caption{Generisches Fuzzy-Perzeptron zur Lösung des XOR-Problems}
+\label{fig:xor}
+\end{figure}
+
+\paragraph*{Wertetabelle}
+Die Tabelle \ref{tab:xortab} zeigt die Ausgaben der jeweiligen Schichten für die möglichen Eingaben des XOR-Problems. An den Ausgabewerten der Ausgabeschicht lässt sich die korrekte Lösung des XOR-Problems durch das \gfp erkennen.
+\begin{table}[htp]
+	\centering 
+	\begin{tabular}{|l|l|l|l|l|l|l|}
+		\hline $x_1$ & $x_2$ & $out_{u_{11}}$ & $out_{u_{12}}$ & $out_{u_{21}}$ & $out_{u_{22}}$ & $out_{u_{31}}$ = y \\ 
+		\hline 0 & 0 & 0 & 0 & min(0,1)\linebreak = 0 & min(0,1)\linebreak = 0 & max(0,0)\linebreak = 0 \\ 
+		\hline 0 & 1 & 0 & 1 & min(0,0)\linebreak = 0 & min(1,1)\linebreak = 1 & max(0,1)\linebreak = 1\\ 
+		\hline 1 & 0 & 1 & 0 & min(1,1)\linebreak = 1 & min(0,0)\linebreak = 0 & max(1,0)\linebreak = 1 \\ 
+		\hline 1 & 1 & 1 & 1 & min(1,0)\linebreak = 0 & min(1,0)\linebreak = 0 & max(0,0)\linebreak = 0 \\ 
+		\hline 
+	\end{tabular}
+	\caption{Ausgaben der Neuronen für das XOR-Problem}
+	\label{tab:xortab}
+\end{table}
+
+\subsection{Beschreibung}
+Dieser Abschnitt beschreibt die einzelnen Komponenten des generischen Fuzzy-Perzeptrons genauer.
+\paragraph*{Schichten}
+Die drei Schichten des generischen Fuzzy-Perzeptrons lassen sich jeweils als Menge von Neuronen beschreiben.
+\begin{itemize}
+	\item Eingabeschicht $U_1 = \left\lbrace x_1,\dots,x_n \right\rbrace$
+	\item Versteckte Schicht $U_2 = \left\lbrace R_1,\dots,R_r \right\rbrace$
+	\item Ausgabeschicht $U_3 = \left\lbrace y_1,\dots,y_m \right\rbrace$
+\end{itemize}
+Jedes Neuron verfügt dabei über drei Funktionen:
+\begin{itemize}
+	\item Die Netzeingabefunktion $net_u$
+	\item Die Aktivierungsfunktion $act_u$
+	\item Die Ausgabefunktion $out_u$
+\end{itemize}
+Die Verarbeitung je Neuron $u$ erfolgt dabei in der Reihenfolge $net_u \to act_u \to out_u$.
+
+\paragraph*{Gewichte} Das Gewicht der Verbindung zwischen zwei Neuronen unterschiedlicher Schichten ist definiert 
+ durch die Fuzzy-Menge $\mu$ für die Verbindungen zwischen Neuronen der Eingabeschicht und Neuronen der versteckten Schicht. Für die Verbindungen zwischen Neuronen der versteckten Schicht und der Ausgabeschicht erhalten ihr Gewicht über die Fuzzy-Menge $\nu$. Das Gewicht $w$ der Verbindung zwischen dem Neuron $u$ und dem Neuron $v$ der nachgelagerten Schicht lässt sich also wie folgt berechnen.
+\begin{displaymath}
+w_{vu} = 
+\begin{cases}
+\mu^{\left(i\right)}_{j} \qquad \qquad \qquad \textrm{für}~ u=x_i,v=R_j
+\\
+\nu^{\left(k\right)}_{j} \qquad \qquad \qquad \textrm{für}~ u=R_j,v=y_k
+\\
+\textrm{undefiniert} \qquad \quad \textrm{sonst}
+\end{cases}
+\end{displaymath}
+Mit $1 \leq i \leq n$, $1 \leq j \leq r$, $1 \leq k \leq m$
+\\
+$\mu^{\left(i\right)}_{j} \in F\left(\mathbb{R}\right)$,
+$\nu^{\left(k\right)}_{j} \in F\left(\mathbb{R}\right)$
+\\und $F\left(\mathbb{R}\right) := \textrm{die Menge aller Fuzzy-Mengen über } \mathbb{R}$
+			
+\paragraph*{Eingabeschicht} Für Neuronen der Eingabeschicht $u \in U_1$ lassen sich die drei Funktionen $net_u$, $akt_u$ und $out_u$ wie folgt beschreiben.
+\begin{description}
+	\item[Die Netzeingabefunktion $net_u$] stellt eine Abbildung von $\mathbb R$ auf $\mathbb R$ für die externe Eingabe $ext_u$ dar.\\
+	$f^{\left(u\right)}_{net}: net_u = ext_u$
+	\item [Die Aktivierungsfunktion $act_u$] stellt eine Abbildung der Netzeingabe $net_u$ von $\mathbb R$ auf $\mathbb R$ dar.\\
+	$f^{\left(u\right)}_{act}: act_u = net_u$
+	\item[Die Ausgabefunktion $out_u$] bildet die Aktivierung $act_u$ von $\mathbb R$ auf $\mathbb R$ ab.\\
+	$f^{\left(u\right)}_{out}: out_u = act_u$
+\end{description}
+
+\paragraph*{Versteckte Schicht} Für Neuronen der versteckten Schicht $u \in U_2$ lassen sich die drei Funktionen $net_u$, $akt_u$ und $out_u$ wie folgt beschreiben.
+\begin{description}
+	\item [Die Netzeingabefunktion $net_u$] stellt eine Abbildung von $\left(\mathbb R \times F\left(\mathbb{R}\right)\right)$ auf $\left[0,1\right] \in \mathbb{R}$.
+	Sie verwendet dabei das Gewicht $w_{uu^{'}}$ zwischen $u$ und $u^{'} \in U_1$ unter Bildung der T-Norm. Dieses Beispiel verwendet hierfür die Minimum-Norm $min$.
+	\item [Die Aktivierungsfunktion $act_u$] stellt eine Abbildung von $\mathbb R$ auf $\mathbb R$ für die Netzeingabe $net_u$ dar. \\
+	$f^{\left(u\right)}_{act}: act_u = net_u$
+	\item[Die Ausgabefunktion $out_u$] bildet die Aktivierung $act_u$ von $\mathbb R$ auf $\mathbb R$ ab. \\
+	$f^{\left(u\right)}_{out}: out_u = act_u$
+\end{description}
+
+\paragraph*{Ausgabeschicht} Für Neuronen der $u \in U_3$ lassen sich die drei Funktionen $net_u$, $akt_u$ und $out_u$ wie folgt beschreiben.
+\begin{description}
+	\item[Die Netzeingabefunktion $net_u$] verwendet die T-Conorm über die Ausgaben aller Neuronen der versteckten Schichten $u^{'} \in U_2$ mit dem Gewicht $w_{uu^{'}}$ zur Berechnung des Netzeingabewertes. Dieses Beispiel verwendet die Maximum-Conorm $max$.
+	\item [Die Aktivierungsfunktion $act_u$] stellt eine Abbildung von $F\left(\mathbb{R}\right)$ auf $F\left(\mathbb{R}\right)$ für die Netzeingabe $net_u$ dar. \\
+	$f^{\left(u\right)}_{act}: act_u = net_u$
+	\item[Die Ausgabefunktion $out_u$] Durch eine geeignete Abbildung der Aktivierung $act_u$ von $F\left(\mathbb{R}\right)$ auf $\mathbb R$ erfolgt hier die Defuzzifizierung der Aktivierung $act_u$ zu einem scharfen Wert.
+\end{description}
+
+\subsection{Fuzzy-Fehlerbestimmung}
+Für ein Lernverfahren bildet die Bestimmung des Fehlers für eine bestimmte Eingabe bei gewünschter Ausgabe ein zentrales Element. Für ein Neuron $u$ der Ausgabeschicht lässt sich der Fehler $E$ für ein Muster $p$ nach \cite{Bor03} wie folgt berechnen.
+\begin{displaymath}
+E^{\left(p\right)}_{u}=1-\exp{\left(\beta\left(\frac{t^{\left(p\right)}_{u}-o^{\left(p\right)}_{u}}{range_{u}}\right)^{2}\right)}
+\end{displaymath}
+Unter Verwendung von
+\begin{itemize}
+	\item $u \in U_3$ bezeichnet das Neuron der Ausgabeschicht.
+	\item Der Zielwert $t$ bezeichnet die gewünschte Ausgabe für das Muster $p$.
+	\item Der Ausgabewert $o$ repräsentiert die aktuelle Ausgabe des Neurons.
+	\item $range_u$ bezeichnet die Differenz zwischen dem maximalem und dem minimalem Ausgabewert des Neurons $u$.
+	\item $\beta$ bildet einen multiplikativen Toleranzfaktor.
+\end{itemize}
+Aus dieser Formel ist leicht zu erkennen, dass es sich hierbei um ein Delta-Lernverfahren handelt. Stimmen Ausgabe und Zielwert überein, wird der Exponent im zweiten Term $0$. Durch $e^0=1$ ergibt sich wie erwartet ein Fehler $E = 1-1 = 0$
+
+\subsection{Fuzzy-Backpropagation}
+Der Backpropagation-Algorithmus für dieses Perzeptron lässt sich nach \cite{Bor03} wie folgt formulieren.
+\begin{enumerate}
+	\item Wähle ein beliebiges Muster $p$ einer gegebenen festen Lernaufgabe und propagiere den Eingabevektor $i^{p}$
+	\item Bestimme
+	\begin{displaymath}
+		\delta^{\left(p\right)}_{u} = 
+		\begin{cases}
+		sgn\left( t^{p}_{u} - out^{p}_{u} \right) * E^{\left(p\right)}_{u}
+		\qquad \textrm{für}~ u \in U_3
+		\\
+		\sum_{v \in U_{3} } act^{\left(p\right)}_{u}*\delta^{\left(p\right)}_{v}
+		\qquad \quad ~\textrm{für}~ u \in U_2
+		\end{cases}
+	\end{displaymath}
+	\item Bestimme
+	\begin{displaymath}
+	\Delta_{p}w_{vu} = f\left( \delta^{\left(p\right)}_{u}, act^{\left(p\right)}_u, net^{\left(p\right)}_u \right)
+	\end{displaymath}
+	
+\end{enumerate}
+Wiederhole diese Schritte bis der Gesamtfehler 
+\begin{displaymath}
+E=\sum_{p}\sum_{u \in U_{3}}E^{\left(p\right)}_{u}
+\end{displaymath}
+hinreichend klein ist oder ein anderes Abbruchkriterium erfüllt wird.\\
+Im zweiten Schritt lässt sich erkennen, wie der Fehler der Ausgabeneuronen $v \in U_3$ auf die Neuronen der versteckten Schicht $u \in U_2$ wirken. \\
+Die Funktion $f$, die in Schritt drei Verwendung findet ist nicht genauer spezifiziert. Hier könnte beispielsweise eine Anpassung der Parameter der Zugehörigkeitsfunktionen der Fuzzy-Mengen stattfinden. Bei den Fuzzy-Mengen in Abbildung \ref{fig:xor} könnte z. B. die Steigung der Geraden variiert werden.
\ No newline at end of file
-- 
cgit v1.2.3

