AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Die Vision eines intelligenten Mediaplayers...
Thema durchsuchen
Ansicht
Themen-Optionen

Die Vision eines intelligenten Mediaplayers...

Ein Thema von Mithrandir · begonnen am 10. Okt 2010 · letzter Beitrag vom 4. Feb 2011
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 19:15
Habt ihr eigentlich schon mal darüber nachgedacht was ihr das so schreibt?

Bei einem neuronalen Netz ist eine Lernphase nötig. Wann soll diese durchgeführt werden?
Bei einem Backpropagationnetz wird kontrolliertes Lernen angewendet. Ein Kohonennetz lernt zwar selbst aber wie wollt ihr das dann interpretieren?

Was sollen die Eingangs- und was die Ausgangssynapsen sein?

Siehe auch mein Backpropagation-Netz.

Ein Kohonennetz habe ich auch mal realisiert, aber hier nicht veröffentlicht.

Also Graphen mit gerichteten Kanten ist wohl die bessere Variante.
  Mit Zitat antworten Zitat
Hisoka

Registriert seit: 2. Jan 2008
Ort: im Norden
53 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 19:57
Habt ihr eigentlich schon mal darüber nachgedacht was ihr das so schreibt?

Bei einem neuronalen Netz ist eine Lernphase nötig. Wann soll diese durchgeführt werden?
Bei einem Backpropagationnetz wird kontrolliertes Lernen angewendet. Ein Kohonennetz lernt zwar selbst aber wie wollt ihr das dann interpretieren?

Was sollen die Eingangs- und was die Ausgangssynapsen sein?

Siehe auch mein Backpropagation-Netz.

Ein Kohonennetz habe ich auch mal realisiert, aber hier nicht veröffentlicht.

Also Graphen mit gerichteten Kanten ist wohl die bessere Variante.
Daher fällt das ganze ja auch unter die Kategorie "Interessante Idee ohne Plan". Also die Idee ein NN für sowas zu nutzen ist ja recht interessant, nur wie man sowas umsetzt ist etwas anderes.

An sich ist ein Problem ja der Anfang. Man hat keine Vergleichsdaten. Also man muss dem Netz erstmal beibringen was zu einander passt( "Like button", "ähnlich button",...) und mit den Ergebnissen könnte man dann ein Netz füttern und dann auf unbekannte Lieder los lassen. Ob das Ganze aber zufriedenstellend funktioniert ist eine andere Sache. Dazu kommen ja noch Sachen wie das zu viel lernen(auswendig lernen), dadurch kann das Ergebnis vielleicht für eine kurze Zeit sehr gut sein aber dann wenn man neue Musik erwirbt kann es total versagen.

Aus der Praxis heraus würde ich daher doch eher einen fertigen Dienst wie Last.fm einbinden. Aber das wäre dann weniger interessant.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#13

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:12
Ich hab mal einen kleinen Test gemacht, und ich glaube, ich weiß, warum dieses Feature noch kein Player implementiert hat.

Gehen wir davon aus, dass wir 5000 Lieder auf der Festplatte haben (jahrzehntelange Sammelwut). Baut man für die Initialisierung einen Graphen auf, bei dem jedes Lied mit jedem eine Verknüpfung hat, so kommt man auf die niedliche Datenmenge von insgesamt 25.000.000 Verbindungen. Das bedeutet, dass ich, halte ich diese Menge im Speicher vor, einen Speicherverbrauch von über eine Gigabyte habe. Serialisiere ich meine Liste in eine XML-Datei, ist diese 2,8 Gigabyte groß. Das Hauptproblem ist also weniger die Rechenleistung, sondern eher die riesigen Datenmengen, die anfallen.

Freiwillige bitte zuerst melden, die hier einen Lösungsvorschlag hätten.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:19
Den Baum nicht im Speicher halten sondern nur dann das passende (aus der DB) laden wenn es gebraucht wird.
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#15

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:23
Es geht mir auch mehr um die Gesamtdatenmenge. Versuch mal, dem User zu erklären, dass er für seine 5000 Lieder eine Indexdatei mit 3 GB braucht.

Ich teste das gerade mit SQLite durch... Sollte ja mindestens um den Faktor 10 kleiner werden, wenn ich richtig gerechnet habe. Das ginge ja noch... Ggf. könnte man auch sehen, dass man von vornherein nur die Wahrscheinlichsten Verknüpfungen zulässt, und das Programm dann später eigenständig neue Verknüpfungen hinzufügt...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#16

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:31
Nimm statt XML ein ordentliches, natives Format . Geht man von sortierten Daten aus, brauchst nu nichtmal mehr Strukturinformationen, und kannst die Bindungsstärken einfach so der Reihe nach auf die Platte streamen. Drückt man die einfach mal in Bytes aus, erscheinen 25MB schon garnicht mehr so fies. Koppel das mit einem einigermaßen sinnvollen read-ahead Algo, und du musst das auch nicht am Stück im Speicher halten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#17

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:35
Du kannst einen Graphen (fast immer) auch als Matrix darstellen.

In diesem Beispiel also eine 5000x5000 Matrix (wenn jedes Element ein Byte hat, ist das nicht mal allzu groß) und ein Wert stellt dann dar "wie doll" die beiden Lieder (Zeile/Spalte) zusammenhängen. Also z.B. -128 = gar nicht 0=neutral, 127 = quasi identisch
Da diese Zuordnung symmetrsich ist, brauchst du auch nur die Hälfte der Einträge. Wären also 12,5 Megabyte

Und wenn du dann das nächste Lied spielen sollst, gehst du einfach alle Lieder durch, ermittelst die "Ähnlichkeitskomponente" und (nur als Beispiel) nimmst diese als Wahrscheinlichkeit und wählst zufällig eins aus. (Ähnliche Lieder werden wahrscheinlicher ausgewählt als fremde)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#18

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 22:50
Da hatter wahr . Find's immer schmerzhaft zu sehen, wenn diese XML/DB-Euphorie so simple schlanke Dinge vom Platz der "ersten Einfälle" verdrängt
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 11. Okt 2010, 23:53
Es geht noch kleiner wenn man möchte

Stellt man die Beziehungen jetzt auf einer virtuellen Erdkugel dar mit Längen- und Breitengrad, dann brauche ich pro Lied 2 Werte die je nach gewünschter Auflösung nur 5000x2xBewertungsauflösung benötigen
Bei 1Byte sind das gerade mal 10kByte.

(außer acht gelassen haben bislang den Index auf den Titel, der mindestens 2Byte groß sein sollte)

Wären in diesem Falle mit Index also 20kB
Die Matrix-Variante benötigt pro Eintrag 2+2+1 Byte und das genau 4999*5000/2 mal ergibt 59,59MB

Ein weiteren Vorteil wäre die Auswahl der betroffenen Lieder. Einfach alles, was in einem entsprechenden Radius um einen Punkt ist gehört dazu.

Die Errechnung der Koordinaten ist allerdings aufwendiger, weil jedes hinzugefügte Lied alle anderen auf der Kugel wieder verschiebt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#20

AW: Die Vision eines intelligenten Mediaplayers...

  Alt 12. Okt 2010, 00:16
Die Errechnung der Koordinaten ist allerdings aufwendiger, weil jedes hinzugefügte Lied alle anderen auf der Kugel wieder verschiebt
Und um das ordentlich zu machen, braucht man evtl. wieder die Beziehungen der Lieder?

Ist interessant, dass alle am Speicherplatz herumrechnen, bevor überhaupt feststeht, wie genau die Daten aussehen, die gespeichert werden sollen/müssen.
Zum Beispiel eignet sich die Matrix besonders dann, wenn es (sehr) viele Kanten gibt. Die Vereinfachung mit "nur die Häfte speichern" geht nur mit ungerichteten Graphen.

Imho braucht man im experimentellem Stadium ja auch nicht mit 5000 Liedern anfangen und dann wären auch größere große Indices zu verkraften.
Bits knausern kann man dann später, wenn man weiß, wie die Daten aussehen.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz