\chapter{\acf{FPC}}
\label{fuzzy-pattern-classifier}
    Der \ac{FPC} wird allgemein als $h(\bm{m},\bm{p})$angegeben.
    \paragraph{Beispiel:}\mbox{}\\
        \includegraphics[width = .6\textwidth]{fpc_closed.png}\\
    
    Der \ac{FPC} besteht aus mehreren Bestandteilen:\\
    \includegraphics[width = .8\textwidth]{fpc_open.png}

    \section{\acf{FPC} membership function}
    \label{fpc membership function}
        Allgmein geht es bei den \acp{FPC} darum Zugehörigkeitsfunktionen aus der Fuzzy Logic zu berechnen und die Ergebnisse zu aggregieren.
        Dies wird dazu genutzt eine Klassifikation aufzubauen, die viele Merkmale miteinbezieht.
        Die \ac{FPC} membership function stellt eine Abbildung $\mu(m,\bm{p})\rightarrow I$ auf die Identität $I\in \{0,1\}$ dar:
        $$ \mu(m,\bm{p}) = \frac{A}{1+d(m,\bm{p})}(\Rightarrow A \in I) \text{ mit } d(m,\bm{p}) = \left(\frac{|m-S|}{C}\right)^D$$
        \begin{itemize}
            \item $\bm{p} = (S,C,D)$:\\
                der Parameter-Vektor, der die Eigenschaften der der membership function festlegt
                \begin{itemize}
                    \item $S$: der Durchschnittswert
                    \item $C$: die Breite
                    \item $D$: die Flankensteilheit
                \end{itemize}
            \item $d(m,\bm{p})$:\\
                der Abstand von einem Feature-Wert $m$ von dem Durchschnittswert $S$
            \item $A$:\\
                der größte Wert der membership function
        \end{itemize}

        \includegraphics[width = \textwidth]{fuzzy-pattern-classifier.png}\\
        Die einzelnen Parameter werden jeweils vorgegeben oder angelernt.
        Die Form der Funktion wird dabei immer an den jeweiligen Einsatzzweck angepasst.\\
        \includegraphics[width = \textwidth]{parameterized_fpc.png}
        Auch eine mehrdimensionale Implementierung oder die Implementierung von parallel laufenden Funktionen ist möglich:\\
        \includegraphics[width = \textwidth]{fpc_variants.png}
        
        \subsection{\acf{MFPC} membership function}
        \label{mfpc membership function}
            \acp{MFPC} sind hardware-optimierte Varianten von \ac{FPC}.
            Da zum Zeitpunkt der Entwicklung der \ac{FPC} membership funciton (\ref{fpc membership function}) war diese aufgrund der Division nicht für die Hardware-Implementation geeignet.
            Die zugehörige membership function ist definiert durch:
            $$\mu_\text{MFPC}(m,\bm{p}) = 2^{-d(m,\bm{p})}\in I \text{ mit } d(m,\bm{p}) = \left(\frac{|m-S|}{C}\right)^D$$
            Diese Funktion ist sehr effizient in Hardware implementierbar.
            \acp{MFPC} wurden dafür entworfen Pattern Recognition (\ref{information and pattern regocgnition}) Systeme auf \acp{FPGA} zu verwenden.

        \subsection{Bestimmung der Parameter}
        \label{fpc: parameterbestimmung}
            \begin{itemize}
                \item Distanzfunktion $d_i$ für jedes Feature $m_i$:
                    $$d_i(m_i;\bm{p})\left(\frac{|m_i-S_i}{C_i}\right)^D_i$$
                \item Durchschnittswert $S$:
                    $$S_i = \frac{1}{N}\sum^{N-1}_{j=0}m_j$$
                    oder für kompakte Datensätze:
                    $$S_i = \frac{1}{2}\cdot \left(\max(m_i)+\min(m_i)\right)$$
                \item Breite $C$ kann durch anlernen ermittelt werden:
                    $$C_i = \frac{1}{2}\cdot\left[\max(m_i)-\min(m_i)\right]+C_{E,i}$$
                    $C_{E,i}$ ist definiert als $C_{E,i}=p_{C_e}\cdot\left[\max(m_i)-\min(m_i)\right]$.
                    Hieraus ergibt sich dann für $C_i$:
                    $$C_i(1+2p_{C_e})\cdot \frac{1}{2}\left[\max(m_i)-\min(m_i)\right]$$
                    $p_{C_e}$ ist ein Controll-Parameter (in der Praxis meist $\approx5\%$)
                \item Flankensteilheit $D$ wird empirisch festgelegt ($D=2\vee4\vee8$) oder mit dem \say{Petker, Mönks}-Ansatz erlent
            \end{itemize}

    \section{Defuzzifizierung}
    \label{defuzzification}
        Die Rückgabewerte des \ac{FPC} werden anhand eines Schwellwertes $B$ defuzzifiziert.
        Hierdurch findet dann die eindeutige Klassifizierung statt.
        $$c=\begin{cases}
            1, &\mu(\bm{m};\bm{p})\ge B\\
            0, &\mu(\bm{m};\bm{p})< B
        \end{cases}
        $$

    \section{Aggregationsoperator $h$}
    \label{fpc: aggregationsopperator}
        Um die Ergebnisse der membership functions (\ref{fpc membership function}) der einzelnen Features zusammenzufassen wird ein Aggregationsoperator $h$ verwendet.
        Hierfür werden meist \say{fuzzy averaging operators} verwendet.
        Diese liegen frei zwischen einem harten \textbf{AND}-Operator und einem harten \textbf{OR}-Operator.
        Man misst jeweils die \say{orness} bzw. \say{andness} des Operators.\\
        \includegraphics[width = .8\textwidth]{fuzzy_averaging_operator.png}
        Die geometrische Mitte liegt hierbei bei $\approx0.666$ andness.

        \subsection{Axiome}
        \label{fpc: aggregation axioms}
            Um zu zeigen, dass die Leistungsfähigkeit für eine \ac{MFPC} aggregating fuzzy membership function ausreichend ist müssen folgende Axiome erfüllt sein:
            \begin{itemize}
                \item \textbf{Axiom H 1.} Monotonicity:\\
                    Das Verhältnis von zwei Eingangsparameter-Mengen soll sich in der Ausgabe des Aggregationsoperators wiederspiegeln.
                    D.h. für die Parameter-Tupel $(a_1,a_2,\dots,a_n)$ und $(b_1,b_2,\dots,b_n)$ ($a_i,b_i\in I \forall i\in \mathbb{N}_n)$) soll für
                    $a_i\le b_i\forall i\in \mathbb{N}_n$ gelten:
                    $$h(a_1,a_2,\dots,a_n)\le h(b_1,b_2,\dots,b_n)$$
                \item \textbf{Axion H 2.} Continuity:\\
                    Eine kleine Änderung der Eingangsparameter soll auch nur zu einer kleinen Änderung des Ergebnisses der Aggregationsoperation führen
                    $$\lim_{\epsilon\rightarrow0} h (a_1,\dots,a_i + \epsilon, \dots,a_n) = h(a_1,\dots,a_i,\dots,a_n)$$
                \item \textbf{Axiom H 3.} Symmetry:\\
                    Das Ergebnis des Aggregationsoperators bleibt für jede Permutation $p$ auf $\mathbb{N}_n = \{1,\dots n\}$ gleich:
                    $$h(a_1,a_2,\dots,a_n) = h(a_{p(1)},a_{p(2)},\dots,a_{p(n)})$$
                \item \textbf{Axiom H 4.} Idempotency:\\
                    Wenn $a_i = a \forall i \in \mathbb{N}_n$, dann
                    $$ h(a_1,a_2,\dots,a_n) = a$$
            \end{itemize}

        \subsection{\ac{MFPC} aggregate membership function}
        \label{mfpc: aggregate membership function}
            Der Aggregationsoperator für die \acp{MFPC} ist definiert durch:
            \Large
            $$\mu(\bm{m},\bm{p}) = 2 ^ {-\frac{1}{M}\sum^M_{i=1}\left(\frac{|m_i-S_i|}{C_i}\right)^{D_i}} = \left[\prod^M_{i=1} 2^{-\left(\frac{|m_i-S_i|}{C_i}\right)^{D_i}}\right]^{\frac{1}{M}}$$
            \normalsize
            Hierbei ist der geometrische Mittelpunkt definiert durch:
            \Large
            $$\mu(\bm{m};\bm{p})= 2^{-\frac{1}{M}\sum^{M-1}_{i=0} d(m_i;\bm{p})}$$
            \normalsize

            Diese Aggregationsoperation erfüllt alle nötigen Axiome (\ref{fpc: aggregation axioms}) (Beweis: siehe Vorlesung).

    \section{Asymmetrischer Ansatz}
        In der Praxis wird neben dem normalen (symmetrischen) Ansatz auch der asymmetrische Ansatz verwendet.\\
        \includegraphics[width =\textwidth]{fpc_asymmetric_aproach.png}

    \section{Anwendungsbeispiel: Banknotenüberprüfung}
        \includegraphics[width = \textwidth]{fpc_example.png}