WIe schreibt man eine(einfache) KI ?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

Weil es gerade so modern ist, Wie schreibt man eine einfache KI für zB. simple Spiele ?

Für mich ist das Thema ziemlich abstrakt. Ich kann SPS und Business Auswertungen programmieren (auch so wie es der Auftraggeber haben will und nicht wie die realität ist) aber für KI oder Algorithmen die ähnlich sind, fehlt mir komplett die Fantasie. Und nein, ich will nicht ChatGPT dannach fragen :shock: :D

Habt ihr schon in dieser Richtung Erfahrung ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5453
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von Mathias »

Suchst du etwas in dieser Art ?
Ich hatte da mal eine Kollisionsabfrage programmiert, wen sich die Kreise berühren, wechseln sie die Richtung und werden kurt rot.

https://github.com/sechshelme/Lazarus-O ... it_Kreisen
Dateianhänge
Bildschirmfoto vom 2022-12-17 13-05-00.png
Bildschirmfoto vom 2022-12-17 13-05-00.png (11.47 KiB) 576 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

Das ist keine KI, sondern einfach nur handwerkliche Arbeit. :D

Beispiel - wenn wer das Spiel Risiko noch kennt - wie baut man KI die die Züge bewertet. Ich rede da noch nicht vom Schach, aber vielleicht kann da wer erklären, wie das mit der Bewertung der Züge geht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4495
Registriert: Fr 8. Apr 2011, 09:01

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von wp_xyz »

af0815 hat geschrieben:
Sa 17. Dez 2022, 12:41
Und nein, ich will nicht ChatGPT dannach fragen :shock: :D
Warum nicht?

Frage:

Wie schreibt man eine KI in Pascal?

Antwort:
Um eine KI in Pascal zu schreiben, gibt es einige Schritte, die Sie beachten sollten:

Zunächst sollten Sie sich mit der Syntax und den Konstrukten von Pascal vertraut machen, da dies die Grundlage für das Schreiben von Code in jeder Programmiersprache ist.

Überlegen Sie sich, welches Problem Sie mit Ihrer KI lösen möchten. Mögliche Anwendungen für KI umfassen zum Beispiel maschinelles Lernen, natürliche Sprachverarbeitung oder computergestützte Entscheidungsfindung.

Sammeln Sie Daten, die Ihre KI verwenden kann, um das Problem zu lösen. Dies könnten beispielsweise Textdokumente, Bilder oder Tabellen sein, je nachdem, welches Problem Sie lösen möchten.

Entwickeln Sie einen Algorithmus, der die Daten nutzt, um das Problem zu lösen. Es gibt viele verschiedene Algorithmen, die für KI verwendet werden können, wie beispielsweise neuronale Netze, Entscheidungsbäume oder k-Nearest-Neighbor. Wählen Sie einen Algorithmus, der für das von Ihnen gestellte Problem geeignet ist.

Implementieren Sie Ihren Algorithmus in Pascal. Dies bedeutet, dass Sie den Code schreiben, der den Algorithmus ausführt und die Daten verarbeitet.

Testen und optimieren Sie Ihre KI. Verwenden Sie Testdaten, um zu überprüfen, ob Ihre KI das Problem korrekt löst, und analysieren Sie, wie gut sie funktioniert. Anschließend können Sie den Algorithmus oder die Daten optimieren, um die Leistung zu verbessern.

Es ist wichtig zu beachten, dass das Schreiben einer KI ein komplexer Prozess ist, der viel Zeit und Kenntnisse erfordern kann. Es lohnt sich daher, sich gründlich mit der Materie auseinanderzusetzen und sich gegebenenfalls professionelle Hilfe zu suchen.


Naja, recht viel schlauer ist man nun auch nicht. Ich habe die Frage spezifischer gestellt:

Frage:
Zeige mir KI-basierten Code, um ein Dreieck, einen Kreis, ein Quadrat zu erkennen
Antwort:
Hier ist ein Beispiel für KI-basierten Code, der verwendet werden könnte, um ein Dreieck, einen Kreis und ein Quadrat in einem Bild zu erkennen:

Code: Alles auswählen

// Import required libraries
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# Load the training data
X_train = np.load('train_data.npy')
y_train = np.load('train_labels.npy')

# Load the test data
X_test = np.load('test_data.npy')
y_test = np.load('test_labels.npy')

# Build the model
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(3, activation='softmax'))

# Compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Train the model
model.fit(X_train, y_train, epochs=10, batch_size=64)

# Evaluate the model on the test data
test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test accuracy:', test_acc)

# Use the model to make predictions on new images
predictions = model.predict(new_images)
predicted_labels = np.argmax(predictions, axis=1)
Dieser Code nutzt das TensorFlow-Bibliothek, um ein neuronales Netzwerk zu erstellen und zu trainieren, das in der Lage ist, dreieckige, runde und quadratische Formen in Bildern zu erkennen. Der Code lädt zunächst Trainings- und Testdaten, die im Voraus erstellt wurden und die Bilder von Dreiecken, Kreisen und Quadraten enthalten. Anschließend wird das neuronale Netzwerk mit Hilfe von Convolutional Neural Networks (CNNs) erstellt und kompiliert. Der Code trainiert dann das Netzwerk anhand der Trainingsdaten und evaluiert seine Leistung anhand der Testdaten. Schließlich kann der Code verwendet werden, um Vorhersagen für neue Bilder zu treffen.

Es ist wichtig zu beachten, dass dieser Code nur ein Beispiel ist und dass es viele verschiedene Möglichkeiten gibt, eine KI zu schreiben


Frage
Und wie geht das in Pascal?

Antwort
In Pascal könnten Sie ein neuronales Netzwerk verwenden, um Formen in Bildern zu erkennen, indem Sie eine Bibliothek wie FANN (Fast Artificial Neural Network) verwenden. FANN ist eine Open-Source-Bibliothek, die es Ihnen ermöglicht, neuronale Netze in Pascal zu implementieren.

Hier ist ein Beispiel für Code, der in Pascal verwendet werden könnte, um ein neuronales Netzwerk zu erstellen und zu trainieren, das in der Lage ist, dreieckige, runde und quadratische Formen in Bildern zu erkennen:

Code: Alles auswählen

{$mode objfpc}
{$H+}

uses
  fann, sysutils;

const
  NUM_INPUTS = 784;  // 28x28 pixel images
  NUM_OUTPUTS = 3;   // Triangle, circle, square
  NUM_HIDDEN_LAYERS = 1;
  NUM_NEURONS_HIDDEN = 64;
  NUM_TRAINING_SAMPLES = 60000;
  NUM_TEST_SAMPLES = 10000;
  LEARNING_RATE = 0.7;
  MAX_EPOCHS = 30;
  DESIRED_ERROR = 0.001;

var
  ann: pfann;
  input, output: array of single;
  i, j: integer;
  train_data, test_data: pfann_train_data;
  epochs_between_reports: longint;
  error: single;

begin
  // Create the neural network
  ann := fann_create_standard(NUM_LAYERS, NUM_INPUTS, NUM_NEURONS_HIDDEN, NUM_OUTPUTS);

  // Set the learning rate
  fann_set_learning_rate(ann, LEARNING_RATE);

  // Load the training data
  train_data := fann_read_train_from_file('train_data.data');
  fann_init_weights(ann, train_data);

  // Train the network
  epochs_between_reports := fann_get_total_iterations(ann) div fann_get_num_MSE(ann);
  fann_train_on_data(ann, train_data, MAX_EPOCHS, epochs_between_reports, DESIRED_ERROR);

  // Test the network on the test data
  test_data := fann_read_train_from_file('test_data.data');
  error := fann_test_data(ann, test_data);
  writeln('Test error: ', error);

  // Clean up
  fann_destroy_train(train_data);
  fann_destroy_train(test_data);
  fann_destroy(ann);
end.
Dieser Code erstellt ein neuronales Netzwerk mit FANN und lädt Trainings- und Testdaten, die im Voraus erstellt wurden und die Bilder von Dreiecken, Kreisen und

Leider bricht die Kommunikation häufig ab, wahrscheinlich wegen der hohen Zugriffszahlen. Ich könnte die letzte Antwort nochmals anfordern, aber dazu habe ich gerade keine Lust mehr... Ich habe auch nicht getestet, ob der vorgeschlagene Code funktioniert

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1392
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von corpsman »

Kommt natürlich immer drauf an wie man Ki definiert, ich persöhnlich nenne das meistens Heuristik.

Wenn du z.B. eine Heuristik schreibst, welche bei einem Einfachen Kartenspiel wie Knack deinen Gegenspieler darstellt wäre das auch schon für viele eine KI, wo es doch in Wirklichkeit einfach nur sehr viele If Bedingungen in Reihe sind.

Zur Zeit stehen auch sehr viele auf Neuronale Netze, das sind am Ede des Tages riesen große Matrizen deren Werte fein justiert werden, das als KI zu bezeichnen ....

Das was af0815 anspricht würde sich dann Alpha-Beta-Suche nennen und da würde speziell mir es einfacher fallen das for Schach zu implementieren als für Risiko ;)
--
Just try it

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2530
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von m.fuchs »

wp_xyz hat geschrieben:
Sa 17. Dez 2022, 13:13
af0815 hat geschrieben:
Sa 17. Dez 2022, 12:41
Und nein, ich will nicht ChatGPT dannach fragen :shock: :D
Warum nicht?
Weil wir ansonsten die Boardregeln so ändern, dass ChatGPT-Antworten gelöscht werden.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

m.fuchs hat geschrieben:
Sa 17. Dez 2022, 13:24
wp_xyz hat geschrieben:
Sa 17. Dez 2022, 13:13
af0815 hat geschrieben:
Sa 17. Dez 2022, 12:41
Und nein, ich will nicht ChatGPT dannach fragen :shock: :D
Warum nicht?
Weil wir ansonsten die Boardregeln so ändern, dass ChatGPT-Antworten gelöscht werden.
+1

Edit:
Das FANN gibt es hier http://leenissen.dk/fann/wp/ im englischen Forum hat schon wer einen Port nach fpc versucht/gemacht so vor 10 Jahren.

Wenn mir wer erklären kann, was ich da mit neuronalen Netzwerken machen kann, so wäre das super. Ein reine Bildmustererkennung ist ja fürmich noch vorstellbar, aber wie das ganze bei einem Spiel im Fluss ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4495
Registriert: Fr 8. Apr 2011, 09:01

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von wp_xyz »

m.fuchs hat geschrieben:
Sa 17. Dez 2022, 13:24
wp_xyz hat geschrieben:
Sa 17. Dez 2022, 13:13
af0815 hat geschrieben:
Sa 17. Dez 2022, 12:41
Und nein, ich will nicht ChatGPT dannach fragen :shock: :D
Warum nicht?
Weil wir ansonsten die Boardregeln so ändern, dass ChatGPT-Antworten gelöscht werden.
Davon war zwar noch nie die Rede hier, und ich habe überhaupt kein Problem damit. Aber ich finde so eine Regel löst gar nichts, denn es wird niemand erkennen können, ob eingesandter Code von ChatGPT geschrieben wurde (sofern er funktioniert, und wenn nicht, dann kann das auch einem Menschen passieren).

Verstehe mich nicht falsch. Ich stehe ChatGPT durchaus kritisch gegenüber, gerade hinsichtlich der hohen Fehlerrate. Aber wir sollten uns dieser neuen Welt nicht verschließen und ihre Vorteile nutzen. Ich wäre nie in der Lage gewesen, innerhalb von 2 Minuten konkreten Code für ein KI-Problem zu schreiben. Ich nehme mal an, der von ChatGPT produzierte funktioniert, was wahrscheinlich nicht der Fall ist, und dann hätte ich halt noch ein paar Minuten angehängt und den Code solange korrigieren lassen, bis es geht

Benutzeravatar
kupferstecher
Beiträge: 395
Registriert: Do 17. Nov 2016, 11:52

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von kupferstecher »

wp_xyz hat geschrieben:
Sa 17. Dez 2022, 14:02
Verstehe mich nicht falsch. Ich stehe ChatGPT durchaus kritisch gegenüber, gerade hinsichtlich der hohen Fehlerrate. Aber wir sollten uns dieser neuen Welt nicht verschließen und ihre Vorteile nutzen. Ich wäre nie in der Lage gewesen, innerhalb von 2 Minuten konkreten Code für ein KI-Problem zu schreiben.
War doch ein netter Gag auf die Frage nach KI per KI zu antworten.
Was den konkreten Code anbelangt, das ist halt nur ein Bibliotheksaufruf. Ob das eine zufriedenstellende Antwort ist?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

kupferstecher hat geschrieben:
Sa 17. Dez 2022, 15:14
War doch ein netter Gag auf die Frage nach KI per KI zu antworten.
Was den konkreten Code anbelangt, das ist halt nur ein Bibliotheksaufruf. Ob das eine zufriedenstellende Antwort ist?
Nein ist es nicht.
Es ist ein Aufruf eine Bibliothek, von der nicht einmal eine stabile Version für FPC/Lazarus gibt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4495
Registriert: Fr 8. Apr 2011, 09:01

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von wp_xyz »

af0815 hat geschrieben:
Sa 17. Dez 2022, 15:37
kupferstecher hat geschrieben:
Sa 17. Dez 2022, 15:14
War doch ein netter Gag auf die Frage nach KI per KI zu antworten.
Was den konkreten Code anbelangt, das ist halt nur ein Bibliotheksaufruf. Ob das eine zufriedenstellende Antwort ist?
Nein ist es nicht.
Es ist ein Aufruf eine Bibliothek, von der nicht einmal eine stabile Version für FPC/Lazarus gibt.
Wenn ich die Frage gestellt hätte, weil ich irgendwas mit KI machen möchte/müsste, aber nicht wüsste, wo ich anfangen sollte, wäre der Link auf jeden Fall besser gewesen als eine seitenlange ausufernde Diskussion - das Geschwurbel, das man dem ChatGPT vorwirft, gibt es natürlich schon lange bei mit HI ("human intelligence")... Immerhin hätte ich etwas zum Ausprobieren gehabt, das mich weitergebracht hätte, auch wenn es vielleicht nicht optimal gewesen wäre.

[EDIT]
Ich muss mich korrigieren: Ich habe mir gerade das FANN gecloned und gesehen, dass das nur C-Code ist. OK - das wäre dann auch nicht zufriedenstellend...

Benutzeravatar
Winni
Beiträge: 1535
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von Winni »

Hi!

Aus:

https://futurezone.at/produkte/chatgpt- ... /402249810

Viele Antworten klingen plausibel. Sie könnten aber falsch sein, warnt das Unternehmen. Auch voereingenommene Inhalte könne man nicht ausschließen, heißt es.

Stimmt. Über Sex redet er schon mal garnicht. Muss sich ja auch nicht fortpflanzen.

"Entwickelt wurde der AI Chatbot von Open AI. ...
Hinter Open AI steht die gleichnamige Non-Profit-Organisation, die sich mit der Erforschung von künstlicher Intelligenz beschäftigt. Geldgeber sind unter anderem Elon Musk und Microsoft."


Ein Rechtsradikaler und eine Firma, die seit über 40 Jahren schrottigen Code abliefert.

Kopfschüttel.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

Hier geht es NICHT um ChatGPT. Dazu gibt es einen eigenen Thread.

Die Frage war: Wie schreibt man eine einfache KI.

Vielleicht noch die Frage an Corpsmann, der sich ja mit Schach KI beschäftigt hat. Wie steigt man in die Materie ein ?

Edit: Der Beitrag ist gut https://www.i-am.ai/de/build-your-own-ai.html
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Roland Chastain
Beiträge: 137
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von Roland Chastain »

Hallo!

Hier ist ein Beispiel für ein Schachprogramm, kurz und leicht verständlich: schach.txt

(Wenn Sie interessiert sind, gibt es andere Pascal Schachprogramme hier, und also hier.)

Für welche Art von Spiel möchten Sie eine KI entwerfen?
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: WIe schreibt man eine(einfache) KI ?

Beitrag von af0815 »

Roland Chastain hat geschrieben:
Sa 17. Dez 2022, 19:38
Für welche Art von Spiel möchten Sie eine KI entwerfen?
Beispiel das hier https://de.wikipedia.org/wiki/Risiko_(Spiel) . Wobei man dann die einfachsten Regeln übernehmen kann.

Es geht mir darum mit der Materie in Kontakt zu kommen, weniger darum, das das jetzt wirklich eine gute Engine wird :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten