Ez az alfejezet azt a lektori munkát teszi taníthatóvá, amelyet a könyv minden korábbi egysége megkövetelt: egy készülő kézirat állításait jelölési, matematikai és hivatkozási követelmények szerint ellenőrizni. Feltételezzük a 40.2. Kísérleti és hibakeresési vizsga hibakeresési vizsga anyagát, továbbá röviden visszanyúlunk a 39.3. Geometriai kontroll és metrika geometriai metrika-, a 36.3. Szakirodalmi reprodukció és attribúció forrásattribúciós és a 28.3. Retrieval-értékelés és adatfelosztás retrieval-kiértékelési fogalmaihoz. Induló kérdés: egy kézirat azt állítja, hogy a modellje 94%-os pontosságot ért el a GlyphLab teszten, és hogy a transposed convolution „visszaállítja a pooling által elveszett információt”. Milyen bizonyítékok hiányában nem fogadható el a kézirat egyetemi beadandóként?
Lektori ellenőrzőlap. Olyan strukturált jegyzék, amely a kézirat minden lényeges állításához hozzárendeli: (i) az állítás típusát, (ii) a típushoz kötelező bizonyítékot, (iii) az ellenőrzés módját, (iv) a státuszt. A típusok a könyv szerződéséből ismertek: definíció, tétel/lemma, levezetés, empirikus állítás, heurisztika, szakirodalmi eredmény. Az ellenőrzőlap nem helyettesíti a bizonyítást; azt rögzíti, hogy a bizonyíték rendelkezésre áll-e és olvasható-e.
Javítási napló. A talált hibák időrendi vagy azonosító szerinti listája, amely minden tételnél megadja: a hiba helyét, típusát, következményét, a javítás szövegét és a javítás visszaellenőrzését. A napló akkor teljes, ha egy későbbi olvasó a naplóból reprodukálni tudja, miért változott a szöveg.
A következő négy állítás mutatja a teljes forrás/bizonyíték lánc felépítését.
Állítás (definícióból levezetett tulajdonság).
Legyen
a bemeneti tensor,
a kernel, és jelölje
a PyTorch Conv2d által számolt térbeli keresztkorrelációt,
rögzített stride, padding és dilation mellett. A transposed convolution
az az operátor, amely a szokásos elem szorzatösszeg skalárszorzatra
teljesíti
minden megfelelő alakú és esetén. Az állítás: általában nem inverze -nek; a „dekonvolúció visszaállítja az elveszett pixeleket” megfogalmazás tehát matematikailag hibás.
Bizonyíték lánc. Első lépés: a [D10] keretjegyzet
rögzíti, hogy a PyTorch Conv2d keresztkorrelációt számol,
nem matematikai konvolúciót; az [S01] olvasott kurzusoldala pedig a
transposed convolution réteget a gradiens-visszaterjesztés térbeli
megfelelőjeként tárgyalja. Második lépés: saját levezetéssel megmutatjuk
az adjungált tulajdonságot egy konkrét kis eseten. Harmadik lépés:
dimenzióérvvel cáfoljuk az invertálhatóságot.
Kézi példa. Legyen , , egyetlen csatorna, kernel , stride , padding . Az output mérete . Jelölje
A direkt keresztkorreláció:
Az adjungált operátor bemenete , kimenete -as:
A skalárszorzat-egyenlőség tagonkénti beszorzással adódik: a fenti két output elem -lal és -gyel vett szorzatösszege; ugyanezt kapjuk, ha mind a hat elemét megszorozzuk megfelelő elemével, mert mindkét oldalon pontosan ugyanazok az szorzatok jelennek meg, ugyanannyiszor. Ez a levezetés a definíció közvetlen kibontása, nem külső tétel.
Miért nem inverz? A leképezés lineáris, és a példában 6-dimenziós bemeneti térből 2-dimenziós kimeneti térbe képez. Lineáris leképezés akkor lehetne injektív, ha magtere csak a nulla elem; itt a magtér dimenziója legalább , tehát végtelen sok különböző adja ugyanazt a kimenetet. Nincs tehát olyan , amelyre teljesülne minden -re. A transposed convolution ettől függetlenül jól definiált adjungált, és a gradiens-visszaterjesztésben pontosan ezt a szerepet tölti be.
Forráshasználat. Az adjungáltsági definíció és a kézi példa saját levezetés; az [S01] olvasott oldala a rétegtípus motivációjához szolgál attribúcióként.
Állítás. Legyen , és tekintsük az
regularizációs tagot. Ekkor .
Levezetés. A Frobenius-norma négyzetének parciális deriváltja a elem szerint:
mert az összegben csak a -t tartalmazó tag deriváltja nem nulla. Mivel ez minden párra fennáll, a gradiens mátrixa . A -es konvenció és a gradiens tehát együtt érvényes; a kéziratban a kettőnek konzisztensnek kell lennie.
Kontroll. Ha a kézirat a tagot -val szorozná, a gradiens lenne; ha a (nem négyzetes) tagot deriválná, a gradiens lenne, ami az origóban nem is értelmezhető. Az ellenőrzőlapnak tehát a konstanstagnál is kérnie kell a gradiensképletet.
Állítás. A GlyphLab metadata.csv minden
scene_id értékéhez pontosan egy split érték
tartozik; a 180 scene mindegyike két view-val szerepel, és a két view
ugyanabba a train/val/test részbe kerül.
Bizonyíték lánc. A lab/ADATOK.md
adatszerződése rögzíti a 180 scene/360 kép struktúrát és a
class-stratified felosztást; a manifest.json a split
darabszámokat (120/30/30 scene, 240/60/60 kép) és a fájlok SHA-256
lenyomatát tartalmazza; a tényleges állítást a metadata.csv
sorain kell ellenőrizni. Az ellenőrzés lánca tehát: szerződés
manifest
tényleges CSV-sorok
csoportos ellenőrzés.
Ellenőrző kód a lab/ munkakönyvtárból,
a kimenet jelölt számított példa, nem elvégzett futás:
import pandas as pd
# Feltételezett bemenet: lab/data/metadata.csv, ellenőrzött manifest.json mellett.
meta = pd.read_csv("lab/data/metadata.csv")
assert len(meta) == 360
assert meta["scene_id"].nunique() == 180
assert meta.groupby("scene_id")["view_id"].nunique().eq(2).all()
# Minden scene pontosan egy splithez tartozik:
bad_scene = meta.groupby("scene_id")["split"].nunique()
assert (bad_scene == 1).all(), bad_scene[bad_scene != 1]
# Osztályonkénti scene-darabszám a három splitben:
print(meta.groupby("split").apply(
lambda g: g.drop_duplicates("scene_id")["label"].value_counts().to_dict()
))
# Szerződés szerinti várt, számított kimenet:
# {"test": {0: 10, 1: 10, 2: 10},
# "train": {0: 40, 1: 40, 2: 40},
# "val": {0: 10, 1: 10, 2: 10}}Következmény. Ha a kézirat per-image metrikát és
per-scene konfidenciaintervallumot kever, az ellenőrzőlapnak hibát kell
jeleznie: a megfigyelési egység a scene_id, nem a kép. Ez
kapcsolódik a 39.3. Geometriai kontroll és
metrika geometriai kontroll páros tesztjéhez és a 28.3. Retrieval-értékelés és adatfelosztás group
split követelményéhez.
Állítás. A GlyphLab adatból számolt pontosság bizonytalanságát kép-szintű bootstrap resamplinggel becsülni módszertani hiba, mert ugyanazon scene két view-ja függő megfigyelés.
Bizonyíték lánc. A bootstrap definíciója szerint a resampling egységnek függetlennek kell lennie ahhoz, hogy az ismételt mintavételi eloszlás a célpopuláció bizonytalanságát közelítse. A GlyphLab generátora minden scene-hez két zajos view-t készít; a view-k közös scene-pozíciót, vastagságot és hosszt osztanak meg, ezért a modell hibái egy scene két view-ján korreláltak. Ha az egység az egyes kép, akkor egy scene mindkét view-ja független megfigyelésként kerül a bootstrap mintába, ami a varianciát torzítja, jellemzően alulbecsli. Az [S02] olvasott módszertani oldala szerint az intervallumok értelmezése az ismételt mintavételi feltételhez kötött; ez az oldal azonban nem ad általános cluster-bootstrap tételt, ezért a fenti következtetés a saját adatszerződésből és a függetlenségi feltételből következik, nem egy itt nem bizonyított statisztikai tételből.
Ellenőrzés a kéziratban. A lektornak azt kell
kérnie, hogy a kézirat explicite nevezze meg a bootstrap egységet. A
helyes válasz a scene_id szerinti, class-stratified
scene-resampling; a helytelen a per-image bootstrap. A kettő nem
felcserélhető, ahogyan azt a 39.3. Geometriai
kontroll és metrika páros összehasonlítási követelménye is
rögzíti.
Mintafejezet-részlet (a hallgató ezt auditálja; a hibák szándékosak):
„A modellünk transposed convolutionnal invertálja a poolingot, így visszaállítja az elveszett pixeleket. A tanulási görbe stabilan csökkent (1. ábra, mért eredmény). A batch norm tanítás és kiértékelés alatt ugyanazt a statisztikát használja. A [Kitalált 2021] szerint az FGSM mindig megtalálja a legjobb torzítást. Az L2-regularizáció gradientsét -nek választottuk.”
A labor átadandó eredménye két dokumentum: egy ellenőrzőlap és egy javítási napló. Az ellenőrzőlap szerkezete:
| Állítás | Típus | Kötelező bizonyíték | Státusz |
|---|---|---|---|
| Transposed convolution inverz | Matematikai lemma | Adjungált definíció, dimenzióérv | Hibás, javítandó |
| „Mért eredmény” görbe | Empirikus állítás | Protokoll, seed, checkpoint, nyers adat | Nem igazolt |
| BatchNorm állandó statisztika | Definíció/heurisztika | train/eval állapotleírás | Hibás |
| [Kitalált 2021] hivatkozás | Szakirodalmi eredmény | Létező forrás, szakasz, olvasottság | Hiányzó forrás |
| L2 gradiens | Levezetés | Parciális deriválás | Hibás a konvencióval |
A javítási napló első tétele például:
A BatchNorm-tételnél a [D12] keretjegyzetet kell idézni: a tanítás és
az eval alatti statisztikakezelés eltérhet; a javítás tehát
„a tanítás alatt batch-statisztikát, kiértékeléskor running statisztikát
használ” alakra módosít, és megnevezi a könyvtárverziót. A kitalált
hivatkozást a javítási napló nem pótolhatja valódi forrással; addig a
mondatot törölni kell, vagy a forrásjegyzékben dokumentálni kell az
alátámasztás hiányát.
F1 (fogalmi, nehézség 1). Adja meg a „mért” és a „szemléltető” ábra definícióját, és a mintafejezetből azonosítsa, melyik állítás sérti a megkülönböztetést. Átadandó: két definíció és egy mondatnyi indoklás.
F2 (levezetési, nehézség 2). A fenti -as példa jelöléseivel igazolja tagonként, hogy , és mutassa meg, hogy a leképezés magtere legalább 4-dimenziós. Átadandó: a két oldal kifejtett összege és a dimenzióindoklás.
F3 (implementációs, nehézség 1). Írjon
Python-ellenőrzést, amely a lab/data/metadata.csv-ből
megállapítja: (i) minden scene_id pontosan egy
split-hez tartozik-e; (ii) a test splitben osztályonként
pontosan 10 scene van-e. Átadandó: teljes kód és a szerződésből
számított várt kimenet.
F4 (hibakeresési, nehézség 2). A mintafejezet az L2-gradienst -nek írja. Azonosítsa a hiba típusát, következményét az optimalizáló lépésre, és adja meg a helyes képletet a -es taghoz. Átadandó: ok, következmény, javítás.
F5 (kísérleti/transzfer, nehézség 3). Egy kézirat azt állítja: „a modell a GlyphLab test halmazon 94%-os pontosságot ért el”. Tervezze meg, milyen bizonyítékokat kér be a lektor, hogy az állítást mért eredményként elfogadja; fogalmazzon meg egy elfogadási küszöböt és egy elutasítási feltételt. Átadandó: protokollterv listája.
F1 megoldás. Mért eredmény: rögzített protokoll mellett ténylegesen lefuttatott számítás kimenete, amelyhez tartozik adatverzió, split, seed, modellállapot, metrika és nyers érték. Szemléltető ábra: képletből vagy feltételezett paraméterekből készült, nem mérésen alapuló bemutatás. A mintafejezet hibája: „mért eredmény”-ként hivatkozik az 1. ábrára, miközben a szöveg semmilyen futási adatot nem közöl hozzá; a helyes megfogalmazás vagy a teljes mérési jegyzőkönyv csatolása, vagy „számított szemléltetés” címke. Ez a megkülönböztetés nem ízlés kérdése: hiányzó protokoll mellett az állítás empirikusan ellenőrizhetetlen.
F2 megoldás. A direkt oldal:
ahol az első összeg indexei a -es kernelablakra. Kifejtve ez hat szorzat, rendre , , , , , , , . Az adjungált oldal , ahol az mátrix eleme; behelyettesítve pontosan ugyanezt a nyolc szorzatot kapjuk, ezért a két oldal minden érték mellett egyenlő. A magtérre: lineáris leképezés , ezért a rang legfeljebb 2; a nullitás a rang-nullitás tételből . Tehát legalább 4 lineárisan független ad zérus kimenetet, a leképezés nem injektív. (A rang-nullitás tételt a lineáris algebra fejezetben bizonyított lineáris egyenletrendszer-alakból itt felhasználjuk, nem idézzük külső forrásból.)
F3 megoldás.
import pandas as pd
meta = pd.read_csv("lab/data/metadata.csv")
assert meta.groupby("scene_id")["split"].nunique().eq(1).all()
test_scenes = meta[meta["split"] == "test"].drop_duplicates("scene_id")
counts = test_scenes["label"].value_counts().to_dict()
assert counts == {0: 10, 1: 10, 2: 10}
print(counts)
# Várt, szerződésből számított kimenet: {0: 10, 1: 10, 2: 10}A kód az adatszerződés ellenőrzött darabszámain alapul; a tényleges
futtatás előtt a manifest.json hash-ellenőrzését is el kell
végezni, mert a CSV önmagában nem bizonyítja, hogy a fájl a rögzített
verzió.
F4 megoldás. A hiba típusa: konstanstag-hiba a levezetésben. Ha a regularizációs tag , akkor a parciális derivált , nem . A gradiens a taghoz tartozna. Következmény: az AdamW vagy SGD lépésben esetén a hibás gradiens kétszeres súlycsökkenést alkalmaz a bejelentetthez képest, tehát a közölt és a tényleges effektív regularizáció eltér. Javítás: vagy a tag legyen , és a gradiens ; vagy a tag legyen , és a gradiens . A kettő közül a kéziratnak egyet kell következetesen használnia.
F5 megoldás. A lektor az alábbi bizonyítékokat kéri
be: (1) a pontos adatverzió és a manifest.json
hash-ellenőrzés kimenete; (2) a split azonosító és a modellválasztási
protokoll, amely szerint a test csak a végleges checkpoint után került
kiértékelésre; (3) a training seed(ek), könyvtárverzió, dtype és device;
(4) a checkpoint state_dict lenyomata; (5) a nyers
predikciók a test képekre; (6) a metrika definíciója (per-image
accuracy) és a nyers confusion matrix. Elfogadási küszöb: a fenti hat
dokumentum mind elérhető, a checkpointból független újrakiértékelés
reprodukálja a 94%-ot a megadott tolerancián belül, és a közölt
intervallum scene-szintű bizonytalanságot is tartalmaz. Elutasítási
feltétel: ha a kézirat a test halmazt bármilyen hiperparaméter- vagy
checkpoint-választásra használta, ha a seed vagy a checkpoint hiányzik,
vagy ha az „94%” nem párosítható nyers predikciókhoz. A terv nem
követeli meg, hogy a lektor maga tanítsa újra a modellt; a független
inference a mentett state_dict-ből elegendő.
A leggyakoribb hiba abban rejlik, hogy a generált vagy gyorsan írt szöveg stilisztikailag magabiztos, ezért az olvasó hajlamos ellenőrzöttként kezelni. Ellenpélda: a mintafejezetben a „[Kitalált 2021]” hivatkozás formailag tudományosnak látszik, de nem létező forrásra mutat. A tudományos megbízhatóság nem a mondatok folyamatosságából következik, hanem abból, hogy minden nem triviális állítás mögött azonosított típusú, olvasható bizonyíték áll. A lektori ellenőrzőlap pontosan ezt a különbséget teszi láthatóvá: a formai hasonlóság nem pótolja a bizonyítási láncot.
Önellenőrzés. (1) A transposed convolution példában a
kimeneti méret
,
,
konzisztens a padding nélküli képlettel. (2) Az L2-levezetésben a
mátrixelem szerinti parciális derivált minden
-ra
azonos alakú, a gradiens alakja
,
megegyezik
alakjával. (3) A split-ellenőrzésben a scene_id
csoportosítás alakja a 360 soros táblán 180 csoport, mindegyik 2
view-val. (4) A per-image bootstrap érvelés nem idéz nem tanult tételt;
a függetlenségi feltételből következik.
Visszahívás. A 40.2. Kísérleti és
hibakeresési vizsga hibakeresési vizsga szerint a versengő
hipotéziseket úgy kell szétválasztani, hogy a kontroll csak az egyik
tényezőt változtatja; itt a „mért vagy szemléltető” kérdésnél ugyanez a
gondolat jelentkezik, amikor a checkpoint és a seed hiányát kérjük
számon. A 36.3. Szakirodalmi reprodukció és
attribúció forrásattribúciós szabálya szerint az olvasottsági
szintet a szakasz pontosságával együtt kell közölni; a jelen javítási
napló ezt a kitalált hivatkozásnál alkalmazza. A 28.3. Retrieval-értékelés és adatfelosztás group
split követelménye a scene_id mintavételi egységben tér
vissza, a 39.3. Geometriai kontroll és metrika
páros tesztje pedig a corrupt/clean összevetés auditjában.
A tudományos kézirat auditja abból áll, hogy minden lényeges állítást
típus szerint osztályozunk, és a típushoz kötelező bizonyítékot kérjük
számon. Matematikai állításnál a definícióból való levezetés és a
dimenzió- vagy szélsőeset-kontroll a mérce; empirikus állításnál az
adatverzió, split, seed, checkpoint, metrika és nyers eredmény
együttese. A transposed convolution adjungált, nem inverz; az L2-tag
gradiense a konvenciótól függ; a GlyphLab split scene-független, ezért a
bootstrap egysége scene_id. A lektori ellenőrzőlap és
javítási napló ezt a láncot rögzíti, és a kitalált hivatkozást vagy a
mértnek álcázott szemléltetést azonnal láthatóvá teszi.
A következő egység, 40.4. X. ellenőrző pont: önálló neurális modell és bizonyíték, a X. ellenőrző pont: az itt bemutatott ellenőrzőlapot és javítási naplót egy teljes, korábban nem látott feladaton kell alkalmazni, önálló neurális modell és bizonyíték bemutatásával. A most elkészített auditdokumentumok adják a vizsgabeadandó formai vázát.
Felhasznált források:
Conv2d keresztkorrelációt számol; a BatchNorm tanítás és
kiértékelés alatti statisztikakezelése eltérhet.