• Frage: Wie entsteht eine Vektordatenbank? Man hat "sehr viel Text" - wie wird daraus ein Vektorraum, wer legt die Dimension fest, wie kommen dabei Zahlen zustande?

    Frage gestellt prey28rep am 27 Sep 2024.
    • Foto: Karsten Weber

      Karsten Weber Beantwortet am 27 Sep 2024:


      Da kann ich leider nichts dazu sagen, da ich selbst kein KI-Experte bin.

    • Foto: Fabian Zehner

      Fabian Zehner Beantwortet am 27 Sep 2024:


      Tolle Frage, weil sie einen sehr grundlegenden Aspekt betrifft, der schon seit den 1990ern in den (vor allem Sprach-)Modellen eine entscheidende Rolle spielt. Und wenn man diesen Aspekt verstanden hat, hat man auch ein sehr gutes Verständnis davon, wie aktuelle Deep Learning-Modelle funktionieren. Aus denen kann man nämlich solche Vektoren genauso rausziehen.

      Also. Wie kommt man dazu? Nimm dir eine Menge von Texten (genannt Textkorpus, also Textkörper). ZB alle Wikipedia-Artikel zum Thema Sport. Dann ist es je Methode verschieden, was damit gemacht wird. Nehmen wir eine leicht verständliche, die Latente Semantische Analyse (LSA) aus den 90ern. Da wird notiert, in welchem der Texte welches Wort wie häufig vorkommt. Das ist die Begriffs-Dokumenten-Matrix (das ist praktisch eine Tabelle mit den Häufigkeiten). Und da kann man sich schon intuitiv vorstellen: Wikipedia-Artikel über Fußball-Teams beinhalten ähnliche Wörter und die über Pferdesport sehr andere. Dementsprechend stehen in dieser Tabelle (also Matrix) in den Spalten (Dokumente) dort ähnliche Zahlen, wenn sich Dokumente ähneln.
      Und genau diese Spalten oder Zeilen kann man dann als Vektoren hernehmen.
      Die LSA macht dann noch ein paar einfache Sachen mit den Vektoren. Unter anderem die Anzahl der Dimensionen zu reduzieren: Wenn du 10.000 Wikipedia-Artikel reingesteckt hast, hättest du ja jetzt wie von mir beschrieben eine Tabelle mit 10.000 Spalten, also 10.000 Dimensionen. Die LSA wendet dann eine mathematische Technik an (Singulärwertzerlegung ), um ähnliche Spalten sozusagen zusammenzufassen. In anderen Worten: alle Artikel über Fußball werden vllt. am Ende in einer Spalte zusammengefasst. Und das ist der Schritt, den du in deiner Frage meinst, wer die Anzahl der Dimensionen festlegt. Wie viele das am Ende sind ist relativ zufällig. Klassischerweise wurden meistens 300 genommen. Oder 100. Oder 500. Inzwischen sind es bei den modernen Modellen häufig zB 768 Dimensionen.

    • Foto: Clarissa Elisabeth Hohenwalde

      Clarissa Elisabeth Hohenwalde Beantwortet am 27 Sep 2024:


      Fabian hat die Theorie schon sehr gut erklärt! Lass uns das mal an einem kleinen Beispiel durchgehen.

      Wir nehmen an, dass das das komplette Trainingsmaterial ist, das wir haben:
      1. Eis ist lecker
      2. Schokolade ist lecker und braun
      3. Kekse sind lecker
      4. Kekse Schokolade und Eis sind lecker
      5. der Hund ist braun und süß
      6. die Katze ist süß
      7. der Hund und die Katze sind süß
      8. die Katze spielt mit dem Hund
      9. der Hund spielt mit dem Keks
      Wie du siehst, habe ich die Sätze schon mal ein bisschen vereinfacht, Dinge kleingeschrieben und Satzzeichen entfernt.

      Die Begriffs-Dokumenten-Matrix für diese Texte sieht dann so aus:
      braun dem der die eis hund ist katze keks kekse lecker mit schokolade sind spielt süß und
      0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0
      1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1
      0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0
      0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1
      1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1
      0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0
      0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1
      0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0
      0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
      Das liest man so: In der ersten Zeile steht der erste Satz, also „Eis ist lecker“. Eine 1 steht deshalb bei den Spalten „eis“, „ist“ und „lecker“. Diese Matrix hat 9 Zeilen (weil 9 Trainingssätze) und 17 Spalten (weil 17 verschiedene Wörter im Trainingsmaterial vorkommen).

      Mit einer LSA können können wir die Anzahl der Dimensionen reduzieren, z.B. auf zwei Dimensionen. Dabei werden die Wörter zusammengefasst, die besonders oft zusammen vorkommen. Die genauen Werte werden mit der Singulärwertzerlegung berechnet.

      Das Ergebnis sieht so aus:
      Dimension 1 Dimension 2
      1. Satz 0.5934445791988954 0.9165413192852053
      2. Satz 1.189497689680079 1.3680276439710868
      3. Satz 0.535724906754112 0.9237788723668446
      4. Satz 1.1575435587811735 1.7294060518196912
      5. Satz 1.8760321400981106 0.14135182547305572
      6. Satz 1.1662751461581395 -0.2202077742518943
      7. Satz 2.211978408782452 -0.37740644987861616
      8. Satz 1.4598352955430771 -1.4531110539574843
      9. Satz 1.281210939124805 -1.3426176152308618
      Auch hier haben wir wieder neun Zeilen: Für jeden Satz eine. Wir können außerdem bestimmen, welche Wörter besonders zur Zuteilung zu den Dimensionen beigetragen haben:
      Für Dimension 1 sind das hund, und, der, süß und katze – also alles, was mit den Tieren zu tun hatte. Für Dimension 2 waren die Begriffe lecker, schokolade, und, kekse und eis wichtig – also alles, was mit Essen zu tun hat.

      Wie können wir diese Vektoren jetzt also interpretieren?
      Nehmen wir als Beispiel den 7. Satz „der Hund und die Katze sind süß“. Dieser Satz hat einen Wert von 2.211978408782452 auf der ersten Dimension. D.h. das Konzept Tier ist in diesem Satz sehr wichtig. Das Konzept Essen auf der zweiten Dimension (-0.37740644987861616) trägt negativ dabei. Wir können daraus also schließen, dass sich der Text mit Tieren beschäftigt.

      So konnten wir unseren gesamten Datensatz automatisch nach den Themen „Tier“ und „Essen“ sortieren. Wie du siehst, steckt da also einiges an Mathematik dahinter.

      Übrigens: Wenn du ganz genau hinschaust, siehst du, dass die Zuordnung nicht für alle Sätze perfekt geklappt hat.

Kommentare