Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / Schachprogramm in vier Stunden
- - By Wolfram Bernhardt Date 2023-12-24 22:00 Edited 2023-12-24 22:15 Upvotes 1
Hallo!

Bin gerade über folgenden Artikel gestolpert:

https://de.chessbase.com/post/eine-schachengine-selber-programmieren-ein-schnellkurs

Zuerst musste ich etwas lachen, aber eigentlich ist die Idee nicht nur witzig, sondern zeigt auch, wo wir gerade so stehen. Das hier beschriebene Vorgehen ist:

1) Nimm ein Lib, die die Schachregeln enthält.
2) Lasse ChatGPT eine Hülle erstellen, die den Minimax-Algorithmus implementiert.
3) Die Stellungsbewertung in den Knoten des Suchbaum übernimmt ein frei heruntergeladenes Netzwerk, das über eine einfache Schnittstellen-Bibliothek angesprochen wird.

Fertig.

Ich schätze, ich würde 2-4 Stunden brauchen, bis ich das am Laufen hätte (und ich würde direkt Alpha-Beta statt Minimax implementieren).
Und womöglich würde das schon recht stark spielen.

Bin noch nicht ganz sicher, ob ich das zwischen den Jahren mal ausprobiere, aber früher habe ich Wochen und vielleicht Monate in meine kleinen Engines gesteckt... Solch eine Engine kann nun aber jeder mit grundlegenden Kenntnissen zusammenstöpseln.

Ich finde das eher faszinierend als erschreckend. Wie seht Ihr das?

Viele Grüße
     Wolfram
Parent - - By Lars B. Date 2024-01-27 17:27
Hallo Wolfram,

warum versteckst Du so einen interessanten Beitrag in einem enzyklopädischen Unterforum? Na, sei's drum, schließlich habe ich ihn ja bemerkt.

Mir stellen sich einige Fragen. Vorab: Ich halte den verlinkten Artikel für eher schwach. Der Autor schreibt "... besteht die Gefahr, dass es schnell sehr technisch wird ...", aber genau darum geht es doch eigentlich, will man eine Engine programmieren. Ist man nicht bereit, sich darauf einzulassen, wird man nie kreativ sein, nie etwas Eigenes schaffen.

Vor allem habe ich nicht verstanden, worin der Unterschied besteht, ob ich mir von irgendeiner KI ein Engine-Gerüst zusammenklauen lasse oder ob ich das gleich selbst mache; Codefragmente gibt es ja zuhauf im Internetz. Klar, wenn ich selber den Code hier und da klaue, muß ich mir Gedanken machen, wie die geklauten Schnipsel zusammenarbeiten sollen. Das nimmt die KI einem ab. Aber damit verschenkt man schon das erste Häppchen Eigenleistung, mit dem man initiale Schwierigkeiten überwindet und etwas lernt über die Sachen, die man sich da zusammenkopiert hat. Gut, dafür geht assistiertes Klauen schneller, das ist auch ein Vorteil.

Hier wie da hat man am Ende ein Schachprogramm, das irgendwie spielt. Was soll nun jemand damit anfangen, wie soll er das verbessern? Die KI wird irgendwann nicht mehr hilfreich sein. Dann muß man selbst ran, und man hat noch gar nichts verstanden. Die Zeit, die man dann braucht, den von der KI zusammengebastelten Code zu verstehen, hätte man sinnvoller drauf verwendet, das alles gleich selbst zu machen. Dann gäbe es auch kein Problem mit "wiederverwendetem" Code, und man hätte auch selbst mehr gelernt als nur KI-Kommandozeilen zu optimieren.

Alles in allem bleibt mir der im Artikel verfolgte Ansatz vollkommen unverständlich, weil ich den Sinn nicht erkenne. Schachengines gibt es haufenweise. Man kann diese Anzahl inkrementieren ohne eigene Leistung, aber warum? Und: Wenn ich schon Zeit habe, warum soll ich dann eine Engine zusammenklauen lassen, statt sie selbst zu programmieren? Wobei lernt man wohl mehr, was bereitet mehr Freude?

Allerdings muß ich zugeben, mit diesen KIs wie ChatGPT noch gar keine Erfahrungen gemacht zu haben. Was ich gelesen habe, zum Beispiel von Ingo Althöfer, der da viel mit gespielt hat, fand ich eher abschreckend. Die Textbeiträge der KI waren wie von einem fleißigen, aber mäßig talentierten Achtklässler geschrieben, dem ich von jeder Berufswahl, die was mit Schreibfähigkeit zu tun hat, abraten würde, abgesehen vielleicht von Gender"wissenschaft". Klar, wir stehen am Anfang, aber Euphorie scheint mir noch nicht besonders angebracht.

Grüßli
Lars
Parent - - By Wolfram Bernhardt Date 2024-01-29 17:39
Hallo Lars,

ja, ich sehe das im Wesentlichen wie Du und habe mir dieselben Fragen gestellt. Und im Grunde gibts Du implizit auch schon die Antworten, die der Grund sind, warum ich den Artikel so interessant fand:

Ich würde das für eine Schach-Engine erstens nicht so machen und zweitens vermute ich, ich könnte mehr erreichen, wenn ich klassisch von Hand programmiere. Und das springende Punkt: Auf die beschriebene Weise kann jemand - mit nur sehr geringer Eigenleistung und in kürzester Zeit - ein Ergebnis zustande bringen, dass rein Spielstärke-mäßig für viele Zwecke schon ausreicht.

Für eine Aufgabe, für ich die kein Know-How habe, dafür aber Zeitdruck und die Vorgabe "etwas besser als mittelmäßig reicht", würde ich durchaus derartige Lösung in Betracht ziehen. Und damit etwas erreichen, was ich alleine nicht erreichen könnte.

"Assistiertes Klauen" trifft es hervorragend. Wer so vorgeht, lernt nichts - außer wie man klaut. "Besser Klauen mit KI" sozusagen. Aber er lernt nichts über Schach- oder sonstige Programmierung. Er kann sich aber freuen und ggf. andere damit beeindrucken, dass er ohne nennenswerte Vorkenntnisse eine Schachprogramm zusammelgestöpselt hat. Ist irgendwie beachtlich.

Zu ChapGPT kann ich allgemein sagen, dass mit das Ding mittlerweile wirklich Stunden spart, indem es mir Aufgaben für Blödmannsgehilfen abnimmt. Kleines Beispiel: Ein Kunde hatte mir neulich ein großes Excel schickt, in dem Zahlen anderen Zahlen zugeordnet werden. Also sowas wie "123 -> 999". Leider war bei ihm die Zuordnung nicht eindeutig und es waren Zeilen dabei wie "123; 456; 789 -> 999". Damit konnte ich nichts anfangen und wollte schon die Zeilen von Hand auseinandernehmen, was mich etliche Stunden gekostet hätte. Dann wollte ich wissen, ob ChatGPT das kann. Ich lud ihm das Excel hoch und sagte "nimm die Zeilen, die denen links mehrere Zeilen vorkommen und kopiere sie so, dass in jeder neuen Zeile jeweils nur aus der der Ursprungzeile vorkommt." Das war nur halbwegs präzise ausgedrückt, aber er hat es verstanden, richtig gemacht und mir ein überarbeitetesa Excel zurückgebeben. So schnell hätte ich auch kein Tool geschrieben, das mir das macht.
Es ging noch weiter. Ich brauchte diese Zuordnung nämlich in einer Datenbank. Also sagte ich: "Jetzt schreibe mir bitte ein SQL-Script, das die Zeilen aus dem korrigierten Excel als INSERT-Statements für die Tabelle MappingFoo enthält.". Zack - fertig war das Script.

Ich bin noch hin- und hergerissen, was das alles bedeutet, aber in solchen Fällen bin ich beeindruckt. In anderen Fällen bin ich von dem Dämlichkeit des Dings beeindruckt

Liebe Grüße
     Wolfram
Parent - - By Lars B. Date 2024-02-04 13:45 Upvotes 1
Wolfram Bernhardt schrieb:

Zu ChapGPT kann ich allgemein sagen, dass mit das Ding mittlerweile wirklich Stunden spart, indem es mir Aufgaben für Blödmannsgehilfen abnimmt. Kleines Beispiel: Ein Kunde hatte mir neulich ein großes Excel schickt, in dem Zahlen anderen Zahlen zugeordnet werden. Also sowas wie "123 -> 999". Leider war bei ihm die Zuordnung nicht eindeutig und es waren Zeilen dabei wie "123; 456; 789 -> 999". Damit konnte ich nichts anfangen und wollte schon die Zeilen von Hand auseinandernehmen, was mich etliche Stunden gekostet hätte. Dann wollte ich wissen, ob ChatGPT das kann. Ich lud ihm das Excel hoch und sagte "nimm die Zeilen, die denen links mehrere Zeilen vorkommen und kopiere sie so, dass in jeder neuen Zeile jeweils nur aus der der Ursprungzeile vorkommt." Das war nur halbwegs präzise ausgedrückt, aber er hat es verstanden, richtig gemacht und mir ein überarbeitetesa Excel zurückgebeben. So schnell hätte ich auch kein Tool geschrieben, das mir das macht.
Es ging noch weiter. Ich brauchte diese Zuordnung nämlich in einer Datenbank. Also sagte ich: "Jetzt schreibe mir bitte ein SQL-Script, das die Zeilen aus dem korrigierten Excel als INSERT-Statements für die Tabelle MappingFoo enthält.". Zack - fertig war das Script.


Hallo Wolfram,

da ich im Laufe meines Berufslebens auch gar nicht selten ähnliche Sachen machen mußte und immer wieder mal muß, also eine nach groben Kriterien sortierte Menge Daten, von Ausnahmen durchsetzt, in vernünftige Struktur zu bringen, finde ich das sehr spannend.

Aber: Wie genau kontrollierst Du das, was die KI Dir als Resultat hinkippt? Du mußt ja irgendwie sicherstellen, daß da keine Werte vergessen wurden, oder verfälscht, oder hinzugedichtet.

LG
Lars
Parent - - By Wolfram Bernhardt Date 2024-02-06 08:59
Hi Lars!

Ja, gute Frage, so ziemlich die wichtigeste! Denn aus dem Textbereich wissen wir ja, dass die Dinger einem auch gerne mal den größten Blödsinn zusammenfantasieren.

In diesem Fall habe ich Stichproben gemacht und überschlagen, ob die Anzahl hinkommt. Das passte alles.

Aber ich weiss auch, wie ChatGpt4 (das ich verwendet habe) so etwas macht: Er generiert sich im Hintergrund eine Progrämmchen/Skript und lässt das laufen. Das kann man sich auch anzeigen lassen und kurz drüberschauen, ob es korrekt aussieht. Guter Punkt, das werde ich beim nächsten Mal zusätzlich machen.

Viele Grüße
    Wolfram
Parent - - By Lars B. Date 2024-02-06 21:40
Na, wenn man sich das Script angucken kann, hilft das ja ungemein, obwohl sowas auch sehr schnell sehr unübersichtlich werden kann. Wie auch immer, mit all dem habe ich, entschuldige, Deine eigentliche Botschaft völlig vergessen:

Wolfram Bernhardt schrieb:

Für eine Aufgabe, für ich die kein Know-How habe, dafür aber Zeitdruck und die Vorgabe "etwas besser als mittelmäßig reicht", würde ich durchaus derartige Lösung in Betracht ziehen. Und damit etwas erreichen, was ich alleine nicht erreichen könnte.

Ich habe dabei ein komisches Gefühl, denn es widerspricht dem zweiten Grundgesetz der Informatik: "There is no free lunch". Probleme haben eine ihnen innewohnende, irgendwann nicht mehr reduzierbare Komplexität, und wenn ich die jetzt mit einem Fingerschnippen lösen können soll, muß ich irgendwomit dafür bezahlen. Es gibt nüscht umsonst. Allerdings kann ich's auch nicht gut begründen, was da jetzt schief sein soll. Vielleicht gibt's also doch mit der KI einen free lunch? 
Parent - By Wolfram Bernhardt Date 2024-02-14 17:00
Zitat:
Ich habe dabei ein komisches Gefühl, denn es widerspricht dem zweiten Grundgesetz der Informatik: "There is no free lunch". Probleme haben eine ihnen innewohnende, irgendwann nicht mehr reduzierbare Komplexität, und wenn ich die jetzt mit einem Fingerschnippen lösen können soll, muß ich irgendwomit dafür bezahlen. Es gibt nüscht umsonst. Allerdings kann ich's auch nicht gut begründen, was da jetzt schief sein soll. Vielleicht gibt's also doch mit der KI einen free lunch? 


Ich denke, es ist einfach ein weiteres Hilfsmittels. Im Laufe der letzten .. öhm.. 40 Jahre, ich die aktiv programmiere, sind schon Dinge einfacher geworden. Muss ja auch so sein, sonst hätten wir keinen Fortschritt. Probleme, die früher wirklich schwierig selber zu lösen waren, bekommt man heute in gängigen Frameworks geschenkt (zum Beispiel sauber implementierte Hashtables und da meine ich jetzt gar nicht die Schach-spezifischen).

Ist das free lunch? Es mag so aussehen, aber gleichzeitig mit der Verbesserung der Hilfsmittel sind die Anforderungen an das, was man leisten soll, mit gestiegen. Darum bleibt free lunch weiterhin unerreichbar, weil die Dinge, für die es früher lunch gegeben hätte, heute als "mal schnell nebenbei" vorausgesetzt werden.

Also früher gab es Probleme der Schwierigkeitsstufen 1-100, 100 konnten nur die besten lösen und alles darüber war unerreichbar. Heute können viele 100 lösen, dafür gibt es Probleme bis Stufe 500 - und 500 können auch wieder nur die Besten lösen - und das sind keine KIs

Liebe Grüße
     Wolfram
Parent - - By Kurt Utzinger Date 2024-01-27 21:05
Wolfram Bernhardt schrieb:

Hallo!

Bin gerade über folgenden Artikel gestolpert:

<a class='ura' href='https://de.chessbase.com/post/eine-schachengine-selber-programmieren-ein-schnellkurs'>https://de.chessbase.com/post/eine-schachengine-selber-programmieren-ein-schnellkurs</a>

Zuerst musste ich etwas lachen, aber eigentlich ist die Idee nicht nur witzig, sondern zeigt auch, wo wir gerade so stehen. Das hier beschriebene Vorgehen ist:

1) Nimm ein Lib, die die Schachregeln enthält.
2) Lasse ChatGPT eine Hülle erstellen, die den Minimax-Algorithmus implementiert.
3) Die Stellungsbewertung in den Knoten des Suchbaum übernimmt ein frei heruntergeladenes Netzwerk, das über eine einfache Schnittstellen-Bibliothek angesprochen wird.

Fertig.

Ich schätze, ich würde 2-4 Stunden brauchen, bis ich das am Laufen hätte (und ich würde direkt Alpha-Beta statt Minimax implementieren).
Und womöglich würde das schon recht stark spielen.

Bin noch nicht ganz sicher, ob ich das zwischen den Jahren mal ausprobiere, aber früher habe ich Wochen und vielleicht Monate in meine kleinen Engines gesteckt... Solch eine Engine kann nun aber jeder mit grundlegenden Kenntnissen zusammenstöpseln.

Ich finde das eher faszinierend als erschreckend. Wie seht Ihr das?

Viele Grüße
     Wolfram


Hallo Wolfram
Für mich ist das mehr als abschreckend. Wenn nun schon (fast) jeder mit grundlegenden Kenntnissen
eine stark spielende Schachengine zusammenbasteln kann, hört der Spass auf und mit solchen
Engines möchte ich mich nicht befassen. Abgesehen davon: auf was kann/soll der "Hersteller" noch
stolz sein können
- auf seine nicht vorhandene Eigenleistung?
- auf sein purers Abkupfern?
Wenn das jemand aus purem Spass für sich selbst macht, um sich näher mit KI und den damit verbundenen
Möglichkeiten zu befassen, dann verstehe ich das noch. Und zwar solange, bis dieser JEMAND nicht das
Gefühl hat, er müsse seine Engine als eigenständige Leistung der Öffentlichkeit präsentieren.
Beste Grüsse
Kurt
Parent - By Peter Martan Date 2024-01-27 21:34 Edited 2024-01-27 22:04
Kurt Utzinger schrieb:

Wenn das jemand aus purem Spass für sich selbst macht, um sich näher mit KI und den damit verbundenen
Möglichkeiten zu befassen, dann verstehe ich das noch. Und zwar solange, bis dieser JEMAND nicht das
Gefühl hat, er müsse seine Engine als eigenständige Leistung der Öffentlichkeit präsentieren.

Na, davon war ja aber auch zunächst mal keine Rede, und wenn's jemand versuchte, der selbst noch keine Ahnung von Schachprogrammen hat, würde er ja auch sofort kläglich scheitern, es sei denn, er bediente sich großzügig an vorhandenen open source Programmen, dann käme es drauf an, ob er's dokumentiert und den Lizenzvorschriften entsprechend macht oder nicht.
Aber das Prinzip, sich von KI beim Erstellen eines ersten Versuchsprogrammes helfen zu lassen, um den Umgang mit Code zu lernen, finde ich prinzipiell nicht verwerflicher, als es ohne KI auf der Basis bestehender Programme zu machen, von denen's ja auch viele gute zu eigens diesem Zweck (des Lehrens) gibt. Da hat Ulrich hier

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=167489#pid167489

mal vor einer Weile auch ein Thread dazu eröffnet.

Was die KI als solche angeht, und was man alles mit ihr machen kann heutzutage, fielen mir sehr viele sehr viel doofere (und gefährlichere) Beispiele ein, sie unfüglich zu verwenden. Mir persönlich machen immer noch mehr als sowas Harmloses am meisten die nicht amateurhaften Anwendungen von Leuten Sorgen, die genau wissen, was sie tun, aber es nicht zu sozial verträglichen Zwecken machen, und bei den amateurhaften diejenigen, die unabsichtlich oder absichtlich Denen in die Hände arbeiten, die aus dem unbedarften Umgang Anderer damit ihren Nutzen ziehen. Aber das gehört schon wieder alles nicht hierher.

Was die Schachprogramme angeht, ob man nicht from scratch, wie auch Lars sinngemäß gemeint hat, glaube ich, mehr lernen wird, gerade was die Grundlagen angeht, müsste uns jemand sagen, der beides probiert hat, aber das scheitert an der zeitlichen Undurchführbarkeit eines Blindversuchs, hat man's mal auf die eine Art gelernt, kann man's (und will man's ja auch) nicht mehr rückgängig machen, um es von Neuem auf die andere Art zu lernen.
Vielleicht hält uns Wolfram ja auf dem Laufenden, ob er persönlich weitere Erfahrungen im Umgang mit den neuen Medien diesbezüglich macht.
Parent - - By Wolfram Bernhardt Date 2024-01-29 17:46
Hallo Kurt,

ja, völlig richtig. Es ist auch abschreckend. Oder erschreckend. Und ich kann gut verstehen, dass Du Dich mit solchen "Engines" nicht beschäftigen möchtest. Ich mich auch nicht, jedenfalls nicht intensiv. Und ich würde auch nicht vermuten, dass sich jemand mit so einem Machwerk ernsthaft an die Öffentlichkeit wagt. Jedenfalls nicht mit der Behauptung, er hätte eine tolle Engine geschrieben.

Aber wenn wir von Schach-Engines mal abstrahieren und sagen "Menschen können mit sehr bescheidenen Fähigkeiten auf einem Gebiet plötzlich Dinge erreichen, die früher absolut unvorstellbar gewesen wären." Ist das nicht auch... gut?

Ich habe so ein Bauchgefühl, dass es auch schwieriger wird, zu unterscheiden, ob jemand wirklich was kann und nur besser als früher so tun kann als ob.

Aber irgendwie muss es auch was Gutes haben, dass man mittelmäßig zustandebringen kann, wo früher gar nichts möglich war.

Viele Grüße
     Wolfram
Parent - By Max Siegfried Date 2024-03-19 18:37
Software entwickelt sich ständig weiter:

https://gpt4all.io/index.html installieren und Model auswählen:

Siehe Modelle:
Orca 2 Full
Wizard v1.2
Hermes
Snoozy
...

Jedes Model ist ungefähr 7 GB groß (und damit doppelt so groß wie GTP4ALL und Co.)
Jedes Model benötigt 16 GB RAM (und damit doppelt so viel wie GTP4ALL und Co.)
Jedes Model wurde mit ungefähr 13 Billionen Parametern trainiert (und hat damit fast doppelt so viele Parameter im Vergleich zu "nur" 7 Billionen Parametern von GTP4ALL und Co.)

Man darf jetzt schon davon ausgehen, dass die Modelle Ende 2024 / Anfang 2025 bereits:
15 GB groß sein werden
32 GB RAM benötigen
26 Billionen Parameter enthalten

Ich hoffe das eure MacBooks mindestens 64 GB RAM haben.
Up Topic Hauptforen / Schachprogrammierung / Schachprogramm in vier Stunden

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill