Руководство по программированию для демонстрации целенаправленных атак с отравлением данных в глубоком обучении путём изменения меток на CIFAR-10 с помощью PyTorch

В этом руководстве мы демонстрируем реалистичную атаку с отравлением данных, манипулируя метками в наборе данных CIFAR-10 и наблюдая за её влиянием на поведение модели. Мы создаём чистый и отравленный конвейеры обучения параллельно, используя свёрточную сеть в стиле ResNet для обеспечения стабильной и сопоставимой динамики обучения.

Настройка среды

Мы устанавливаем основную среду, необходимую для эксперимента, и определяем все параметры конфигурации в одном месте. Мы обеспечиваем воспроизводимость, фиксируя случайные начальные значения в PyTorch и NumPy. Мы также явно выбираем вычислительное устройство, чтобы руководство работало эффективно как на CPU, так и на GPU.

«`python
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader, Dataset
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusionmatrix, classificationreport

CONFIG = {
«batch_size»: 128,
«epochs»: 10,
«lr»: 0.001,
«target_class»: 1,
«malicious_label»: 9,
«poison_ratio»: 0.4,
}

torch.manual_seed(42)
np.random.seed(42)
«`

Реализация отравленного набора данных

Мы реализуем пользовательскую оболочку набора данных, которая позволяет контролировать отравление меток во время обучения. Мы выборочно переворачиваем заданную долю образцов из целевого класса в вредоносный класс, сохраняя при этом тестовые данные нетронутыми. Мы сохраняем исходные данные изображения, чтобы компрометации подвергалась только целостность меток.

«`python
class PoisonedCIFAR10(Dataset):
def init(self, originaldataset, targetclass, maliciouslabel, ratio, istrain=True):
self.dataset = original_dataset
self.targets = np.array(original_dataset.targets)
self.istrain = istrain
if is_train and ratio > 0:
indices = np.where(self.targets == target_class)[0]
n_poison = int(len(indices) * ratio)
poisonindices = np.random.choice(indices, npoison, replace=False)
self.targets[poisonindices] = maliciouslabel

def getitem(self, index):
img, _ = self.dataset[index]
return img, self.targets[index]

def len(self):
return len(self.dataset)
«`

Определение модели

Мы определяем облегчённую модель на основе ResNet, адаптированную для CIFAR-10, и реализуем полный цикл обучения. Мы обучаем сеть, используя стандартную потерю кросс-энтропии и оптимизацию Adam для обеспечения стабильной сходимости. Мы сохраняем логику обучения идентичной для чистых и отравленных данных, чтобы изолировать эффект отравления данных.

«`python
def get_model():
model = torchvision.models.resnet18(num_classes=10)
model.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False)
model.maxpool = nn.Identity()
return model.to(CONFIG[«device»])

def trainandevaluate(train_loader, description):
model = get_model()
optimizer = optim.Adam(model.parameters(), lr=CONFIG[«lr»])
criterion = nn.CrossEntropyLoss()
for _ in range(CONFIG[«epochs»]):
model.train()
for images, labels in train_loader:
images = images.to(CONFIG[«device»])
labels = labels.to(CONFIG[«device»])
optimizer.zero_grad()
outputs = model(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
return model
«`

Знакомство с SETA: среды обучения с подкреплением для терминальных агентов с 400 задачами и набором инструментов CAMEL

Команда исследователей из CAMEL AI, Eigent AI и других соавторов выпустила SETA — набор инструментов и стек сред для обучения с подкреплением терминальных агентов. Проект нацелен на агентов, которые работают внутри оболочки в стиле Unix и должны выполнять проверяемые задачи в рамках эталонной системы, такой как Terminal Bench.

Основные вклады

  • Состояние дел в области терминальных агентов в Terminal Bench: они достигают передовых результатов с помощью агента на основе Claude Sonnet 4.5 в Terminal Bench 2.0 и с агентом на основе GPT 4.1 в Terminal Bench 1.0.

  • Масштабируемое обучение RL с помощью синтетических терминальных сред: исследовательская группа выпускает начальный синтетический набор данных с 400 терминальными задачами, охватывающими ряд уровней сложности.

  • Чистая конструкция агента, которая обобщается в рамках обучающих и оценочных фреймворков: одна и та же реализация агента используется как для локальных запусков задач, так и для официальной оценки в Terminal Bench.

Структура набора инструментов терминала

Репозиторий кода SETA демонстрирует набор инструментов терминала, который превращает языковую модель в исполняемого терминального агента. Для каждого запуска задачи фреймворк создаёт структурированный каталог журналов в каталоге `evaluation/terminalbenchrun`.

Ключевые файлы включают:

  • `chatagent.log`, в котором записывается полная история сообщений агента и вызовов инструментов, включая результаты тестов.

  • `sessions directory` с `session_logs`, которые фиксируют взаимодействия терминала из набора инструментов.

Результаты

SETA достигает передовых результатов на Terminal Bench. С Claude Sonnet-4.5 в качестве основы, терминальный агент CAMEL достигает 46,5% точности на Terminal Bench 2.0 по 89 реальным задачам, занимая первое место и опережая вторую систему на 3 процентных пункта.

Основные выводы

  • SETA — это совместный проект сообщества, который предоставляет как наборы инструментов для агентов, так и синтетические среды RL специально для терминальных агентов, согласованные с форматом оценки Terminal Bench.

  • Фреймворк сообщает о передовых результатах для терминальных агентов CAMEL на Terminal Bench 1.0 и 2.0 при использовании Claude Sonnet 4.5 и GPT 4.1 в качестве базовых моделей.

  • Набор данных SETA RL на Hugging Face содержит 400 синтетических терминальных задач, каждая из которых упакована в `task.yaml`, `Dockerfile` и `run-tests.sh`, причём 260 задач используются для RLVR-дообучения агента на основе Qwen3-8B.

1. Какие параметры конфигурации используются в руководстве для атаки с отравлением данных в глубоком обучении?

В руководстве используются следующие параметры конфигурации:
* `batch_size`: размер пакета данных для обучения.
* `epochs`: количество эпох обучения.
* `lr`: скорость обучения.
* `target_class`: целевой класс для отравления.
* `malicious_label`: вредоносный класс, в который переворачиваются метки.
* `poison_ratio`: доля образцов из целевого класса, которые переворачиваются в вредоносный класс.

2. Как реализуется отравленный набор данных в руководстве?

В руководстве реализуется пользовательская оболочка набора данных `PoisonedCIFAR10`, которая позволяет контролировать отравление меток во время обучения. Для этого выборочно переворачивается заданная доля образцов из целевого класса в вредоносный класс, сохраняя при этом тестовые данные нетронутыми.

3. Какие основные вклады были сделаны командой исследователей из CAMEL AI, Eigent AI и других соавторов в области обучения с подкреплением терминальных агентов?

Основные вклады команды исследователей в области обучения с подкреплением терминальных агентов включают:
* Состояние дел в области терминальных агентов в Terminal Bench: достижение передовых результатов с помощью агента на основе Claude Sonnet 4.5 в Terminal Bench 2.0 и с агентом на основе GPT 4.1 в Terminal Bench 1.0.
* Масштабируемое обучение RL с помощью синтетических терминальных сред: выпуск начального синтетического набора данных с 400 терминальными задачами, охватывающими ряд уровней сложности.
* Чистая конструкция агента, которая обобщается в рамках обучающих и оценочных фреймворков: использование одной и той же реализации агента как для локальных запусков задач, так и для официальной оценки в Terminal Bench.

4. Какие ключевые файлы включает в себя набор инструментов терминала SETA?

Ключевые файлы набора инструментов терминала SETA включают:
* `chatagent.log`, в котором записывается полная история сообщений агента и вызовов инструментов, включая результаты тестов.
* `sessions directory` с `session_logs`, которые фиксируют взаимодействия терминала из набора инструментов.

5. Какие результаты были достигнуты с помощью SETA на Terminal Bench?

С помощью SETA на Terminal Bench были достигнуты передовые результаты. Терминальный агент CAMEL достиг 46,5% точности на Terminal Bench 2.0 по 89 реальным задачам, занимая первое место и опережая вторую систему на 3 процентных пункта.

Источник