Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Ekkehard
Beiträge: 68
Registriert: So 12. Feb 2023, 12:42
OS, Lazarus, FPC: Windows Lazarus 3.6, FPC 3.2.2
CPU-Target: 64-Bit
Wohnort: Hildesheim

Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von Ekkehard »

Hallo,
ich wollte endlich mal mein Defizit in Sachen KI verringern und hatte mit die https://github.com/joaopauloschuler/neural-api heruntergeladen. Das ist schon beeindruckend was das so kann.
Trotz vieler Beispiele verstehe ich davon nicht viel. Wie so eine KI grundsätzlich funktioniert habe ich verstanden, nur die Wege zu den Beispielen bleiben mir verborgen.
Hier einige Zeilen aus dem SimpleImageClassifier:

Code: Alles auswählen

 NN := TNNet.Create();
    NN.AddLayer([
      TNNetInput.Create(32, 32, 3),
      TNNetConvolutionLinear.Create({Features=}64, {FeatureSize=}5, {Padding=}2, {Stride=}1, {SuppressBias=}1),
      TNNetMaxPool.Create(4),
      TNNetMovingStdNormalization.Create(),
      TNNetConvolutionReLU.Create({Features=}64, {FeatureSize=}3, {Padding=}1, {Stride=}1, {SuppressBias=}1),
      TNNetConvolutionReLU.Create({Features=}64, {FeatureSize=}3, {Padding=}1, {Stride=}1, {SuppressBias=}1),
      TNNetConvolutionReLU.Create({Features=}64, {FeatureSize=}3, {Padding=}1, {Stride=}1, {SuppressBias=}1),
      TNNetConvolutionReLU.Create({Features=}64, {FeatureSize=}3, {Padding=}1, {Stride=}1, {SuppressBias=}1),
      TNNetDropout.Create(0.5),
      TNNetMaxPool.Create(2),
      TNNetFullConnectLinear.Create(10),
      TNNetSoftMax.Create()
    ]);
Mir fehlt die Information, warum das Netz genau diese Elemente benötigt, warum mit den entsprechenden Parametern usw.
Offensichtlich handelt es sich bei den Elemente "ConvolutionLinear", "MaxPool", "ConvolutionReLU", etc. um feststehende Begriffe, deren Hintergründe als bekannt vorausgesetzt werden. Sucht man im Netzt nach diesen Begriffen, landet man relativ schnell auf Seiten wie dieser https://www.nickmccullum.com/python-dee ... r-pooling/, die auf eine Python Implementierung hinweisen, die auf diesen Elementen beruht.

Deshalb meine Frage an Euch, ob mir jemand Literatur (Gerne englischsprachig) empfehlen kann, in denen insbesondere diese Aspekte erläutert werden?
Auch hier finde ich natürlich bei der Internetsuche einige Werke, aber leider kann ich nicht erkennen, ob die o.a. Aspekte enthalten sind.
Vielen Dank!

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

Re: Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von wp_xyz »

Warum stellst du die Frage nicht im englischen Forum? Da ist der Autor des von dir erwähnten Packages gelegentlich unterwegs; von ihm wirst du sicher die kompetenteste Antwort bekommen.

Ekkehard
Beiträge: 68
Registriert: So 12. Feb 2023, 12:42
OS, Lazarus, FPC: Windows Lazarus 3.6, FPC 3.2.2
CPU-Target: 64-Bit
Wohnort: Hildesheim

Re: Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von Ekkehard »

Danke! Ich wusste offen gesagt nicht wo genau ich mich da einsortieren könnte. Ich suche nochmal.

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

Re: Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von wp_xyz »

Im englischen Forum heißt er "schuler". Suche nach seinen Beiträgen.

TSchnuckenbock
Beiträge: 118
Registriert: Do 20. Jul 2017, 23:47
OS, Lazarus, FPC: Win7 und Win10
CPU-Target: xxBit
Wohnort: Südheide (Schnuckenland)

Re: Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von TSchnuckenbock »

Kennst du schon

https://de.wikipedia.org/wiki/Convoluti ... al_Network

Da geht's um "Faltung". "

ReLU" steht für Rectified Linear Unit.

https://de.wikipedia.org/wiki/Rectifier ... Netzwerke)

Ich muß mir das auch demnächst mal genauer ansehen.

Ich vermute, du mußt viel Zeit mitbringen. ;-)

Ekkehard
Beiträge: 68
Registriert: So 12. Feb 2023, 12:42
OS, Lazarus, FPC: Windows Lazarus 3.6, FPC 3.2.2
CPU-Target: 64-Bit
Wohnort: Hildesheim

Re: Literaturempfehlungen zum Thema KI, insb. CAI Neural API

Beitrag von Ekkehard »

Ich bin mit meinen Bemühungen etwas voran gekommen und vielleicht findet jemand die folgenden Zeilen hilfreich.
1.) Die CAI Neural API ist beschrieben (https://github.com/joaopauloschuler/neu ... /README.md) als "Schwester-Projekt" des python basierenden "Keras-Projekts"
2.) Im Readme gibt es eine Tabelle Closest Layer Types to Other APIs (https://github.com/joaopauloschuler/neu ... n-progress), welche einige elementare Definitionen der Keras Bibliothek denen in der CAI gegenüberstellt.
3.) Zu Keras passend gibt es ein Werk mit dem Titel "Deep Learning with Python" von François Cholette, welches demnächst in der dritten Ausgabe erscheint und dessen erste Ausgabe als PDF in den Tiefen des Internet zu finden ist.
4.) Dort wird ein als "Hello World"-Beispiel gekennzeichneter 3-Zeiler eingeführt, der die Ziffernerkennung des NIST macht.
5.) Dieses Beispiel findet sich auch in etwas erweiterter Form als SimpleMNist in den CAI Beispielen (https://github.com/joaopauloschuler/neu ... impleMNist)
6.) Die Tabelle aus 2.) erlaubt nun die Übersetzung der zwei python Zeilen aus dem Buch

Code: Alles auswählen

    network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
    network.add(layers.Dense(10, activation='softmax'))
in das folgende 5 Layer-Statement zu (wenn man so will ein VerySimpleMNist):

Code: Alles auswählen

      TNNetInput.Create(28, 28, 1),
      TNNetConvolutionLinear.Create(
        {Features=}32,     // Number of output features
        {FeatureSize=}5,   // 5x5 kernel size
        {Padding=}2,       // Padding of 2 pixels
        {Stride=}1,        // Stride of 1 pixel
        {SuppressBias=}1   // Suppress bias
      ),
      TNNetFullConnectReLU.Create({Size=}32),
      TNNetFullConnectLinear.Create({Size=}10),
      TNNetSoftMax.Create({SkipBackpropDerivative=}1)
Einige Parameter wie
{Features=}32, // Number of output features
{FeatureSize=}5, // 5x5 kernel size
{Padding=}2, // Padding of 2 pixels
sind im python Beispiel nicht enthalten (dort gibt es einen Wert von 512, dessen Zuordnung unklar ist) und folglich in ihrer Wirkung noch unklar, führen aber bei Veränderung nur zu gradueller Veränderung des Ergebnisses hinsichtlich der Genauigkeit, bzw Prozessgeschwindigkeit, das sei zum jetzigen Zeitpunkt als verschmerzbar anzusehen.
(Setzt man bspw. die {FeatureSize=} auf 8 statt 5 erhöht sich die Genauigkeit von 0,9665 auf 0,9818, verkleinert man dann die "Features" und "Size" von 32 auf 16, halbiert sich die Prozessdauer und die Genauigkeit sinkt auf 0,9631)
Damit sollte das Werk "Deep Learning with Python" von François Cholette geeignet sein, den theoretischen Hintergrund zur Anwendung der CAI Neural API liefern und hoffentlich zum Verständnis der Beispiele des CAI Neural API beitragen. Einschränkend sei gesagt, dass ich erst im Kapitel 2 angekommen bin und auch nur dieses eine Beispiel umgesetzt habe und dass das auch nur gelang, weil es das etwas erweiterte und lauffähige Beispiel schon gab.
Grüße aus Hildesheim
Ekkehard

Antworten