Почему машины еще не захватили мир?

Кажется совершенно очевидным, что машины должны быть в состоянии превзойти людей в гораздо большем количестве задач, чем они могут в настоящее время, или, по крайней мере, они должны уметь делать действительно умные прогнозы. Я уверен, что мы все можем вспомнить момент, когда приложение сделало нам рекомендацию, не имевшую никакого логического смысла. Вам нужно только посмотреть на систему рекомендаций, которая рекомендовала продукт, который вы только что купили, или на спам-фильтр, который украл ответ от того, кому вы отправили сообщение. На практике мы обнаруживаем, что не можем доверять машинам принятие решений от нашего имени.

Интуитивно кажется, что нашим машинам чего-то не хватает, какой-то способности, так что если мы не будем очень осторожны в том, как мы их обучаем, они упустят ослепляюще очевидное. Почему это?

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

Есть несколько ключевых навыков, которыми обладают люди, которые явно необходимы для принятия правильных решений: обучение [1] и логическое мышление [2] поверх уже существующих база знаний (человеческая память) [3].

До сих пор в рамках основного «ИИ» из этих трех мы только действительно взломали обучение.

Навык 1 - Обучение

Основная и общепризнанная ошибка обучения в одиночку состоит в том, что обучение неглубоко; результатом всегда является сложное отображение в виде черного ящика от плоского набора симптомов до заключения. Обучающиеся машины не кодируют понимание более глубоких причин результатов, которые они видят в своих тренировочных данных. Это означает, что обучение само по себе ведет к упущению сути.

Мы спрашиваем: есть ли способ передать нашим машинам другие навыки, которыми мы обладаем и которых им не хватает? Вооруженные этими навыками, они могут принимать решения, которым мы можем доверять.

Навык 2 - Быть логичным

Удержание или рассуждение - вторая натура людей. Мы используем мысленную модель правил, чтобы предсказать, что произойдет в нашем окружении. Возьмем этот пример:

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

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

Рассуждения занимают центральное место в нашем существовании и в человеческом разуме. Следовательно, полезно создавать инструменты, которые могут автоматизировать это мышление для нас в большом масштабе и сложности. Это только начало, из этого можно извлечь еще больше.

Получайте больше за меньшие деньги

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

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

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

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

Навык 3 - Хранение знаний

Рассуждения опираются на контекст данных. Это необходимо для того, чтобы автоматически знать, при каких конкретных обстоятельствах можно сделать вывод о новом факте. Если бы мы создали для этого формулу, мы бы сказали:

Data + Context = Knowledge

Что мы на самом деле подразумеваем под контекстом?

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

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

Мы можем подумать о том, как мы храним знания в нашей голове. Люди не помещают свои воспоминания в упорядоченную систему картотечных шкафов в затылке (как бы желательно это ни казалось). Вместо этого у нас есть сеть взаимосвязанного опыта: база знаний. В наших интеллектуальных системах этот компонент называется графом знаний. Эта технология обеспечивает структурированное, контекстное хранение данных и рассуждение по всему содержанию знаний.

Навыки 1 + 2 + 3 = обучение с использованием обоснованных знаний

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

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

Как мы делаем это?

Чтобы учиться на основе обоснованных знаний, нам нужно изучать граф знаний. Обучение графов - это новая область исследований, в которой одними из наиболее многообещающих моделей являются сверточные сети графов (GCN). Исследования в области изучения графов знаний находятся в зачаточном состоянии.

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

Сверточные сети с графами знаний (KGCN)

Мы находимся в хорошей стартовой позиции, учитывая, что Grakn - это платформа графа знаний с готовыми автоматизированными рассуждениями. Следующим шагом является создание обучаемого поверх этой серверной части таким образом, чтобы использовать рассуждения. Мы бесплатно используем логику, если наша среда обучения использует Graql, язык запросов Grakn. Каждый раз, когда учащийся запрашивает через Graql, он получает как явно сохраненные, так и неявно полученные факты.

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

Проект KGCN является частью библиотеки Python с открытым исходным кодом, широко использующей TensorFlow. KGCN предоставляют пользователям Grakn метод построения векторного представления для любой концепции, содержащейся в их графе знаний. Векторное представление концепции должно инкапсулировать свою часть в графе как локально, так и глобально. Таким образом, его можно с пользой передать в конвейер обучения, зависящий от предметной области.

Это значительно упрощает изучение конвейеров. Начните с запроса концепций для использования в качестве наборов знаний для обучения / проверки / тестирования / прогнозирования с помощью Graql. Эти запросы могут быть настолько сложными, насколько это необходимо. Grakn вернет соответствующие концепции, которые можно передать в KGCN, чтобы построить вложение для каждой из них (на фото).

Получение этих вложений - самый надежный интерфейс к инструментам, доступным сообществу. По сути, это метод сведения значения любого понятия в массив. Затем этот массив может быть использован обычными инструментами машинного обучения Python (Numpy, SciPy, Keras, TensorFlow, PyTorch, Theano…).

Сети KGCN обеспечивают фундаментальный мост от знаний, хранящихся в Grakn, к исходным данным вашего собственного обучающего конвейера.

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

Вы можете поддерживать связь или связаться с нами, присоединившись к каналу Slack сообщества Grakn или нашему дискуссионному форуму. Поговорите со мной или подпишитесь на меня прямо в моем новом Twitter @jmsfltchr или через LinkedIn. Я также рад представить KGCN в следующих местах:

Надеюсь увидеть тебя там!