• Keine Ergebnisse gefunden

Bestimmen der Clusteranzahl

Im Dokument Künstliche Intelligenz (Seite 42-46)

6.10 Clustering

6.10.5 Bestimmen der Clusteranzahl

Alle bisher vorgestellten Clustering-Algorithmen benötigen eine Anzahlkder Cluster. Wenn man diesen Wert allerdings angeben könnte, dann braucht man auch keinen Clustering-Algorithmus, da es allem Anschein ersichtlich ist, wie viele und welche Cluster es gibt. Daher ist es sehr wichtig, diese Anzahl automatisch ermitteln zu können, wenn ein Mensch in hochdimensionalen Datenstrukturen den Überblick verliert.

Die Grundidee ist recht einfach und erinnert sehr an die Kreuzvalidierung: Wir lassen einen Algorithmus mehrmals mit jeweils unterschiedlicher Clusteranzahl durchlaufen und wählen am Ende den mit der gerings-ten Fehlerrate/besgerings-ten Clusterqualität. Hier liegt jedoch das Problem: Wie bestimmt man die Qualität von Clustern?

Hierfür gibt es dasSilhouette Width Kriterium. Zuerst ein paar Definitionen:

xi ist ein beliebiger Punkt

c(xi) ist das Cluster, zu dem der Punktxi gehört

d(xi, l) berechnet den mittleren Abstand vonxi zu allen Punkten (̸=xi) aus dem Clusterl.

a(xi) entspricht d(xi, c(xi)) und berechnet somit den Mittleren Abstand zwischen xi und allen anderen Punkten in dessen Cluster.

b(xi) entspricht min

j̸=c(xi)d(xi, j)und misst somit den geringsten mittleren Abstand von xi zu einem anderen Cluster, zu demxi nicht gehört.

Die Logik hinter diesen Formeln ist, dass ein Punkt, der in einer guten Partition (=Fertig geclusterte Da-tenmenge) zugeteilt wurde, ist im Schnitt näher an den anderen Punkten seines Clusters als zu anderen Clustern. Ist dies nicht der Fall, wäre es eine Überlegung wert, ob der Punkt eigentlich nicht in das andere Cluster gehört. Dies soll alles noch normiert werden, damit der tatsächliche Abstand keine rolle Spielt. Somit ergibt sich die Funktion

s(xi)

( 0 fallsa(xi) = 0

b(xi)a(xi)

max(b(xi),a(xi)) sonst

Weitere Zusammenfassungen von Malte Jakob gibt es unter i-malte.jimdofree.com

Ist der Wert vons(xi)>0, so bedeutet das, dass der Mittlere Abstand innerhalb des Clusters kleiner ist, als der Abstand zum nächsten anderen Cluster – das ist gut. Ists(xi)<0, bedeutet das, dass der Mittlere Abstand innerhalb des Clusters größer ist als der Abstand zum nächsten anderen Cluster, was natürlich schlecht ist. Gilts(xi) = 0, so lässt sich keine Aussage treffen, da der Abstand innerhalb und zwischen den Clustern gleich groß ist.

Dies ist allerdings nur die Formel für einen einzigen Knotenxi, wir wollen jedoch den Wert für die gesamte Partition. Deshalb bilden wir den Durchschnitt über alle Punkte:

S= 1 n

Xn i=1

s(xi)

Nun haben wir ein Maß, das die Qualität unserer Cluster angibt. Nun können wir verschiedene Werte vonk ausprobieren und zum Schluss das wählen, für das sich das größteS ergeben hat.

Eine Besonderheit bei k-Means und EM ist jedoch, dass bei selbem k nicht immer dieselbe Partition herauskommt, da diese stark von den anfangs zufällig gewählten Mittelpunkten abhängt. Deshalb wird für jedes k der Algorithmus mehrmals durchgeführt und das Beste S, k und die Partition der verschiedenen Durchläufe gespeichert.

7 Neuronale Netze

Das Gehirn ist im Grunde nichts anderes, als ein sehr komplexer Computer. Die Taktfrequenz ist zwar sehr langsam, dafür gibt es allerdings Milliarden Neuronen die redundant mit tausenden anderen Neuronen verbunden sind. Jedes Neuroni hat verschiedene „Eingänge“ x1 bist xn. Je nachdem wie viel Widerstand in den einzelnen Synapsen besteht, wird der geleitete Strom unterschiedlich stark gewichtet (also mit einem Gewichtsvektorwimultipliziert). Alle Stromzuflüsse zusammen (P

) ergeben einen Wert, anhand dessen das Neuron (mithilfe einer Funktionf) entscheidet, ob es die ausgehende Synapsexi aktivieren soll. Insgesamt lässt sich ein Neuron also beschreiben als

xi =f

Xn

j=1

wijxj

Ein sehr wichtiger Aspekt dieser Beschreibung ist hierbeif. Oft wird hierfür eineSchwellwertfunktion (oder auch Heavisidesche Stufenfunktion genannt), also

f(x) =HΘ(x) =

0 falls x <Θ 1 sonst

Fügt man nun fürxdie Summe aus dem Neuron ein, so lässt sich erkennen, dass diese Funktionsvorschrift der des Perzeptrons entspricht.

Für weitere Berechnungen ist die Stufenfunktion aufgrund ihrer Unstetigkeit jedoch ungeeignet; Aus diesem Grund gibt es dieSigmoid-Funktion, die man sich als stetige Alternative für den Schwellwert vorstellen kann:

f(x) = 1 1 +ex−ΘT

wobei T beeinflusst, wie Stark die Funktion um Theta „springt“; Je größer das T (z.B. 100), desto flacher die Steigung. BeiT = 0,01ist die Steigung wiederum recht stark.

Zudem wurde im Gehirn analysiert, dass Synapsen, die oft Informationen austauschen, gestärkt werden, und Synapsen, die selten Informationen austauschen, schwächer werden bis sie absterben. Um dieses Phä-nomen auch in Neuronalen Netzen abzubilden, gibt es dieHebb-Regel:

Definition 7.1: Hebb-Regel

Gibt es zwischen zwei Neuronen j und i eine Verbindung xji, sind bei einer Übertragung beide Neuronen (fast) gleichzeitig aktiv (da Neuronj feuern, und Neuroni empfangen muss). Jedes Mal, wenn dies der Fall ist, wird das Gewichtwjiverstärkt. Eine mögliche Formel für die Gewichtsänderung

∆wji=ηxjxi

wobeiη eine positive Konstante ist, die die Lernrate der Neuronen bestimmt.

Mit dieser Herangehensweise werden Verbindungen jedoch nur stärker, nie aber schwächer. Aus diesem Grund gibt esHopfield-Netze, bei denen die Neuronen wieder diskret nur Werte von±1annehmen können.

Sind die Vorzeichen der beiden Neuronen zu einem Zeitpunkt unterschiedlich (und ihre Korrelation somit negativ bzw. gegensätzlich), so wird ihre Verbindung geschwächt. In der Praxis kommen sie jedoch selten zum Einsatz.

7.1 Lineare Netze

Um das „Lernen aus Fehlern“ abzubilden um dies auch in Neuronalen Netzen abzubilden wird wieder mit Trainingsdaten gearbeitet. Hierbei gibt esNPaare an Inputvektorenqund zugehörigen Zielvektoren (targets)

Weitere Zusammenfassungen von Malte Jakob gibt es unter i-malte.jimdofree.com

t; Oft sind beide normiert und weisen Werte zwischen 0 und 1 auf. Die Vektoren müssen nicht zwangsweise dieselben Dimensionen haben. Insgesamt lassen sich unsere Trainingsdaten also beschreiben als

T ={(⃗q(1), ⃗t(1)), . . . ,(⃗q(N), ⃗t(N))}

mit ⃗q(p) [0; 1]n und⃗t(p) [0; 1]m. Nun betrachten wir unser Neuronales Netz als eine Funktion f, und wir möchten ein Netz, das aus den Inputvektoren die Zielvektoren richtig berechnet;der Fehler sollte also möglichst klein sein. Um dies zu überprüfen verwenden wir dieMethode der kleinsten Quadrate. Hierbei soll die Funktion

XN p=1

f(⃗q(p))−⃗t(p)2

also die Abstände (durch das Quadrieren immer positiv) zwischen dem Ergebnis der Funktion und dem tatsächlichen Ergebnis, minimiert werden.

Für lineare neuronale Netze lassen wir die Sigmoid-Funktion weg und konzentrieren uns nur auf das Optimieren des Gewichtsvektors. Somit ergibt sich unsere Summe der kleinsten Quadrate in der Formel:

E(w) =⃗

Diese muss nun minimiert werden. Unsere Drehschraube ist hier, wie bereits erwähnt, der Vektor w. Im⃗ Normalfall findet man Extremstellen über das Bilden der Ableitung; Das wird auch hier gemacht – für jede Komponente vonw. Wir leiten also partiell ab und erhalten für jede Komponente⃗ j = 1, . . . , ndie Formel

∂E

Schließlich können wir noch durch 2 Teilen, und dasq(p)j in die Summe multiplizieren, sodass wir folgende Gleichung erhalten:

Da es sich bei beiden Summen um endliche Summen handelt, können wir diese vertauschen (da die Addition ja kommutativ ist):

nun können wirwiaus der inneren Summe herausnehmen, da dasija nur von der äußeren Summe abhängt:

Xn

Schließlich können wir die rechte Summe noch auf die andere Seite addieren, sodass sich folgende Gleichung ergibt:

Bei genauerer Betrachtung erkennt man, dass es sich hierbei nun um ein lineares Gleichungssystem handelt, dennq(p), q(p) undt(p) sind gegeben, sodass die einzige Unbekannte das wi ist. Innerhalb dieser Gleichung wird von 1 bis n aufsummiert, womit wir n unbekannte haben. Allerdings haben wir auchn Mal partiell abgeleitet, sodass wir nunnlineare Gleichungen mitnUnbekannten haben. Diese Normalgleichungen lassen sich natürlich auch als Matrixgleichung schreiben:

A·w⃗ =⃗b

Wenn die MatrixAinvertierbar ist, dann gibt es mindestens eine Lösung. Ist sie zudem positiv definit(, was gegeben ist, wenn alle Elemente paarweise verschieden sind), dann ist eine eindeutig gefundene Lösung ein absolutes Minimum.

Für das Aufstellen der MatrixAmüssen wir für jedes derN Inputvektoren mit zwei verschiedenen Indizes durch den Vektor durch-iterieren, womit sich eine Rechenzeit vonΘ(N·n2)ergibt. Für das Lösen des LGS wird eine Rechenzeit vonΘ(n3)benötigt.

Gibt es mehr als ein Ausgabeneuron, so werden die Gewichte für die einzelnen Neuronen separat trainiert.

Im Dokument Künstliche Intelligenz (Seite 42-46)