Логика, Символы и Нейроны: Дулат Ерзат о будущем нейросимвольного ИИ

DSMLKZ - Data Science Kazakhstan 675 17 мин 4 мин 02.06.2019
Главное

На стыке современных нейронных сетей и классического символьного искусственного интеллекта рождается новое направление — нейросимвольный подход. В своем выступлении Дулат Ерзат (Dulat Yerzat) разбирает, почему современные Deep Learning модели до сих пор не справляются с простейшей логикой и как объединение нейронов с логическим программированием может решить проблему интерпретируемости и нехватки данных.

🧠 Ограничения нейронных сетей: почему «умные» модели не понимают логику 0:00

Нейронные сети обладают неоспоримыми плюсами: они устойчивы к шуму и эффективно работают с несимвольными данными, такими как изображения или аудио . Однако эти преимущества порождают два критических минуса:

  1. Data Inefficiency (неэффективность данных): для обучения модели требуется скармливать ей колоссальные объемы информации .
  2. Отсутствие интерпретируемости: нейронные сети представляют собой «черный ящик», логику которого невозможно проследить .

Глобальную проблему нейросетей обозначил ещё один из «отцов-основателей» ИИ Джон Маккарти: они способны находить закономерности только на уровне пропозициональной логики, но не могут обобщать правила на уровне логики первого порядка .

В качестве примера Дулат Ерзат приводит задачу сравнения чисел. Если обучить нейросеть на огромном датасете всех возможных пар чисел, она покажет высокую точность . Но если убрать из выборки определенные пары (например, модель видела 4 < 5 и 5 < 6, но никогда не встречала 4 < 6), она не сможет вывести общую закономерность «меньше чем». В логике первого порядка это решается введением переменных, что для стандартных нейросетей остается непосильной задачей .

⚙️ Попытки эмуляции: Neural Turing Machines и программная индукция 3:07

Для решения проблемы логического вывода создавались специальные архитектуры, известные как Neural Program Induction (NPI). Основная идея заключалась в том, чтобы заставить архитектуру нейросети имитировать работу «железа» компьютера .

🧩 Нейросимвольный подход: поиск идеального языка программирования 4:45

Альтернативой стал нейросимвольный подход (Neuro-symbolic AI), где нейронные сети обрабатывают «сырые» данные (например, картинки), а логические алгоритмы генерируют на их основе программу . Преимущество символьных алгоритмов в том, что им достаточно пары примеров для обучения, и их результат абсолютно понятен человеку .

При выборе языка для синтеза программ ИИ ориентируется на два критерия:

  1. Чистота (Pure language): отсутствие побочных эффектов (side effects), чтобы функции были детерминированы .
  2. Краткость (Expressiveness): поиск в пространстве программ — это перебор в огромном дискретном пространстве. Чем короче может быть программа, тем выше шансы её найти .

Языки вроде C++ или Python не подходят для автоматического синтеза, так как они созданы для людей . Исследования сместились в сторону логического программирования и таких инструментов, как:

🛠️ Индуктивное логическое программирование (ILP) 9:02

Ключевым алгоритмом в этой области является ILP (Inductive Logic Programming). По сути, это метод машинного обучения, пришедший из символьного подхода .

Процесс работы ILP строится на трех компонентах:

  1. Background Knowledge (B): фоновые знания (факты, например: «Джон — мужчина», «Джон — родитель Кейт») .
  2. Примеры (E): набор положительных и отрицательных примеров того, что мы хотим выучить .
  3. Гипотеза (H): код или предикат, который генерирует система (например, предикат «дедушка») .

Современные системы ILP (обсуждавшиеся на профильной конференции в 2019 году) значительно эволюционировали. Чтобы избежать случайного перебора и комбинаторного взрыва, задачу поиска программы переформулируют как SAT-проблему (задачу выполнимости булевых формул) .

📉 Дифференцируемое логическое программирование 12:56

Актуальный тренд — сделать всё дифференцируемым, чтобы применять градиентный спуск. Разработчики (в частности, подразделение DeepMind) предложили заменить дискретные флаги (0 или 1) в логических клаузах на непрерывные значения в интервале от 0 до 1 .

Как это работает:

  1. Специальные шаблоны генерируют огромное количество потенциальных логических правил (клауз) .
  2. Каждому правилу присваивается «вес» (флаг), который теперь является числом, выдаваемым нейросетью .
  3. С помощью градиентного спуска система оставляет только те правила, которые дают True на положительных примерах и False на отрицательных .

Результаты впечатляют: в задаче сравнения чисел, где обычная нейросеть начинает «деградировать» при отсутствии части обучающих данных, дифференцируемая ILP-система сохраняет высокую точность, успешно совершая логическую индукцию .

🌐 Логика и графы знаний (Knowledge Graphs) 15:39

Еще одно применение — работа с огромными графами знаний (более 15 миллионов узлов), такими как базы фактов о знаменитостях или политике .

В таких графах часто пропущены связи (relations). Например, если есть факт «Барак Обама — президент США», логично предположить, что он живет в Вашингтоне . Логическое программирование позволяет обучать предикаты для восстановления этих связей.

Интересный подход заключается в векторизации предикатов: предикаты «отец» и «мать» в векторном пространстве будут находиться близко друг к другу, а предикат «родственник» будет более общим вектором . Это позволяет использовать мощь векторных представлений вместе со строгостью логических правил.

💬 Цитаты

«Нейронки могут находить закономерности на уровне пропозициональной логики, а на уровне логики первого порядка они уже не могут генерироваться.»

Дулат Ерзат 01:22

«С++ и Питон отпадают — это не человек пишет эти программы, мы хотим, чтобы размер программы был максимально коротким.»

Дулат Ерзат 06:51
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Пропозициональная логика
Раздел логики, изучающий логические связи между целыми предложениями без учета их внутренней субъектно-предикатной структуры.
Логика первого порядка
Формальная система, позволяющая использовать переменные и кванторы (для всех, существует) внутри утверждений.
Клауза (Clause)
Базовый логический блок или выражение в логическом программировании.
Предикат
Утверждение, принимающее значение 'истина' или 'ложь' в зависимости от значений входящих в него переменных.
Индукция (в ИИ)
Процесс вывода общих правил из конкретных примеров.
📊 Цифры
🗓 Хронология
  1. 1950-е Джон Маккарти формулирует фундаментальные проблемы ИИ и создает LISP.
  2. 2015-2016 Активное развитие архитектур Neural Program Induction и Neural Turing Machines.
  3. 2019 Конференция ILP, где были представлены современные системы индуктивного логического программирования.
⚖️ Другая сторона
Искусственный интеллект логическое программирование Deep Learning Prolog ILP Datalog higgsfield