Home » Data Science » ?2Vec – Vektorräume überall

?2Vec – Vektorräume überall

 

Wenn man versucht, Probleme zu lösen die in irgendeiner Weise mit der Analyse von nicht numerischen Daten (Texte, Bilder, Ton) zu tun haben kommt man um zwei Dinge nicht herum. Erstens um (wer hätte das gedacht) einen monströsen Haufen an Buzzwords und Akronymen (NLP, CNN, Deep Learning, LSI, Syntaxanalyse …) und zweitens um Vektorräume. Für den genannten Bereich v.a. durch zwei Arbeiten von Google Mitarbeitern (Efficient Estimation of Word Representations in Vector Space und Distributed Representations of Words and Phrases and their Compositionality, beides Mikolov et.al 2013) bekannt, gibt es mittlerweile eine ganze Reihe von Papern, Algorithmen und Projekten, deren Ziel es immer ist, nichtnumerische Daten in einen Vektorraum zu überführen. Auf github gibt es sogar eine Liste unter dem Namen anything2vec in Anlehnung an die Tatsache, dass fast alle Einträge 2vec als Postfix im Namen haben.

Warum ist die Überführung solcher Daten in Vektorräume wichtig?

Wenn wir als eingängiges Beispiel Text betrachten, ergibt sich bei dessen Analyse immer das Problem, Zusammenhänge zwischen Wörtern oder Sätzen zu erkennen. Während es uns Menschen z.B. leicht fällt zu erkennen das Angela Merkel ein Name ist, dass laufen und rennen ähnlich sind oder das Donald Duck und Donald Trump nichts miteinander zu tun haben sind solche Aufgaben für einen Computer extrem schwer lösbar. Er braucht numerische Werte für jede Phrase (laufen, rennen, Donald Duck) um Abstände berechnen zu können und Beziehungen zwischen Ihnen herzustellen. Die genannten Algorithmen bieten also Lösungsansätze um die gegebenen Daten in einen möglichst sinnvollen Vektorraum zu überführen.

Ein Vektorraum ist dabei ein mathematisches Konstrukt der linearen Algebra, auf dem sich effizient Berechnungen durchführen lassen. Dabei kann der Raum über (endlich) viele Dimensionen verfügen, die alle unterschiedliche Eigenschaften der Eingangsdaten repräsentieren. Welche Eigenschaften das sind muss nicht a priori definiert werden, sondern kann (und muss) nach der Lernphase herausgefunden werden.

Das Ziel ist es nun alle vorhandenen Datensätze (z.B. jedes Wort) in einen Vektor dieses Raumes zu überführen (Dieser Vorgang wird oft auch als embedding bezeichnet) . Hat man dieses Ziel erreicht lassen sich mit einfachen mathematischen Funktionen die oben als Beispiel genannten Fragen beantworten (natürlich nur, wenn die Umwandlung hochwertig ist). Ein einmal erstellter Vektorraum kann also die Basis für weitergehende Analysen in verschiedenste Richtungen sein.

Was steckt dahinter?

Die allgemeine Arbeitsweise dieser 2vec-Algorithmen basiert auf zwei zusammengeschalteten neuronalen Netzen. Als Eingangsdaten kommen hochdimensionale Vektoren (z.B. einer für jedes Wort im Eingabecorpus) mit Zufallszahlen zum Einsatz, die mit Hilfe der Netze erlernt werden. Details dazu können in den gut zu lesenden Papern gefunden werden.

Will man selber mit diesem Algorithmus herumprobieren kann ich gensim empfehlen, ein Python Paket, das einem mit einer Zeile Code die ganze Arbeit abnimmt und erstaunlich effizient arbeitet (viele brauchbare Eingangsdaten in Form von Word-Vektoren natürlich vorausgesetzt).

Was kann ich damit anfangen?

Mit den erstellten Vektorräumen lassen sich v.a. Aufgaben lösen bei denen der Abstand von Daten eine Rolle spielt. Wurden zwei Texte vom selben Autor geschrieben? Enthalten zwei Bilder einen ähnlichen Inhalt? Welche Worte befinden sich in der Nähe von Angela Merkel?

Völlig ohne vorheriges Wissen kann word2vec z.B. auch folgende Berechnung durchführen:

vec(Frankreich)-vec(Paris) + vec(Deutschland) = vec(Berlin). 

Aus den Daten wurde also gelernt, dass der Abstand von Berlin und Deutschland (in etwa) dem Abstand von Frankreich und Paris entspricht. Das ist bemerkenswert macht aber auch Sinn. Offensichtlich repräsentiert mindestens eine Dimension des Vektorraums den Zusammenhang Land-Hauptstadt.

Wie so oft bei der algorithmischen Betrachtung von Daten muss man aber natürlich auch hier als Anwender den eigentlichen Kontext definieren um wirklich nützliche Ergebnisse zu erzielen.

Aber genau dass ist ja der spaßige Teil daran.

Post Tag With : , , ,

Leave a Reply