maschinelles Lernen bzw. Mustererkennung und Prognose
-
volkard schrieb:
regenundschnee schrieb:
Na dann erklärt doch mal genau wie das gehen soll. Was soll an der Ausgansschicht rauskommen? Ich wüste nicht wie man da eine Formel raus bekommen soll. Man könnte höchstens durch das NN eine von x bekannten Formeln, die man vorher eintrainiert hat, erkennen. Oder basieren eure Annahmen nur auf so einer Theorie, dass NN irgendwie alles können, ohne Beweis.
Soll ich Dich jetzt PI nennen?
An den Ausgängen kommen die reellen Zahlen a,b,c,d,e und f an.Kannst du auch mal eine ausführliche Antwort zum Thema geben, wie du vorgehen willst und nicht nur etwas das sowieso jeder sagen kann der 2 Wikipedia Seiten zum Thema gelesen hat? Womit trainierst du? Was erwartest du als Ergbnis? Für welche unbekannte Zahlenreihen soll das noch funktionieren? Oder willst du auch nur approximieren wie Jester?
Jester schrieb:
regenundschnee schrieb:
Na dann erklärt doch mal genau wie das gehen soll. Was soll an der Ausgansschicht rauskommen? Ich wüste nicht wie man da eine Formel raus bekommen soll. Man könnte höchstens durch das NN eine von x bekannten Formeln, die man vorher eintrainiert hat, erkennen. Oder basieren eure Annahmen nur auf so einer Theorie, dass NN irgendwie alles können, ohne Beweis.
Ich sehe dein Problem nicht. Das Machine-Learning-Problem besteht doch genau darin, dass man für eine leider unbekannte Funktion f anhand von beispielwerten f(x_1),...,f(x_n) die funktionswerte an beliebigen stellen schätzen möchte. Und neuronale netze können ab Tiefe 3 alle stetigen funktionen approximieren. Das ist allerdings auch das größte Problem, die teile können viele verschiedene funktionen und ich hab meine Zweifel, dass die paar trainingswerte ausreichen.
Ja, approximieren können wird, hat aber wenig mit dem zu tun, dass er auf so etwas wie "n0 = 0 ist n1 = n0+2, n2 = n1+2" kommen will. Zum Approximieren dürfte es auch besser Methoden als ein NN geben. Aber beim Approximieren würden wir wahrscheinlich für 0,2,4,6,8,10,12 als Ergebniss 13,999 16,00001 18,0031 20 bekommen. Nicht wirklich etwas, bei dem man sagen würde, dass die Konstruktionsvorschrift verstanden wurde.
-
regenundschnee schrieb:
Kannst du auch mal eine ausführliche Antwort zum Thema geben
Nein, das bringt nichts. Auf diesem Niveau nur gegen reichlich Geld.
-
volkard schrieb:
regenundschnee schrieb:
Kannst du auch mal eine ausführliche Antwort zum Thema geben
Nein, das bringt nichts. Auf diesem Niveau nur gegen reichlich Geld.
Gut, dass du mich darauf hinweist. Ich hätte jetzt noch die Lösung gepostet und du hättest abkassiert.
-
regenundschnee schrieb:
Ja, approximieren können wird, hat aber wenig mit dem zu tun, dass er auf so etwas wie "n0 = 0 ist n1 = n0+2, n2 = n1+2" kommen will.
Approximieren können heißt, dass man jede stetige Funktion damit beliebig genau (!) approximieren kann. Wenn der Fehler mal auf unter 0.5 gefallen ist, kann man das korrekte Ergebnis dann ja mit Runden bestimmen. Ich sage ja nicht, dass das die beste Möglichkeit ist das Problem zu lösen, ich argumentiere lediglich, dass es voll im Machine-Learning Framework drinliegt. Ich persönlich würde das wohl eher versuchen über einen parametrischen Ansatz zu lösen.
Soweit ich es verstanden hatte war die Aufgabe die Fortsetzung der Zahlenreihe zu raten, nicht eine Konstruktionsvorschrift zu "verstehen". Wobei Du dafür erstmal verraten müßtest was Du genau meinst, wann ein Computer eine Konstruktionsvorschrift "verstanden" hat.
-
Hey Hedgy
Da du noch keine konkrete Antwort auf dein eigentliches Problem bekommen hast:
Das Muster ist auch relativ leicht zu erkennen. Du musst dich nur fragen, was genau "das Muster" sein soll. Du sagst, du willst dass dein NN lernt dass n_x = n_(x-1) + 2.... d.h. jede Zahl ist die vorhergehende Zahl + 2.
In dem Fall hat dein Netz also 1 Eingabevariable (die vorhergehende Zahl) und eine Ausgabevariable (die aktuelle Zahl).
Eine einfachere Methode fuer dieses Muster waer eine lineare Regression.
-
Nur ist der Ansatz im Allgemeinen Bloedsinn, da man schon zu viel Wissen hineinsteckt um noch von Lernen zu sprechen.
-
Blue-Tiger schrieb:
Eine einfachere Methode fuer dieses Muster waer eine lineare Regression.
[quote=Tippgeber]
17:17:22 19.01.2012
Wie wäre es mit etwas einfachem: einer Regressionsgeraden. Solch ein Verfahren kommt normalerweise auch ganz am Anfang einer Vorlesung über maschinelles Lernen vor. Heißt glaube ich lineare Regression.Übrigens gibts bei Standford (oder MIT?) ein Portal mit vielen Vorlesungsaufzeichnungen. Darunter auch eine über maschinelles Lernen. Kann ich nur empfehlen. Da sind auch alle Übungsblätter und das Skript mit dabei.
Habe ihn mal eben herausgesucht: http://www.academicearth.org/courses/machine-learning
[/quote]Wozu mache ich mir eigentlich überhaupt die Mühe den Leuten zu helfen, wenn es doch keiner liest
-
Jester schrieb:
regenundschnee schrieb:
Ja, approximieren können wird, hat aber wenig mit dem zu tun, dass er auf so etwas wie "n0 = 0 ist n1 = n0+2, n2 = n1+2" kommen will.
Approximieren können heißt, dass man jede stetige Funktion damit beliebig genau (!) approximieren kann. Wenn der Fehler mal auf unter 0.5 gefallen ist, kann man das korrekte Ergebnis dann ja mit Runden bestimmen. Ich sage ja nicht, dass das die beste Möglichkeit ist das Problem zu lösen, ich argumentiere lediglich, dass es voll im Machine-Learning Framework drinliegt. Ich persönlich würde das wohl eher versuchen über einen parametrischen Ansatz zu lösen.
Natürlich können wir bei dieser Zahlenreihe runden, aber was soll das dann für eine Aufgabe für Machine-Learning sein, wenn wir schon fast alles was vorgeben? Wollen wir ein NN trainieren, das nur bei 0,2,4,6,8,10,12 funktioniert? Das wäre wohl total langweilig. 0.5, 2.5, 4.5, 6.5... würde dann mit Runden schon wieder nicht gehen. Außerdem habe ich nie behauptet, dass Zahlenreihen fortsetzen nicht mit Machine-Learning geht. Ich hab nur beweifelt, dass man mit einem NN alle möglichen Konstruktionsvorschrift bauen kann. Ich habe immer gefragt was rauskommen soll, aber keiner hat gesagt was rauskommen soll, sondern nur das es (was auch immer) geht. Seine Anforderung ist viel zu ungenau.
Wenn man etwas halbwegs interessantes und machbares versuchen will, könnte man versuchen ein NN zu trainieren, dass Zahlenreihen einer beschränkten Anzahl von Konstruktionsvorschriften zuordnet. Z.B. Zahlenreihen für n_x = n_(x-1) + a; n_x = n_(x-1) - a; n_x = n_(x-1) * a; trainieren und dann schauen, ob es unbekannte Zahlenreihen in die richtige Gruppe einsortiert.
-
Übung macht den Meister. Was soll das erkennende Programm denn genau üben?
Nette Übung für 2012: 12er Zahlensystem erlernen, um damit im Kopf zu rechnen.
Enthält praktischerweise nette Zahlenfolgen:
2,4,6,8,U,10
3,6,9,10
4,8,10
6,10
aber
5,U,13
9,16,23
usw.
-
TravisG schrieb:
Hier ist ein guter einführender Kurs über machine learning:
Vielen Dank, genau so etwas habe ich gesucht.
Ebenfalls Danke für die übrigen sehr interessanten Links und Beiträge. Ich werde mich weiter informieren und lernen und mich hier immer zwischendurch mal melden, wenn ich was neues habe
Herzliche Grüße,
hedgy
-
TravisG schrieb:
Die Tests fallen für dich aus, da du zu spät dran bist, aber einschreiben können solltest du dich wohl trotzdem.
Wiederholen die das nicht ohnehin im Februar nochmal?
Ansonsten +1 für mlclass; sehr gut gemacht und sehr anfängertauglich. Tolle Einführungsveranstaltung in die Materie.
-
Reihen sind das natuerliche ANwendungsgebieet von rekurrenten KNN. In ihnen ist so etwas wie eine Reihenfolge der Elemente in der Netzstruktur eingebaut. Leider sind sie touring vollstaending und dadurch eigentlich gar nicht mehr trainierbar(Gradientenabstieg im Raum der touring vollständigen programme? Danke, da gibts hübschere Suchräume)