Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Training, Validierung und Test trennen

Nach dieser Lektion: Ich kann Testfälle aus den Trainingsdaten heraushalten.

Lektion, 60 Min.7 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Ein Test, den das Modell schon kennt

Training, Validierung und Test sind drei getrennte Stapel von Beispielen. Das Modell lernt aus dem ersten, Sie stellen mit dem zweiten ein und beurteilen mit dem dritten.

Steht ein Testfall auch im Trainingsstapel, kann sich das Modell ihn einfach merken. Der Wert sieht dann gut aus und sagt nichts.

Am Ende dieser Lektion

Notiz

Ich kann Testfälle aus den Trainingsdaten heraushalten.

Schlüsselwörter

BegriffWas er bedeutet
Trainingsmengedie Beispiele, aus denen das Modell lernt
ValidierungsmengeBeispiele, mit denen Sie Entscheidungen abstimmen
Testmengezurückgehaltene Beispiele zum Beurteilen des Ergebnisses
Leckein Testfall, der auch im Training steht
Dubletteein Beispiel, das zweimal vorkommt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Drei Stapel mit drei Aufgaben

Teilen Sie Ihre geprüfte Datei auf, bevor Sie trainieren. Die meisten Beispiele gehen in die Trainingsmenge. Ein kleinerer Stapel, die Validierungsmenge, lässt Sie unterwegs Varianten vergleichen. Die Testmenge fassen Sie nur einmal an, am Ende.

Teilen Sie nach einer festen Regel auf, etwa nach Position, damit dieselben Zeilen immer im selben Stapel landen.

Beispiel: zehn Zeilen, drei Stapel

StapelZeilenWofür
Training1 bis 6Lernen
Validierung7 und 8Zwischen Versionen wählen
Test9 und 10Ein letztes Urteil

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Auch eine fast gleiche Kopie ist ein Leck

Zeile 1 lautet "Wo ist mein Paket". Zeile 7 lautet "Wo ist mein Paket?". Die Wörter sind gleich, das Modell hat die Antwort also gesehen.

Um solche Kopien zu fangen, vereinheitlichen Sie zuerst beide Texte. Schreiben Sie klein, streichen Sie die Zeichen und pressen Sie die Leerzeichen zusammen. Vergleichen Sie dann.

Ein häufiger Fehler

Warnung

Viele glauben, Mischen der Datei halte die Testmenge sauber. Mischen verteilt Kopien desselben Beispiels auf verschiedene Stapel. Entfernen Sie zuerst die Dubletten und teilen Sie dann auf.

Modell-Helfer schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Modell-Helfer schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Leckfinder schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const zeilen = [' '  \"Wo ist mein Paket\", \"Ich wurde zweimal belastet\", \"Bitte stornieren Sie meine Bestellung\",' '  \"Der Karton kam zerdrückt an\", \"Falscher Rechnungsbetrag\", \"Kann ich die Lieferadresse ändern\",' '  \"Wo ist mein Paket?\", \"Ihr Laden gefällt mir\", \"Meine Erstattung ist nicht da\", \"Hat der Laden am Sonntag auf\",' '];' > anpassen3.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Leckfinder schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function istBuchstabe(zeichen) {' '  return zeichen.toLowerCase() === zeichen.toUpperCase() ? false : true;' '}' 'function normalisieren(text) {' '  let aus = \"\";' '  for (const z of text.toLowerCase()) {' '    if (istBuchstabe(z) || (z >= \"0\" && z <= \"9\") || z === \" \") aus = aus + z;' '  }' '  return aus.split(\" \").filter(function (w) { return w.length > 0; }).join(\" \");' '}' >> anpassen3.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Leckfinder schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const training = zeilen.slice(0, 6);' 'const validierung = zeilen.slice(6, 8);' 'const test = zeilen.slice(8);' 'function lecks(aus, ziel) {' '  const gesehen = aus.map(normalisieren);' '  return ziel.filter(function (t) { return gesehen.includes(normalisieren(t)); });' '}' >> anpassen3.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Leckfinder schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"Training \" + training.length + \", Validierung \" + validierung.length + \", Test \" + test.length);' '  console.log(\"Lecks in die Validierung: \" + lecks(training, validierung).join(\" | \"));' '  console.log(\"Lecks in den Test: \" + lecks(training, test).length);' '  const frage = \"Antworten Sie in einem Satz: Warum darf ein Testfall nie in den Trainingsdaten stehen?\";' '  const probe = \"Ein Modell kann ein gesehenes Beispiel wiederholen, daher sieht der Wert besser aus, als er ist.\";' '  const antwort = await fragen([{ role: \"user\", content: frage }], probe, 40);' '  console.log(\"Modell: \" + antwort.text);' '}' 'main();' >> anpassen3.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Leckfinder ausführen

Befehl
docker exec -w /home/node/project agent node anpassen3.js

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was der Finder meldete

Der Run teilt zehn erfundene Sätze nach Position auf und vergleicht den schlichten Text jedes Satzes. Er findet ein Leck in den Validierungsstapel und keines in den Teststapel.

Die letzte Zeile ist ein kurzer Modellaufruf oder eine Aufgezeichnete Probe.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.