adversarial training

Adversarial training er en træningsteknik, hvor modellen trænes på både originale og bevidst forstyrrede (adversarial) eksempler for at øge robusthed over for modangreb.

Kort fortalt

Man fodrer modellen med både normale data og data, der er lidt manipuleret for at narre den, så den lærer at modstå den slags tricks.

Kategori
teknik
Niveau
øvet
Udtale
/ədˌvɜːrsəriəl ˈtreɪnɪŋ/

Betydninger

2
  1. 1

    Træning på adversarial eksempler: en metode til at forbedre en models robusthed ved at inkludere eksempler, der er genereret ved små, målrettede forstyrrelser af inputdata, typisk ved at maksimere modellens tab.

    • Modellen blev trænet med adversarial training ved hjælp af FGSM-angreb for at reducere følsomheden over for små pixelændringer.Goodfellow et al., 2014
    • Adversarial training på ImageNet forbedrede robustheden betydeligt mod white-box-angreb.Madry et al., 2017
  2. 2

    Træning af generative adversarial networks (GANs): en ramme, hvor to netværk – en generator og en diskriminator – konkurrerer mod hinanden, så generatoren lærer at producere realistiske output.

    • I GANs foregår adversarial training ved, at generatoren forsøger at narre diskriminatoren, mens diskriminatoren lærer at skelne ægte fra falske data.Goodfellow et al., 2014

Hvornår bruges det

Adversarial training bruges især inden for computer vision og NLP for at gøre neurale netværk mere robuste over for små, men bevidste forstyrrelser. Teknikken anvendes ofte som en forsvarsteknik sammen med adversarial angreb i sikkerhedskritiske systemer som selvkørende biler eller ansigtsgenkendelse.

Kodeeksempel

import tensorflow as tf

def adversarial_training_step(model, x_batch, y_batch, epsilon=0.01):
    with tf.GradientTape() as tape:
        tape.watch(x_batch)
        predictions = model(x_batch)
        loss = tf.keras.losses.categorical_crossentropy(y_batch, predictions)
    gradient = tape.gradient(loss, x_batch)
    perturbation = epsilon * tf.sign(gradient)
    x_adv = x_batch + perturbation
    # Combine original and adversarial examples
    x_combined = tf.concat([x_batch, x_adv], axis=0)
    y_combined = tf.concat([y_batch, y_batch], axis=0)
    model.train_on_batch(x_combined, y_combined)

Eksempel på en træningsomgang med adversarial training ved hjælp af FGSM (Fast Gradient Sign Method).

Oprindelse

Termen stammer fra engelsk 'adversarial' (modstander) og 'training' (træning), og refererer til at træne mod en modstander, der genererer vanskelige eksempler.

Afledte ord

1

Kilder

2