Alle Artikel

Masterarbeit: erklärbare Erkennung von KI-geschriebenem Phishing

Eingereicht, Ergebnis ausstehend

Meine Masterarbeit an der Liverpool John Moores University: Phishing-Mails erkennen, die von KI geschrieben wurden, und messen, ob die Erklärungen jedes Detektors dem entsprechen, was er tatsächlich tut.

Meine Rolle
Autor: Versuchsdesign, Code, Auswertung und Schreiben
Jahr
2026
Gebaut mit
Python · scikit-learn · XGBoost · LightGBM · PyTorch · Transformers · SHAP · LIME · Integrated Gradients

Das Problem

Phishing, das Sprachmodelle schreiben, liest sich anders als die alten Vorlagen, und bei einem Detektor, den niemand erklären kann, sind Vertrauen und Prüfung schwierig. Ich bin zwei Fragen nachgegangen: Welche Art von Modell hält bei KI-geschriebenen E-Mails stand, und geben die Erklärungen treu wieder, was das Modell wirklich tut?

Wie es gebaut ist

Drei Modellfamilien, verglichen auf denselben Splits: klassische Modelle (logistische Regression, Naive Bayes, SVM, Entscheidungsbaum, Random Forest), Gradient-Boosting-Ensembles (XGBoost, LightGBM) und Transformer (BERT, DistilBERT, RoBERTa), mit korpusübergreifenden Tests zwischen älteren und KI-generierten E-Mails. Die Erklärungen von SHAP, LIME und Integrated Gradients wurden auf Faithfulness, Stabilität und Plausibilität bewertet, gegen eine Baseline mit zufälliger Attribution. Das Protokoll wurde registriert, bevor die Experimente liefen, das Lexikon der Signalwörter wurde vor allen Ergebnissen committet, eine Testsuite mit Positivkontrollen sichert die Erklärmethoden ab, und das Plausibilitätsmaß wurde mit menschlichen Bewertern und einem LLM-Judge abgeglichen. Alles lief auf einer lokalen RTX 3090.

Entscheidungen, auf die es ankam

  • Vor dem Start registriert

    Protokolle, Lexikon und Hypothesen wurden committet, bevor es irgendein Ergebnis gab, also ließ sich nichts im Nachhinein auswählen.

  • Die Erklärungen wurden gemessen

    Eine Methode, die wie zufällige Attribution abschneidet, wird auch so ausgewiesen. Als LIME wie der Zufall abschnitt, lag die Ursache in einem Bug in meinem LIME-Adapter, einem invertierten Tokenizer-Argument. Ich habe das offengelegt, behoben und neu laufen lassen. Korrigiert lieferte LIME treue Erklärungen, war aber die am wenigsten stabile Methode.

  • Das einfache Modell hat gewonnen

    Bei KI-generierten E-Mails schlug ein getuntes lineares TF-IDF-Modell RoBERTa bei der ROC-AUC (0,9993 gegenüber 0,9976), und SHAP lieferte dafür treue Erklärungen, 64,5-mal schneller als das korrigierte LIME.

Code aus dem Repo

src/xai/metrics.pyFaithfulness, gemessen an einer Zufallsbaseline
def faithfulness(champ, texts, attrs, preds, seed: int = 42) -> dict:
    rng = np.random.default_rng(seed)
    preds = np.asarray(preds)
    p_orig = _p_pred(champ.proba(texts), preds)1
 
    variants: list[str] = []
    meta: list[tuple] = []   # (doc_i, kind, k, is_random)
    for i, (text, attr, pred) in enumerate(zip(texts, attrs, preds)):
        nw = len(textops.word_spans(text))
        top = textops.top_k_positions(attr, int(pred), min(20, nw))
        randperm = rng.permutation(nw).tolist()2
        for k in K_AOPC:
            variants.append(textops.remove_words(text, top[:k])); meta.append((i, "comp", k, False))3
            variants.append(textops.remove_words(text, randperm[:k])); meta.append((i, "comp", k, True))
        for k in K_REPORT:
            variants.append(textops.keep_only_words(text, top[:k])); meta.append((i, "suff", k, False))
            variants.append(textops.keep_only_words(text, randperm[:k])); meta.append((i, "suff", k, True))
 
    P = _p_pred(champ.proba(variants), preds[[m[0] for m in meta]])4
  1. Zeile 4. Die Wahrscheinlichkeit der vorhergesagten Klasse auf dem Originaldokument, die Referenz für jeden Vergleich.

  2. Zeile 11. Die Zufallsbaseline: dieselben Löschungen in zufälliger Wortreihenfolge, durch die identische Pipeline.

  3. Zeile 13. Comprehensiveness: die Top-k-Wörter entfernen, auf die die Erklärung zeigt. Je stärker die Wahrscheinlichkeit sinkt, desto treuer ist die Erklärung.

  4. Zeile 19. Jede Variante jedes Dokuments geht in einem einzigen Batch durch die GPU.

Wo es heute steht

Im August 2026 eingereicht, das Ergebnis steht noch aus. Jede Tabelle und jede Abbildung lässt sich aus versionierten Skripten und festen Seeds reproduzieren. Zusammen mit meinem Betreuer mache ich daraus gerade einen Konferenzbeitrag.

Nächster ArtikelFitEscala