-
0
Frage: Was muss man unbedingt beachten beim Programmieren von neuronalen Netzwerken?
- Stichworte:
-
Clarissa Elisabeth Hohenwalde Beantwortet am 17 Sep 2024:
Spannende Frage! 😊
Wenn du selbst ein neuronales Netzwerk trainieren möchtest, ist es besonders wichtig, eine gute Datenbasis zu haben. Tatsächlich ist es ganz normal, dass man beim Erstellen einer KI den größten Teil der Zeit damit verbringt, Daten zu sammeln und zu bereinigen. Damit dein Modell später auch mit neuen Problemen umgehen kann, solltest du deinen fertigen Datensatz in Trainings- und Testdaten aufteilen. Mit den Trainingsdaten lernt das Netzwerk und mit den Testdaten prüfst du, wie gut es neue Aufgaben lösen kann.
Danach musst du entscheiden, wie dein neuronales Netzwerk konkret aufgebaut sein soll. Du überlegst also, wie viele Schichten (Layer) das Modell haben soll und welche Aktivierungsfunktion sinnvoll ist. Die Lernrate, die bestimmt, wie schnell das Netzwerk dazu lernt, ist ebenfalls wichtig. Es gibt jedoch keine festen Regeln, was hier richtig ist – vieles basiert auf Erfahrungswissen oder Experimentieren. Ein guter Tipp ist es, nachzusehen, ob andere Leute bereits ähnliche Probleme wie du bearbeitet haben und welche Ansätze bei ihnen funktioniert haben.
Das Training eines neuronalen Netzwerks erfordert Geduld und einige Tests, bis man die richtige Kombination aus Struktur und Parametern findet.
Wenn du selbst mal ausprobieren möchtest, wie man ein einfaches neuronales Netzwerk erstellt und trainiert, kannst du z.B. folgende Website nutzen: https://slxs.de/ml/
-
Valerie Vaquet Beantwortet am 17 Sep 2024:
Hi, das ist wirklich eine sehr spannende Frage, die Clarissa schon echt gut beantwortet hat. In meiner Erfahrung sollte man sich bevor man ein neuronales Netz trainiert aber unbedingt fragen ob man das wirklich braucht: In vielen Fällen sind einfachere Modelle das Maschinellen Lernens viel besser geeignet. Die haben nebenbei auch sehr viele Vorteile:
– sie kommen oft mit weniger Daten klar und lernen schneller
– man läuft nicht Gefahr, dass sie Overfitten – das bedeutet etwas über das Trainingsset auswendig zu lernen statt die Muster zu erkennen
– sie sind oft keine Blackbox, sondern direkt viel erklärbarer und daher zu präferieren.Außerdem sollte man sich vorher überlegen wie man messen kann ob das Neuronale Netz gut funktioniert. Dazu macht es Sinn sich zu überlegen, wie man das Problem einfach ganz naiv lösen würde: zum Beispiel zufällige Entscheidungen treffen oder nur den Mittelwert der Daten bestimmen. Außerdem muss man immer gut aufpassen dass man die Daten, die man zum Training benutzt hat nicht zum Testen benutzt, die hat das Modell ja schon gesehen. Das wäre dann so als würde man vor der Klassenarbeit die Musterlösung gesehen haben. Am besten schaut ihr mal nach „Kreuzvalidierung“. Wenn das Modell, dass man trainiert hat, nicht deutlich besser ist als die naiven Lösungen, kann man davon ausgehen, dass man etwas falsch gemacht hat.
Ganz viel Spaß beim Programmieren!
-
Karsten Weber Beantwortet am 18 Sep 2024:
Da ich selbst keine solchen Netze erstelle, kann ich die Frage nicht beantworten. Allerdings weiß ich, dass beim Trainieren der Netze sehr auf die Qualität der Daten geachtet werden muss, denn ansonsten kann das Netz einen erheblichen Bias entwickeln.
-
Rebecca Wald Beantwortet am 18 Sep 2024:
Sehr coole Frage und ich habe gesehen, dass schon total gute Antworten gegeben wurden. Daten spielen definitiv eine grosse Rolle. Was ich hinzufügen kann ist, dass man unbedingt beachten sollte ausführlich aufzuschreiben was man genau gemacht hat beim Programmieren von neuronalen Netzwerken. Ich bin selbst eigentlich noch Anfänger im Programmieren und es ist immer super hilfreich, wenn man vom Code anderer erfahrener Programmierer lernen kann. Das macht das ganze Experimentieren, was Clarissa so gut beschrieben hat, übersichtlicher und andere könnten das was man programmiert hat einfacher nachmachen und dann weiterentwickeln.
-
Yves Jeanrenaud Beantwortet am 18 Sep 2024: last edited 18 Sep 2024 7:58 am
Puh, da ist eine Menge zu beachten! Zu vielem technischen haben meine Kolleg*innen ja schon etwas geantwortet.
Die Frage, die sich aus meiner Sicht zuerst stellt, ist nach dem Zweck. Wozu möchte ich ein künstliches neuronales Netz (KNN/im Englischen ANN) benutzen? In der Regel geht es ja um Mustererkennung, also um das Finden von Regeln in sehr großen Datensätzen.
Mit diesen Daten eng verbunden sind auch ethischen, sozialen und rechtlichen Aspekte, so genannte ELSA (ethical, legal & social aspects, https://www.nfdi.de/section-elsa/ ), die von Anfang an bei jedem Schritt mit beachtet werden sollten. Darunter fällt z. B. die Frage, welche Daten verarbeitet werden und wer darüber entscheidet; oder ob diejenigen, deren Daten es sind, davon profitieren.
Auch sollte man sich fragen, ob das zu schaffende System auch missbraucht werden oder jemandem schaden könnte. -
Aditya Mohan Beantwortet am 18 Sep 2024: last edited 18 Sep 2024 8:13 am
Tolle Frage! 😊
Die bisherigen Antworten haben schon viele wichtige Punkte erklärt, zum Beispiel wie wichtig saubere Daten und der richtige Aufbau des Modells sind. Ich möchte noch ein paar Dinge hinzufügen, die oft übersehen werden, aber auch sehr wichtig sind, wenn man neuronale Netze programmiert:
Optimierung der Hyperparameter: Hyperparameter sind Dinge wie die Learning Rate oder Number of Layers im Netzwerk. Die Wahl der richtigen Einstellungen kann einen großen Unterschied machen. Es gibt Werkzeuge, die dir helfen können, die besten Einstellungen automatisch zu finden, damit du nicht alles selbst ausprobieren musst.
Skalierbarkeit und Ressourcen: Je größer dein Netzwerk wird, desto mehr Rechenleistung brauchst du. Manchmal reicht ein normaler Computer nicht aus, und man braucht spezielle Grafikkarten (GPUs). Es ist wichtig, zu überlegen, ob du genug Power hast, um dein Netzwerk gut zu trainieren.
Verwendung von Libraries: Es gibt tolle libraries wie PyTorch (https://pytorch.org/), die dir helfen, neuronale Netzwerke zu programmieren. Sie machen es viel einfacher, weil sie viele Dinge, die sonst kompliziert wären, schon für dich vorbereiten. Wenn du mehr darüber lernen willst, gibt es viele tolle Videos und Tutorials im Internet, wie dieses hier: https://www.youtube.com/watch?v=e5CDe00B3vE
Ich hoffe, das hilft dir weiter und macht dir Spaß beim Programmieren! 😊
-
Annegret Janzso Beantwortet am 18 Sep 2024:
Die anderen hier haben die Frage schon sehr gut beantwortet. Was wichtig ist zu beachten, ist dass durch alle Daten immer ein „Bias“ mit dazu kommt – das bedeutet, dass das Neuronale Netz auch nur das abbilden kann, was in den Daten vorkommt, typischerweise zu einem Verhältnis wie es in den Daten vorkommt. Wenn man darauf nicht achtet, passiert es schnell, dass das Neuronale Netz am Ende zum Beispiel Minderheitengruppen nicht beachtet, wenn diese in den Daten unterrepräsentiert sind. Man muss also stark darauf achten, welche Daten man verwendet, und was diese abbilden, in Verbindung damit, was denn die Realität ist, und was das Neuronale Netz am Ende leisten soll.
-
Fabian Zehner Beantwortet am 18 Sep 2024:
Während die anderen hier ein super Tutorial zusammenschreiben, ergänze ich mal noch eine andere Sichtweise fürs Verständnis.
Du kannst dir vorstellen, dass wir bei neuronalen Netzen eine Kugelbahn bauen, indem wir ..
1) ganz viele Röhren mit Kurven, Filtern und Sieben aneinanderstecken,
2) dabei auch so coole Sachen wie Rampen oder kleine Farbseen einbauen,
2) dann vorne eine Kugel reinschmeißen ⚪ und
3) schauen, ob sie hinten am Ende der Kugelbahn blau angemalt rauskommt. 🔵Wie du dir vorstellen kannst, ist das Aneinanderstecken von Röhren gar nicht so schwierig (das eigentliche Programmieren). Was schwierig ist, ist dass sich die Kugelbahn selbst verbessern soll, damit das gewünschte Ergebnis rauskommt. Das heißt, ich schmeiße ganz viele Kugeln nacheinander rein und möchte, dass die schweren Kugeln am Ende rot 🔴 angemalt hinten rausfallen, die leichten Kugeln blau 🔵angemalt und alle, die eine Delle haben, grün 🟢.
Nach jeder Kugel prüft die Kugelbahn sich selbst, ob sie es richtig gemacht hat. Das weiß sie, weil wir ihnen beim Reinschmeißen der Kugeln immer laut zurufen, „Achtung, die hier sollte blau werden!“ 🔵, „Die hier jetzt bitte grün!“ 🟢
Und immer wenn hinten eine Kugel mit falscher Farbe rauspurzelt oder die Kugel gar steckenbleibt, ändert sich die Kugelbahn ganz leicht. Das heißt, sie bemerkt zum Beispiel, dass die Kugel zwar leichte rote Flecken hat, aber nicht schön strahlend rot ist. Deshalb macht die Bahn dann an allen Farbseen, durch die die Kugel gerollt ist, 20ml mehr Farbe hin. Und nach vielen weiteren Kugeln sind die Farbseen, Kurven und Rampen so perfekt eingestellt, dass wenn du jetzt Kugeln reinschmeißt, sie fast immer die richtige Farbe am Ende haben.Warum schreibe ich das so? Weil genau dieses Verändern nach jeder Kugel (20ml mehr Farbe, 20ml weniger) eine der schwierigen Sachen ist. Wenn ich doof bin und programmiere, „Kugelbahn, immer wenn das Ergebnis nicht stimmt, mach mal 2 Liter mehr Farbe in die Farbseen“, siehst du schon sofort, dass das nicht gut ausgeht. Die Kugeln bleiben dann im See stecken oder versauen den Rest der Kugelbahn. Und dann kommen wir niemals zu einer funktionierenden Bahn. Wenn ich es in die andere Richtung doof mache, „Bahn, immer nur 1ml hinzufügen oder entfernen“, brauchen wir ewig lang und kommen auch nie zu einem Ergebnis. Das heißt, was wir vor allem programmieren und einstellen, sind so Sachen wie „20ml/15ml/5ml mehr nach jeder Kugel“. Das ist die Lernrate, von der die anderen gesprochen haben. Und neben der Lernrate gibt es noch viele andere Sachen, die wir richtig einstellen müssen, damit sich die Kugelbahn genau so richtig einstellen kann, dass sie zum Beispiel auch nicht nur mit den Kugeln funktioniert, die ich reinschmeiße. Die Bahn soll auch noch funktionieren, wenn ich sie zu dir nach Hause bringe und du dort deine eigenen Kugeln reinwirfst.
—
Jetzt fragst du dich vielleicht, wofür es gut sein soll, Farben je nach Gewicht und Delle anzumalen. Und warum zur Hölle wir fürs Kugelbemalen und Basteln Geld bekommen. In meiner Beschreibung sind die Kugeln die Daten, von denen die anderen reden. Und zum Beispiel kannst du anstelle einer Kugelbahn an ein Auto denken, das lernen soll, von alleine zu fahren. Und wenn das Auto „sieht“, dass vor ihm eine Rechtskurve kommt, dann soll es nach rechts lenken. Hier ist jetzt also das Auto die Kugelbahn und das Video*, das das Auto von der Straße vor sich hat, sind die Kugeln, die reingeworfen werden. Mit welcher Farbe die Kugel angemalt ist, ist die Entscheidung nach links oder rechts zu lenken, zu bremsen oder Vollgas zu geben.* Psst, die echten selbstfahrenden Autos sehen nicht wirklich Videos, aber wir können uns das so vorstellen.
Verwandte Fragen
Kürzlich gestellte Fragen
-
Wie lange dauert es ca. um ein KI Programm wie z.B. chatGPT zu programmieren?
-
Welche Probleme traten/treten oft bei der Entwicklung auf?
-
Was ist der jetzige Stand der KI-Forschung?
-
Gab es schonmal eine „KI-Kathastrophe“?
-
Denken sie, dass KI eines Tages die Welt revolutionieren wird oder ob KI für uns zum Nachteil wird? Wenn ja
Kommentare