Concept Bottleneck Models
Модели с концептуальным узким местом (CBM) сначала предсказывают понятия, названные человеком, а затем определяют метку только на их основе, чтобы эксперты могли проверять и корректировать каждое решение.
Модель с узким местом из концептов (CBM) — это нейронная сеть, которая сначала предсказывает по входным данным набор концептов с понятными человеку названиями, а затем определяет итоговую метку, используя только эти концепты. Для рентгеновского снимка колена концептами могут быть сужение суставной щели и костные шпоры; для фотографии птицы — цвет крыла и форма клюва. Поскольку каждое предсказание проходит через этот узкий размеченный слой, человек может увидеть, какие концепты повлияли на решение, и исправить ошибочный концепт, чтобы изменить результат. Поэтому CBM — это встроенная в архитектуру форма объяснимого искусственного интеллекта (XAI). Пан Вэй Ко, Тао Нгуен, Юй Сян Тан, Стивен Муссманн, Эмма Пирсон, Бин Ким и Перси Лян из Стэнфорда и Google ввели этот термин в работе Concept Bottleneck Models на ICML 2020 и показали, что точность модели сопоставима со стандартными сквозными моделями на двух задачах: оценке остеоартрита коленного сустава по рентгеновским снимкам и определении видов птиц.
Как работают модели с концептуальным узким местом#
CBM состоит из двух частей: предиктора концептов, который преобразует входные данные, например изображение, в значения концептов, и предиктора меток, который преобразует значения концептов в выходные данные. Ко и его коллеги сравнили три способа обучения этих частей:
- Независимое: Предиктор концептов обучается на разметке концептов, а предиктор меток — на истинных концептах; части обучаются независимо.
- Последовательное: Сначала обучается предиктор концептов, затем предиктор меток учится на предсказанных концептах.
- Совместное: Обе части обучаются одновременно на взвешенной сумме ошибки по концептам и ошибки по меткам.
В данных Osteoarthritis Initiative были 36 369 рентгеновских снимков коленей с метками степени тяжести по шкале Келлгрена—Лоуренса; концептами служили 10 порядковых признаков, которые уже оценивают радиологи, например сужение суставной щели, костные шпоры и склероз кости. В наборе данных Caltech-UCSD Birds, включавшем 11 788 фотографий 200 видов, использовались 112 бинарных признаков, например цвет крыла и форма клюва. Для каждого обучающего примера нужны и концепты, и аннотации метки — это основная стоимость такого подхода.
Узкое место позволяет вмешиваться на этапе тестирования: если эксперт видит, что предсказанный концепт неверен, он заменяет его правильным значением, а предиктор меток пересчитывает выходные данные. В задаче с рентгеновскими снимками передача истинных значений всего двух концептов снизила ошибку предсказанной степени тяжести с более чем 0,4 примерно до 0,3 RMSE.
В этом примере на PyTorch обучается независимая CBM на искусственных данных: шесть бинарных концептов порождают зашумлённые входные данные, а метка зависит только от концептов. Затем измеряется точность предсказания меток, когда эксперт передаёт истинные значения наименее уверенно предсказанных концептов:
import torch
from torch import nn
torch.manual_seed(0)
# Toy data: 6 binary concepts generate noisy 20-D inputs, and the label depends only on the concepts
concepts = torch.randint(0, 2, (3000, 6)).float()
inputs = concepts @ torch.randn(6, 20) + 2 * torch.randn(3000, 20)
labels = (concepts @ torch.tensor([3.0, 2, 2, 1, 1, 1]) >= 5).float()
train, test = slice(0, 2000), slice(2000, None)
# Independent training: inputs -> concepts, and concepts -> label, each against its own ground truth
concept_model, label_model = nn.Linear(20, 6), nn.Linear(6, 1)
optimizer = torch.optim.Adam([*concept_model.parameters(), *label_model.parameters()], lr=0.05)
bce = nn.functional.binary_cross_entropy_with_logits
for _ in range(500):
optimizer.zero_grad()
loss = bce(concept_model(inputs[train]), concepts[train]) + bce(label_model(concepts[train])[:, 0], labels[train])
loss.backward()
optimizer.step()
with torch.no_grad():
probs = concept_model(inputs[test]).sigmoid()
print(f"Concept accuracy: {((probs > 0.5) == concepts[test]).float().mean():.3f}")
for k in range(4):
# Test-time intervention: replace the k least certain predicted concepts with their true values
uncertain = (probs - 0.5).abs().argsort(dim=1)[:, :k]
fixed = probs.scatter(1, uncertain, concepts[test].gather(1, uncertain))
accuracy = ((label_model(fixed)[:, 0] > 0) == labels[test].bool()).float().mean()
print(f"Intervene on {k} of 6 concepts: label accuracy {accuracy:.3f}")Предиктор концептов правильно определяет 0.834 из 6 000 тестовых концептов, а CBM верно предсказывает метки для 0.819 из 1 000 тестовых примеров. Передача истинных значений одного, двух и трёх наименее уверенно предсказанных концептов для каждого примера повышает точность предсказания меток до 0.861, 0.915 и 0.951 соответственно, не меняя ни одну из моделей.
Где применяются CBM#
CBM подходят для областей, в которых эксперты уже рассуждают через признаки с конкретными названиями. В анализе медицинских изображений в описанном выше исследовании рентгеновских снимков использовались те же признаки, которые фиксируют радиологи, поэтому врач может проверить каждый из них. Такой же подход применим к контролю безопасности: модель Ultralytics YOLO26, обученная на наборе данных Construction-PPE, обнаруживает классы с конкретными названиями, например helmet, no_helmet, vest и no_boots. Правило соблюдения требований, которое учитывает только эти обнаружения, становится узким местом из концептов, и проверяющий может связать решение с конкретным отсутствующим предметом.
В последующих работах требование к разметке ослабили. CBM без разметки формируют список концептов с помощью языковой модели и оценивают концепты с помощью CLIP, масштабируя эту идею до ImageNet без меток концептов; постфактум CBM преобразуют уже обученную модель, проецируя её эмбеддинги на направления концептов.
Ограничения#
Наборы концептов редко охватывают всё, что определяет метку, поэтому точность CBM ограничена. Когда предиктор меток получает вероятности концептов вместо жёстких значений, эти вероятности могут содержать дополнительную информацию о метке, выходящую за рамки значения каждого концепта. Этот эффект, называемый утечкой концептов, снижает надёжность объяснений и вмешательств. Модели с эмбеддингами концептов представляют каждый концепт вектором, который обучается, чтобы сохранять высокую точность и при этом поддерживать вмешательства. Неточно определённые или коррелирующие концепты приводят к ненадёжным объяснениям, а смещённая разметка концептов переносит смещение в каждое зависящее от неё решение.
CBM и связанные понятия#
- Карты значимости: Выделяют пиксели, повлиявшие на работу уже обученной модели-чёрного ящика. CBM объясняют решения через концепты с конкретными названиями и позволяют редактировать эти концепты.
- Механистическая интерпретируемость: Обратным анализом выявляет признаки и схемы, которые обученная модель усвоила самостоятельно. В CBM промежуточные концепты заранее задаются с помощью обучения с учителем.
- Линейное зондирование: Проверяет, можно ли декодировать концепт из активаций обученной модели, не меняя её предсказания. Зонды концептов для чёрных ящиков, например TCAV Бин Ким и её коллег, измеряют влияние концепта постфактум.
- Конструирование признаков: Вручную вычисляет признаки входных данных по необработанным данным. В CBM обученная модель предсказывает концепты по необработанным входным данным и обучается на человеческой разметке.










