KI - doch nur Daten ?

0 views
Skip to first unread message

Jens Kallup

unread,
Mar 6, 2023, 5:06:04 PMMar 6
to
Hallo,
ich glaube, ich habe jetzt verstanden, wie die ganzen
KI-Programme funktionieren - nämlich nach einen einfachen
und simplen Verfahren:

Es werden Daten gesammelt (im Quelltext sinf es 10 Testwerte),
die dann durch verschiedene Algorithmen durchlaufen werden.

Anbei ein kleines Pascal Script, das mit dem FPC compiliert
werden kann.

Hier habe ich nur eine Aktivierungs-Funktion verwendet - die
sich Sigmoid nennt - das ist diese Funktion, den den S-förmigen
Graph zeichnet.

Happy Codening, Jens

P.S.: Die Tage mehr ... ich glaube, ich habe da schon eine Idee,
was man da so fuchteln kann...

{$mode delphi}
program neuro;

var
i: integer;
var
input : array[0..9] of real = (
0.1, 0.2, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 0.9, 1.0
);
output: array[0..9] of real;

function sigmoid(x: real): real;
begin
result := 1 / (1 + exp(-x));
end;

procedure AktivierungsFunktion(
input : array of real; var
output: array of real);
begin
for i := 0 to Length( input ) - 1 do
begin
output[i] := sigmoid( input[i] );
end;
end;

begin
AktivierungsFunktion(input, output);

for i := 0 to Length( output ) - 1 do
begin
WriteLn(i,': ', output[i]);
end;
end.

--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

Jens Kallup

unread,
Mar 8, 2023, 7:15:12 AMMar 8
to
Hallo,

inspririert vom vorhergehenden Post, habe ich mich gestern
mal hingesetzt und ein "kleines" Einführungsbeispiel
geschrieben, dass dann für Kinder oder angehende Programmierer
gut zu verstehen ist - denke ich mal...

Es wird auf eine Eingabe gewartet.
Diese Eingabe verwende ich zum Überprüfen der Input-Daten.

stimmt die Eingabe mit den hinterlegten Daten überein, so
wird mittels Zufallswerten ein kurzer Dialog ermöglicht.

Alles noch ein wenig Alpha, mit wenigen Daten.

mit der Aktievierungs-Funktion muss ich nochmal über den
Quellcode schauen, wie ich das so implementiere, das keine
Wiederholungen entstehen.

Dafür habe ich das Record-Field: "rand" verwendet, dass dann
per Zufallswert eine Antwort liefert.

Dahingehend, muß ich das Netz noch trainieren.

Alles noch statisch - aber wer weiß, vielleicht nützt es ja
jemanden, der eine Idee braucht um mit einen KI-Programm etwas
anfangen zu können.

Danke fürs Lesen.

Jens

P.S.: Der Link zum repro:
https://github.com/paule32/neuronal_net_for_kids

Joachim Pimiskern

unread,
Mar 12, 2023, 6:17:11 AMMar 12
to
Am 06.03.2023 um 23:06 schrieb Jens Kallup:
> ich glaube, ich habe jetzt verstanden, wie die ganzen
> KI-Programme funktionieren - nämlich nach einen einfachen
> und simplen Verfahren:

Neuronale Netze sind nur eines der zahlreichen Teilgebiete
der KI. Einen Einblick zu bekommen, ist wirklich einfach.
Aber es ist ein bißchen mehr nötig, als Du es beschrieben hast.
Man möchte im allgemeinen Neuronen lernfähig gestalten.
Hier das Standardmodell.

Ein Neuron hat mehrere Eingänge, die mit W[i] gewichtet, d.h.
verstärkt oder abgeschwächt werden. Hinzu kommt ein
konstanter Schwellwert T, der den Eingängen entgegenwirkt.

aktivierung := 0.0;
for i := 0 to anzahl_eingaenge - 1 do
begin
aktivierung := aktivierung + input[i] * w[i];
end;

aktivierung := aktivierung - T;
output := sigmoid(aktivierung );


Beachte: Du hast in der Regel viele Neuronen, die alle
für sich eine solche Rechnungen durchführen. Die Neuronen
können auch untereinander vernetzt sein, derart, daß der Output
eines Neurons ein Input eines anderen Neurons ist.
Das berühmte Neuronale Netz.

Die Belegung des Eingabevektors input[] stammt aus
einer Menge von Trainingsvektoren. In der Regel hast Du
auch einen Soll-Output der Dimension z.B. m. Der gibt an,
welchen Output m dafür vorbestimmte Neuronen des Netzes
haben sollten, nachdem die Rechnung durchgelaufen ist.

Das Lernen besteht nun darin, die Gewichte w[i] und
den Schwellwert T jedes Neurons so abzuändern, daß
der Eingabevektor möglichst gut auf den Soll-Output
abgebildet wird.

Grüße,
Joachim
Reply all
Reply to author
Forward
0 new messages