Zum Inhalt springen
1/30Kapitel 1 von 30

Das Perceptron von Grund auf: Was ein Neuron berechnet

Baue ein Perceptron in purem Python, sieh es an XOR scheitern und verstehe, was sein Konvergenztheorem wirklich verspricht.

Auf dieser Seite

In einer Fabrik läuft ein Förderband. Teile fahren daran vorbei, und jemand muss entscheiden, welche ausgeliefert werden und welche zurückgehen. Für jedes Teil werden zwei Zahlen gemessen: seine Breite in Millimetern und sein Gewicht in Gramm. Mehr Informationen gibt es nicht.

Der offensichtliche Weg, das zu automatisieren, ist, die Regel aufzuschreiben. Annehmen, wenn die Breite unter 22 Millimetern liegt. Das funktioniert, bis der Lieferant die Legierung ändert und sich die Gewichte verschieben. Also fügst du eine Klausel hinzu. Dann wird die Toleranz neu verhandelt und du fügst noch eine hinzu. Sechs Monate später ist die Funktion vierzig Zeilen lang, niemand weiß mehr, warum Zeile 19 existiert, und die Person, die sie geschrieben hat, ist gegangen.

Der andere Weg ist das Thema dieses Kurses. Du schreibst nicht die Regel. Du schreibst die Form der Regel — eine Vorlage mit Lücken — und lässt die Beispiele entscheiden, was in die Lücken kommt. Diese Umkehrung ist der Kern von Machine Learning, und in diesem Kapitel ist die Vorlage so klein, wie eine Vorlage nur sein kann: zwei Zahlen und ein Schwellenwert.

Am Ende wirst du ein Perceptron in ungefähr zwanzig Zeilen Python geschrieben haben, sehen, wie es Erfolg hat, sehen, wie es scheitert, und beides verstehen. Die Datei, die du hier schreibst, ist kein Spielzeug, das im nächsten Kapitel weggeworfen wird: Sie ist der erste Commit in einem Repository, das neunundzwanzig Kapitel später als agent mit tool loop und Berechtigungsmodell endet.

Das Modell: eine gewichtete Summe und eine Linie

Link zum Abschnitt: Das Modell: eine gewichtete Summe und eine Linie

Ein Perceptron nimmt die Messwerte, multipliziert jeden mit einer Zahl, die es selbst kontrolliert, addiert sie, addiert noch eine weitere Zahl und betrachtet das Vorzeichen.

Schreibe die Messwerte eines Teils als Vektor x=(x1,x2)\mathbf{x} = (x_1, x_2) — Breite und Gewicht. Das Perceptron hält einen Gewichtsvektor w=(w1,w2)\mathbf{w} = (w_1, w_2) und einen Bias bb. Sein Score ist

s(x)=wx+b=w1x1+w2x2+bs(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b = w_1 x_1 + w_2 x_2 + b

und seine Antwort ist das Vorzeichen dieses Scores: annehmen, wenn s(x)0s(\mathbf{x}) \geq 0, andernfalls ablehnen.

Das ist das gesamte Modell. Alles, was das Perceptron je über die Fabrik wissen wird, steckt in drei Zahlen.

Bei der Geometrie lohnt sich ein kurzer Halt, denn sie ist das Bild, das auch in den nächsten neunundzwanzig Kapiteln weiterträgt, selbst wenn die Gleichungen nicht mehr in eine Zeile passen. Die Menge der Punkte, für die s(x)=0s(\mathbf{x}) = 0 gilt — wo das Perceptron genau unentschieden ist —, ist eine Gerade in der Ebene. Auf der einen Seite ist der Score positiv und alles wird angenommen; auf der anderen ist er negativ und alles wird abgelehnt. Lernen bedeutet für ein Perceptron, diese Gerade zu verschieben.

Zwei Fakten über diese Gerade folgen direkt aus der Algebra, und beide werden später wichtig:

  • w\mathbf{w} steht senkrecht auf ihr. Der Gewichtsvektor liegt nicht entlang der Grenze, er zeigt quer über sie hinweg, zur angenommenen Seite.
  • bb verschiebt sie, ohne sie zu drehen. Ohne Bias müsste die Gerade durch den Ursprung verlaufen, was für eine Fabrik, die Millimeter und Gramm misst, eine absurde Einschränkung wäre — es würde bedeuten, dass ein Teil mit null Breite und null Gewicht genau auf dem Zaun sitzt.

Die Lernregel, und warum sie keine Analysis braucht

Link zum Abschnitt: Die Lernregel, und warum sie keine Analysis braucht

Das Perceptron startet ohne Wissen: w=(0,0)\mathbf{w} = (0, 0) und b=0b = 0. Jeder Score ist null, also nimmt es alles an.

Nun zeigst du ihm ein Beispiel nach dem anderen. Markiere die angenommenen Teile mit y=+1y = +1 und die abgelehnten mit y=1y = -1. Stelle für jedes Beispiel eine Frage: Kam das Vorzeichen richtig heraus? Die kompakte Schreibweise für diese Frage ist zu prüfen, ob ys(x)y \cdot s(\mathbf{x}) positiv ist — wenn Label und Score im Vorzeichen übereinstimmen, ist ihr Produkt positiv, und wenn sie nicht übereinstimmen, ist es negativ.

Wenn die Antwort ja ist, ändere nichts. Wenn die Antwort nein ist, schubse:

ww+yx,bb+y\mathbf{w} \leftarrow \mathbf{w} + y\,\mathbf{x}, \qquad b \leftarrow b + y

Das ist der ganze Algorithmus, und es lohnt sich zu verstehen, warum genau das der richtige Schubs ist, statt ihn auswendig zu lernen. Angenommen, ein Teil hätte angenommen werden sollen (y=+1y = +1), und der Score fiel negativ aus. Wenn du x\mathbf{x} zu w\mathbf{w} addierst, ändert sich der Score für genau dieses Teil um

(w+x)xwx=xx=x2(\mathbf{w} + \mathbf{x}) \cdot \mathbf{x} - \mathbf{w} \cdot \mathbf{x} = \mathbf{x} \cdot \mathbf{x} = \lVert \mathbf{x} \rVert^2

was eine positive Zahl ist. Der Score für das Teil, das es gerade falsch bewertet hat, geht nach oben, also in die Richtung, in die er gehen musste. Die Regel ist keine Heuristik, die jemand geraten hat; sie ist die kleinste Änderung, die den Fall vor ihr nachweislich verbessert. Natürlich kann sie einen anderen Fall kaputtmachen, weshalb du noch einmal herumgehst.

Achte darauf, was fehlt. Es gibt nirgendwo eine Ableitung. Das ist kein Versehen, und es ist die erste wirklich wichtige Idee in diesem Kurs.

Das, was du differenzieren wollen würdest, ist der Fehler — die Anzahl falsch klassifizierter Teile. Aber diese Anzahl ist eine Treppe: Sie bleibt flach bei 4, während du die Gerade anstupst, und fällt dann in dem Moment auf 3, in dem die Gerade einen Punkt überquert. Ihre Ableitung ist fast überall null und an den Stufen undefiniert. Analysis findet keinen Halt. Die Perceptron-Regel arbeitet darum herum, indem sie gar nicht nach einer Steigung fragt: Sie fragt nur „richtig oder falsch?“ und bewegt sich in eine Richtung, die sie geometrisch begründen kann.

Das ist eine echte Lösung, und es ist auch eine Sackgasse. In Kapitel 2 werden wir einen Loss wollen, der irgendwoher kommt, statt gewählt zu werden, in Kapitel 4 ein Modell, das angibt, wie sicher es ist, und in Kapitel 5 etwas mit mehr als einer Schicht — und keines davon ist von einer Regel erreichbar, die nur „falsch“ kennt. Eine brauchbare Steigung zurückzubekommen, ist das, was die nächsten zwei Kapitel erzwingt. Aber das Perceptron darf etwas tun, was keiner seiner Nachfolger kann: ganz ohne Analysis lernen.

Pures Python, kein NumPy. Listen und eine Schleife. NumPy kommt im nächsten Kapitel, wenn die Arithmetik nicht mehr in eine Schleife passt, die du lesen möchtest; es jetzt einzuführen, würde die Arithmetik genau in dem Moment hinter einer Library verstecken, in dem du sie sehen willst.

perceptron.pyPYTHON
def score(w, b, x):
    return w[0] * x[0] + w[1] * x[1] + b


def predict(w, b, x):
    return 1 if score(w, b, x) >= 0 else -1


def train(data, epochs=200):
    """Returns (w, b, epoch_it_converged) — or None for the epoch if it never did."""
    w, b = [0.0, 0.0], 0.0
    for epoch in range(epochs):
        mistakes = 0
        for x, y in data:
            if y * score(w, b, x) <= 0:          
                w[0] += y * x[0]                 
                w[1] += y * x[1]                 
                b += y                           
                mistakes += 1
        if mistakes == 0:
            return w, b, epoch + 1
    return w, b, None

Die vier hervorgehobenen Zeilen sind der Algorithmus. Alles andere ist Buchhaltung.

Und das Förderband mit acht gemessenen Teilen — vier, die ausgeliefert wurden, und vier, die zurückkamen:

belt.pyPYTHON
BELT = [
    ((18.0, 47.0), +1), ((19.5, 52.0), +1), ((20.2, 49.0), +1), ((21.0, 55.0), +1),
    ((24.0, 61.0), -1), ((25.5, 66.0), -1), ((23.0, 70.0), -1), ((26.0, 58.0), -1),
]

w, b, epoch = train(BELT, epochs=200)
print(epoch, w, b)

Diese acht Teile sind durch eine Gerade trennbar — jedes angenommene Teil ist unter 22 mm, und jedes abgelehnte ist 23 mm oder mehr. Ein vertikaler Zaun bei 22 Millimetern erledigt den Job. Also sollte das Perceptron ihn finden.

Führe es aus:

TEXT
None [-142.1, -13.0] 54.0

Zweihundert Epochen, 454 Korrekturen, und es ist nicht konvergiert. Die Gewichte sind groß und haben das falsche Vorzeichen. Etwas stimmt nicht — außer, dass nichts falsch ist, und der Grund ist das Nützlichste in diesem Kapitel.

Das Konvergenztheorem, und welche Zahl es dir wirklich gibt

Link zum Abschnitt: Das Konvergenztheorem, und welche Zahl es dir wirklich gibt

Das Perceptron hat eine Garantie, bewiesen von Novikoff im Jahr 1962.1 Wenn sich die Daten überhaupt durch eine Gerade trennen lassen, macht der Algorithmus höchstens

(Rγ)2\left(\frac{R}{\gamma}\right)^2

Korrekturen, bevor er keine mehr macht — wobei RR der Radius der Daten ist, die Länge des längsten Beispielvektors, und γ\gamma die Margin: der Abstand von der trennenden Hyperebene zum nächsten Punkt im augmentierten Raum, in dem der Bias eine dritte Koordinate ist. Deshalb verändert das Zentrieren der Daten diesen Wert, obwohl der Abstand in Millimetern es nicht tut.

Die Garantie ist bedingungslos, und sie erwähnt weder Epochen noch Lernraten noch Glück. Sie erwähnt aber auch nicht Zeit, und genau diese Auslassung ist der Punkt.

Setzen wir unsere Zahlen ein. Direkt aus den acht Teilen gemessen, mit dem Bias als konstanter Feature-Komponente hineingefaltet:

Radius RRMargin γ\gammaSchranke (R/γ)2(R/\gamma)^2tatsächlich gemachte Korrekturen
rohe Millimeter und Gramm73,690,0452.633.55029.870
nach Abzug des Mittelwerts12,820,9891681

Das Theorem wurde nie verletzt. Lässt du die rohe Version lange genug laufen, konvergiert sie tatsächlich — in Epoche 11.976, nach 29.870 Korrekturen — bequem innerhalb ihrer Schranke von 2.633.550, und diese Lücke ist selbst der Punkt: Das Theorem begrenzt den schlimmsten Fall, nicht den typischen. Es brauchte einfach sechzigmal mehr Epochen, als irgendjemand aussitzen würde.

Die zweite Zeile sind dieselben acht Teile, dieselben zwanzig Zeilen Code, mit drei hinzugefügten Zeilen, die von jedem Messwert die mittlere Breite und das mittlere Gewicht abziehen. Das ist alles. Das ist die gesamte Änderung. Sie verschiebt die Punktwolke so, dass sie den Ursprung überdeckt, statt draußen bei (22, 57) zu schweben, und die Wirkung auf die Schranke ist ein Faktor von fünfzehntausend, weil sich beide Terme zugleich verbessern: RR fällt von 74 auf 13, weil die Punkte nicht mehr von einem weit entfernten Ursprung aus gemessen werden, und γ\gamma steigt von 0,045 auf 0,989, weil die Margin gegen einen Gewichtsvektor gemessen wird, der keinen riesigen Bias mehr tragen muss, um die Daten zu erreichen.

belt.py (centred)PYTHON
mean_w = sum(x[0] for x, _ in BELT) / len(BELT)   # 22.15
mean_g = sum(x[1] for x, _ in BELT) / len(BELT)   # 57.25
CENTRED = [(((x[0] - mean_w), (x[1] - mean_g)), y) for x, y in BELT]

w, b, epoch = train(CENTRED, epochs=200)
print(epoch, w, b)
TEXT
2 [-4.15, -10.25] 1.0

Konvergiert in zwei Epochen, nachdem es sich genau einmal korrigiert hat.

Hier steckt eine echte Lektion, und sie lautet nicht „denk daran, deine Inputs zu normalisieren“, obwohl du das tun solltest. Sie lautet: Eine Garantie darüber, ob ein Algorithmus fertig wird, sagt dir nichts darüber, ob du noch dabei bist, wenn er fertig wird, und die Lücke zwischen beidem ist meistens Geometrie. Das ist das erste Auftauchen eines Musters, das dir in Kapitel 6 bei Initialisierung, in Kapitel 10 bei Lernratenplänen und in Kapitel 13 bei Quantisierung wiederbegegnen wird: Die Mathematik sagt, dass die Sache möglich ist, und das Engineering entscheidet, ob sie praktisch ist. Ein Kurs, der dir nur das Theorem beibringt, gibt dir ein Modell, das drei Tage trainiert, und gibt dir die Schuld.

Jetzt der Fehlschlag, der die erste Ära neuronaler Netze beendete, und er passt in vier Zeilen.

Vergiss die Fabrik. Nimm zwei Inputs, die jeweils entweder 0 oder 1 sind, und verlange, dass die Antwort +1+1 ist, wenn genau einer von ihnen 1 ist:

x1x_1x2x_2yy
001-1
01+1+1
10+1+1
111-1

Das ist XOR — exklusives Oder. Bevor du weiterliest, zeichne die vier Punkte auf Papier: drei Ecken eines Einheitsquadrats und die vierte. Markiere die zwei diagonalen Ecken (0,1)(0,1) und (1,0)(1,0) als angenommen, und (0,0)(0,0) und (1,1)(1,1) als abgelehnt. Zeichne jetzt eine Gerade, bei der die zwei angenommenen Punkte auf einer Seite und die zwei abgelehnten Punkte auf der anderen liegen.

Das geht nicht. Nicht, weil es schwierig wäre oder du einen clevereren Algorithmus bräuchtest; sondern weil diese Gerade nicht existiert. Drei Zeilen Algebra zeigen, warum. Wenn ein Perceptron alle vier richtig hätte, dann ergeben die vier Zeilen der Reihe nach

b<0,w2+b0,w1+b0,w1+w2+b<0b < 0, \qquad w_2 + b \geq 0, \qquad w_1 + b \geq 0, \qquad w_1 + w_2 + b < 0

Addiere die mittleren zwei Ungleichungen: w1+w2+2b0w_1 + w_2 + 2b \geq 0, also w1+w22bw_1 + w_2 \geq -2b. Die letzte sagt w1+w2<bw_1 + w_2 < -b. Zusammen: 2bw1+w2<b-2b \leq w_1 + w_2 < -b, was 2b<b-2b < -b erfordert, was b>0b > 0 erfordert. Und die erste Ungleichung sagt b<0b < 0. Ein solches bb gibt es nicht, also gibt es auch keine solchen Gewichte. Kein Perceptron, mit welchen Zahlen auch immer, klassifiziert XOR.

Führe es trotzdem aus, denn einem Algorithmus beim Scheitern zuzusehen ist mehr wert, als nur gesagt zu bekommen, dass er scheitern wird:

TEXT
     100 epochs -> converged=None  w=[0.0, 0.0] b=0.0  correct=2/4
   1,000 epochs -> converged=None  w=[0.0, 0.0] b=0.0  correct=2/4
 100,000 epochs -> converged=None  w=[0.0, 0.0] b=0.0  correct=2/4

Es divergiert nicht, und es zappelt auch nicht in der Nähe einer brauchbaren Antwort herum. Es zyklisiert: Es läuft eine kurze Schleife durch den Gewichtsraum und kehrt für immer exakt dorthin zurück, wo es angefangen hat, mit zwei von vier richtigen Antworten — was du auch durch Raten bekämst. Hunderttausend Epochen und hundert sind nicht zu unterscheiden, weil der Algorithmus keinen Fortschritt macht, den ein längerer Lauf abschließen könnte. Vergleiche das mit dem Förderband, das bei 200 Epochen festgefahren aussah und tatsächlich auf eine echte Antwort zumaulte. Von außen sehen beide in den ersten Sekunden ähnlich aus. Sie ohne das Theorem auseinanderzuhalten, ist unmöglich — ein weiteres Argument dafür, das Theorem zu kennen.

1969 veröffentlichten Marvin Minsky und Seymour Papert Perceptrons, eine buchlange mathematische Untersuchung dessen, was genau dieses Modell darstellen kann und was nicht.2 XOR ist ihr meistzitiertes Ergebnis, und das Zitat wird gewöhnlich als Vorwurf eingesetzt: Das Buch habe aus Rivalität oder Bosheit die Forschung an neuronalen Netzen für fünfzehn Jahre getötet.

Die Mathematik im Buch ist korrekt, und sie ist interessanter als das XOR-Beispiel. Minsky und Papert interessierten sich nicht in erster Linie dafür, ob ein einzelnes Perceptron XOR kann; sie interessierten sich dafür, was passiert, wenn Perceptrons begrenzte rezeptive Felder erhalten — jede Einheit sieht nur einen Teil des Inputs —, und sie bewiesen, dass bestimmte globale Eigenschaften eines Bildes, etwa ob eine Figur zusammenhängend ist, auf diese Weise nicht berechnet werden können, egal wie viele Einheiten du verwendest. Das ist ein wirklich tiefes Ergebnis über Lokalität, und es hat nichts mit der populären Geschichte zu tun.

Die populäre Geschichte liegt auch historisch falsch. Minsky und Papert diskutieren mehrschichtige Perceptrons ausdrücklich und sagen, dass die Frage ihrer Leistungsfähigkeit offen ist — sie vermuteten, eine Erweiterung der Theorie wäre „steril“, was eine Vorhersage ist, kein Beweis, und sie war falsch. Was 1969 fehlte, war nicht die Idee, Schichten zu stapeln; es war eine Methode, einen Stapel zu trainieren. Die Perceptron-Regel kann das nicht: Sie muss wissen, wie falsch jede Einheit liegt, und für eine Einheit, die in der Mitte vergraben ist, gibt es kein Label, mit dem man vergleichen könnte. Diese Lücke blieb offen, bis backpropagation 1986 populär gemacht wurde,3 und sie zu schließen ist das, was Kapitel 5 tut.

Die ehrliche Zusammenfassung lautet also so. Das Buch bewies eine echte Grenze eines echten Modells. Der Einbruch der Finanzierung des Feldes in den Siebzigern hatte viele Ursachen, darunter die überzogenen Versprechen, die Anfang der Sechziger für Perceptrons gemacht worden waren. Und das technische Hindernis war lösbar, aber niemand hatte das Werkzeug dafür.

Das Perceptron ist achtundsechzig Jahre alt, und du hast gerade eines geschrieben. Es lohnt sich, genau zu sein, welche Teile davon noch in der Maschine stecken, die du am Ende dieses Kurses gebaut haben wirst, denn die Antwort lautet: mehr, als du vermuten würdest.

Immer noch da. Die Form — mit Gewichten multiplizieren, summieren, einen Bias addieren, eine nichtlineare Funktion auf das Ergebnis anwenden — ist exakt die Form einer Einheit in jedem neuronalen Netz dieses Kurses, einschließlich derer in einem transformer-Block in Kapitel 9. Die Update-bei-Fehler-Regel ist stochastic gradient descent in Verkleidung: Sie ist genau das, was du erhältst, wenn du die Methode aus Kapitel 3 auf eine bestimmte Loss-Funktion anwendest. Inkrementell zu trainieren — jeweils mit einer Handvoll Beispiele statt mit dem gesamten Datensatz auf einmal — ist bis heute die Art, wie Modelle in jeder Größenordnung trainiert werden. Kapitel 3 misst, wo dieser Trade-off tatsächlich liegt.

Verschwunden. Der Schwellenwert selbst: in Kapitel 4 ersetzt durch eine Funktion, die eine Wahrscheinlichkeit ausgibt statt eines Urteils, weil „ablehnen“ und „ablehnen, aber es war knapp“ unterschiedliche Informationen sind und das Vorzeichen den Unterschied wegwirft. Die einzelne Schicht, ersetzt in Kapitel 5. Und handverlesene Features: Jemand hat Breite und Gewicht für dieses Band gewählt, und diese Wahl hat mehr Arbeit geleistet als der Algorithmus. Kapitel 8 ist der Punkt, an dem das Modell beginnt, seine eigenen zu wählen.

Das Perceptron blieb an zwei Dingen zugleich hängen, und sie stellen sich als dasselbe heraus.

Es kann XOR nicht darstellen, weil eine Gerade nicht reicht. Das zu beheben bedeutet, Schichten zu stapeln — eine erste Schicht, die den Raum biegt, eine zweite, die im gebogenen Raum die Gerade zieht. Das ist Kapitel 5.

Aber du kannst einen Stapel nicht mit der Perceptron-Regel trainieren, weil sie nur „falsch“ kennt, und eine Einheit in der Mitte eines Netzes hat kein eigenes Label, über das sie falsch liegen könnte. Um einen Stapel zu trainieren, musst du für jedes Gewicht wissen, wie falsch es ist und in welche Richtung — du brauchst eine Steigung. Und die Fehlerfunktion des Perceptrons, die Treppe, hat keine.

Vor dem Stapel muss es also eine Loss-Funktion mit einer brauchbaren Ableitung geben. Auch keine, die nur gewählt wurde, weil sie bequem zu differenzieren ist: eine, die irgendwoher kommt, die etwas Wahres über die Daten sagt und deren gradient aus dieser Bedeutung herausfällt, statt rückwärts konstruiert zu werden, damit sie sauber aussieht.

Das ist Kapitel 2, und es beginnt mit einer Frage, die das Perceptron nie beantworten musste: nicht „ist dieses Teil gut?“, sondern „wie wahrscheinlich sind diese Messwerte, wenn dies die Wahrheit ist?“


Ebenfalls lesenswert neben diesem Kapitel: Rosenblatts Originalarbeit The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain (Psychological Review 65(6), 1958), die lesbarer ist, als ihr Ruf vermuten lässt; McCulloch und Pitts, A Logical Calculus of the Ideas Immanent in Nervous Activity (Bulletin of Mathematical Biophysics 5, 1943), der Aufsatz, der ein Neuron erstmals als Schwellenwert über einer gewichteten Summe modellierte; der Perceptron-Abschnitt in Hal Daumé III, A Course in Machine Learning, der dasselbe Update mit anderer Schwerpunktsetzung herleitet; und Kapitel 2 und 3 von Deisenroth, Faisal und Ong, Mathematics for Machine Learning, für die lineare Algebra, falls die Box oben dir weniger gegeben hat, als du wolltest.

  1. Novikoff, A. B. J. On convergence proofs for perceptrons. Proceedings of the Symposium on the Mathematical Theory of Automata, vol. 12, pp. 615–622 (Polytechnic Institute of Brooklyn, 1962). Die ursprüngliche Formulierung und der Beweis der oben verwendeten Fehlerschranke.

  2. Minsky, M. and Papert, S. Perceptrons: An Introduction to Computational Geometry (MIT Press, 1969; erweiterte Ausgabe 1988). Das XOR-Ergebnis ist elementar; die substanziellen Ergebnisse betreffen ordnungsbeschränkte Prädikate und Zusammenhang.

  3. Rumelhart, D. E., Hinton, G. E. and Williams, R. J. Learning representations by back-propagating errors. Nature 323, pp. 533–536 (1986).


Erstellt von

David Vicente Campos

Gründer von NeuraLIA Labs & Mitgründer von MyRealFood

Ich bin Informatikingenieur mit Abschluss an der Universität León. Ich habe MyRealFood mitgegründet, wo ich als CTO die App gebaut habe, die Millionen Menschen genutzt haben, um sich besser zu ernähren, und ich habe NeuraLIA Labs gegründet, wo ich KI-Produkte entwickle. Hier schreibe ich über das, was ich unterwegs verstehen musste, so wie ich mir gewünscht hätte, dass es mir jemand erklärt.

Mehr über den Autor

Veröffentlicht von NeuraLIA Labs.

Neue Beiträge direkt in dein Postfach

AI-News, Guides und Produktupdates — eine kurze E-Mail, wenn wir etwas veröffentlichen, das deine Zeit wert ist.

Kursübersicht

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev11 Min. Lesezeit

Das Jev-KI-Modell ist für Entscheidungen gebaut, nicht für Prosa

TypeSafe AIs Jev sorgt für Aufmerksamkeit, weil es Software-Intelligenz als Wahrscheinlichkeitsproblem behandelt: den richtigen Zweig wählen, Konfidenz anhängen und vermeiden, ein LLM für Text zu bezahlen, wenn Code eine Entscheidung braucht.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering11 Min. Lesezeit

Context Engineering für KI-Agenten mit langem Zeithorizont

Lang laufende Agenten scheitern nicht nur, weil das Fenster klein ist. Sie scheitern, wenn Dateien, Tool-Ausgaben und veraltete Historie die Aufgabe verdrängen, die der Agent eigentlich erledigen sollte.

Bereit, LIA die Wahl zu überlassen?

Bau mit jedem KI-Modell an einem Ort — starte heute kostenlos.