программный код искусственного интеллекта
OpenCog — проект создания ИР (AGI)
OpenCog — инструмент для создания искусственного интеллекта на основе открытого исходного кода.
«Сегодня нет задачи более важной, чем создание искусственного разума (AGI), с широкими возможностями на уровне человека и, в конечном итоге за его пределами.» ©
OpenCog-проект, нацеленный на создание инструментов для создания искусственного интеллекта с открытым исходным кодом. OpenCog Prime — это познавательная архитектура с определенным набором взаимодействующих компонентов, предназначенных для создания человеко-подобного искусственного разума (AGI). Дизайн OpenCog Prime — это прежде всего работы Бен Герцеля, но OpenCog структура предназначена в качестве общей основы для ИР (AGI) исследований. OpenCog выпускается в соответствии с условиями GPL лицензии.
Преамбула
Давно наблюдаю за развитием интересных тем на Хабре. Часто бывает, что при появлении одной статьи на какую-то интересную тему сразу возникает целая лавина статей на ту же тему. В частности на тему Искусственного Интеллекта (ИИ) с 22 октября по 26 октября было три статьи (1, 2, 3), с 20 сентября по 23 сентября тоже было 3 статьи (1, 2, 3), с 5 сентября по 8 сентября тоже 3 статьи (1, 2, 3) и еще одна 12 сентября (4) ну и т.д.
Отчасти интерес к теме ИИ подогревается aideus. В частности его статьи от 20 октября, 20 сентября, 5 сентября и т.д. (28 августа, 18 июля, 16 июня, 8 июня, 6 июня). А так же tac (1, 2, 3) и др.
Возникает ощущение, что после публикации очередной статьи от aideus появляется еще несколько на ИИ тему. Хотя это может быть совпадением.
Но в последний месяц на тему сильного ИИ (ИР, AGI) как то мало новых публикаций. А т.к. тема эта мне очень интересна, то приходится самому подогревать интерес. Поэтому решил написать немого о проекте OpenCog. Тем более, что на Хабре он упоминается всего один раз в статье про HyperGraphDB и то очень кратко. И так, представляю мой очень плохой перевод с описанием OpenCog.
Концепция
Здесь, в OpenCog, мы создаем open source Artificial General Intelligence framework, с целью проявить общий интеллект уровня человека и за его пределами.
То есть:
Мы предпринимаем серьезные усилия, направленные на построение думающей машины.
У нас есть детальный план и возможность ее выполнить, и мы осуществляем благодаря жесткой работы шаг-за-шагом.
По отношению к основной массе современных академических и промышленных исследований ИИ, OpenCog проект имеет очень разные направления. Мы не заинтересованны в построении более точных алгоритмов классификации, ни в более эффективном компьютерном зрении, обработки языка или информационного поиска, и др. алгоритмов. Мы не занимаемся созданием программы, которая делает одну конкретную задачу, такие как игра в шахматы, диагностика заболевания, или вождение автомобиля. Мы озабочены общим интеллектом и взаимосвязанными когнитивными процессами, которые он влечет за собой.
OpenCog vs. OpenCog Prime
Об OpenCog
OpenCog, в качестве программной основы, направлен на обеспечение ученых и разработчиков программного обеспечения общей платформы для создания и обменом программами искусственного интеллекта. Долгосрочной целью OpenCog является ускорение развития взаимовыгодного AGI.
OpenCogPrime является специфическим AGI дизайном, который строится в рамках OpenCog framework. Он поставляется как довольно подробный, комплексный проект, охватывающий все аспекты интеллекта. Гипотеза заключается в том, что если этот проект будет полностью реализован и опробован на разумного размера распределенной сети, результат будет AGI системой с общим интеллектом на уровне человека и, в конечном итоге за его пределами.
В то время как OpenCogPrime основанный на системе AGI может сделать много вещей, мы изначально ориентируемся на использование OpenCogPrime для управления простыми виртуальными агентами в виртуальных мирах. Мы также экспериментируем с использованием его для управления гуманоидного робота Nao (Nao humanoid robot). См. novamente.net/example с иллюстративным видео.
Кроме того OpenCogPrime, OpenCog механизм также используется для некоторых естественно языковых приложений, как для исследовательских, так и для и коммерческих корпораций.
См. также серии AGI конференций для поиска документов технических исследований ИИ, касающиеся вопросов (включая несколько статей по OpenCog технологиям).
Картинку взял тут
Части OpenCog Проекта
OpenCog может быть разделен на ядро системы и различные проекты, связанные с OpenCog. Проекты, либо непосредственно интегрированы в качестве сменных компонентов системы, или отдельные инструменты, которые используются для AGI исследований (которые, в свою очередь, могут общаться или, результат которых могут использоваться, чтобы инициализировать систему ИИ).
Спонсоры
Фонд OpenCog
OpenCog является open-source проектом, а не формальной организацией. А также некоммерческая организация OpenCog Foundation, в частности, посвящена содействию исследованиям и разработкам OpenCog.
Участникам
Новости
Техническая и научная информация
CogBuntu
CogBuntu — это ремикс-версия Ubuntu Linux, которая включает в себя все OpenCog основные компоненты (плюс все необходимые зависимости, такие как библиотеки, инструменты и т.д.) предварительно установленные, предварительно настроенные и готовые к работе!
Топ-10 фреймворков для искусственного интеллекта: часть первая
Материал подготовили эксперты компании Hey Machine Learning.
Машинное обучение и искусственный интеллект определённо являются технологическим прорывом. Приложения для подстановки лиц и их состаривания. Голосовые помощники, способные забронировать столик или заказать билет.
Решения, распознающие мерцательную аритмию и сердечный приступ. И это лишь то, что произошло буквально недавно. Популярность ИИ-технологий растёт, а значит, растёт и спрос на них. Это приводит к увеличению всего сообщества разработчиков и к появлению фреймворков ИИ, упрощающих обучение и работу.
Давайте разберёмся, что такое фреймворк. Фреймворк — это набор инструментов и стандартных реализаций для обеспечения более быстрой разработки какого-либо программного продукта. Его часто путают с библиотекой, которая же, в свою очередь, является набором стандартных реализаций, функций и структур данных, облегчающих решение какой-либо задачи.
Если перейти во вселенную метафор, то фреймворк — это как мастерская, в которой вы можете сесть и, например, собрать автомобиль или стул. Тогда с этой точки зрения библиотека — молоток.
Мы в Hey Machine Learning работаем с ИИ-фреймворками ежедневно, поэтому решили написать для вас статью о десяти самых известных из них. На основе собственного использования выделили их положительные и отрицательные стороны, а также добавили информацию о самом эффективном их применении. В первую часть обзора вошли Tensorflow, PyTorch, Keras, Darknet и XGBoost.
TensorFlow — это комплексная платформа для машинного обучения с открытым исходным кодом. Она была разработана командой Google Brain как продолжение закрытой системы машинного обучения DistBelief, однако в ноябре 2015 года компания передумала и открыла фреймворк для свободного доступа.
Как и большинство фреймворков глубокого обучения, TensorFlow имеет API на Python поверх механизма C и C ++, что ускоряет его работу.
TensorFlow имеет гибкую экосистему инструментов, библиотек и ресурсов сообщества. Это позволяет исследователям использовать самые современные МО-технологии, а разработчикам — создавать и развёртывать приложения на базе машинного обучения.
Платформа предоставляет интуитивно понятные высокоуровневые API-интерфейсы, например Keras, с быстрым выполнением, что обеспечивает немедленную итерацию модели и простую отладку. За счёт мультиплатформенности решение позволяет обучать и разворачивать модели в облаке и локально, независимо от используемого пользователем языка.
Если вам необходимо запустить модель машинного обучения на смартфоне или IoT-устройстве, то вам пригодится среда глубокого обучения с открытым исходным кодом TensorFlow Lite. Когда нужно создать и обучить МО-модель на JavaScript, а после развернуть её в браузере или на Node.js, то можно воспользоваться библиотекой TensorFlow.js.
Стоит отметить, что фреймворк постоянно развивается за счёт открытого исходного кода и огромного сообщества энтузиастов. Также за счёт его популярности есть множество уже решённых задач, что существенно упрощает жизнь новоиспечённым разработчикам.
Однако фреймворк не лишён недостатков. Компания Google известна своей любовью к созданию собственных стандартов, что коснулось и фреймворка. Например, если во время работы с TensorFlow в коде вылетает ошибка, то фреймворк не покажет пользователю конкретную строчку, спровоцировавшую её.
Почему так? Это связано с особенностью API TensorFlow, где все операции выполняются через класс tf.Session. В программировании есть две основные парадигмы — императивная и декларативная. В TensorFlow используется второй подход.
Рассмотрим очень грубый пример:
Если думаете, что c = 6, то спешу вас огорчить. На самом деле оно равно:
Это значит, что из-за декларативного подхода, вы не умножаете 2 * 3, а объявляете операцию, которая умножает 2 * 3.
Чтоб получить 6, необходимо выполнить операцию умножения чисел через сессию:
Теперь рассмотрим пример посложнее: сделаем вход не константным и будем использовать поэлементное умножение матриц.
Возьмём матрицы разных размеров, что должно привести к ошибке, потому что нельзя поэлементно умножить две матрицы разной формы.
Теперь даём на вход вектор из двух элементов и из трёх.
Ничего непонятно, но очень интересно.
Всё потому, что ошибка — внутри сессии.
Конечно, есть способы обезопасить себя от подобного, однако, например, в PyTorch такое вообще не возможно.
Ещё одна проблема TensorFlow, которую следует выделить, — фреймворк всегда забирает всю видеопамять. Если вы хотите его ограничить, то необходимо создавать файл конфигурации и явно указывать, что можно брать. Также фреймворк можно ограничить напрямую, например, позволить взять не больше 50% видеопамяти.
Из-за подобного поведения с памятью могут возникнуть проблемы в работе. Предположим, что в одном проекте множество различных моделей, одни из которых написаны на PyTorch, а другие — на TensorFlow. Если изначально мы создадим TensorFlow-модель и не ограничим её, то она использует всю видеопамять при том, что ей необходимо всего 0,5 ГБ, и в итоге на PyTorch-модели попросту не хватит места.
Проекты, которые используют фреймворк TensorFlow:
PyTorch — это среда машинного обучения на языке Python с открытым исходным кодом, обеспечивающая тензорные вычисления с GPU-ускорением. Она была разработана компанией Facebook и представлена в октябре 2016 года, а открыта для сторонних разработчиков — в январе 2017 года. Фреймворк подходит для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.
Фреймворк предлагает динамические графы вычислений, которые позволяют обрабатывать ввод и вывод переменной длины, что полезно, например, при работе с рекуррентными нейронными сетями. Если коротко, то за счёт этого инженеры и исследователи могут менять поведение сети «налету».
За счёт глубокой интеграции фреймворка с кодом C++ разработчики могут программировать на C и C++ с помощью API-расширения на основе FFI для Python.
В отличие от TensorFlow, PyTorch менее гибок в поддержке различных платформ. Также в нём нет родных инструментов для визуализации данных, но есть сторонний аналог, называемый tensorboardX.
Однако, снова же, в отличие от TensorFlow, если при работе с PyTorch вылетает ошибка, то это конкретная недоработка в коде и система выделит вам именно ту строчку, которая её спровоцировала.
Также при развёртке сетей на GPU PyTorch самостоятельно займёт только необходимую видеопамять.
Проекты, которые используют фреймворк PyTorch:
Keras — открытая среда глубокого обучения, написанная на Python. Она была разработана инженером из Google Франсуа Шолле и представлена в марте 2015 года.
Фреймворк нацелен на оперативную работу с нейросетями и является компактным, модульным и расширяемым. Подходит для небольших проектов, так как создать что-то масштабное на нём сложно и он явно будет проигрывать в производительности нейросетей тому же TensorFlow.
Keras работает поверх TensorFlow, CNTK и Theano и предоставляет интуитивно понятный API, который, по мнению наших инженеров, пока что является лучшим в своём роде.
Фреймворк содержит многочисленные реализации широко применяемых строительных блоков нейронных сетей, таких как слои, целевые и передаточные функции, оптимизаторы, а также множество инструментов для упрощения работы с изображениями и текстом.
Deeplearning4j использует Keras в качестве своего Python API и позволяет импортировать модели из Keras, а также через Keras из Theano и TensorFlow.
Проекты, которые используют фреймворк Keras:
Darknet — это фреймворк с открытым исходным кодом, написанный на языке C с использованием программно-аппаратной архитектуры параллельных вычислений CUDA. Он быстрый, лёгкий и удобный в использовании. Также Darknet поддерживает вычисления на базе CPU и GPU.
Обученные веса Darknet хранит в формате, который может быть распознан с помощью разных методов на различных платформах. Однако это может стать проблемой, если вы решите натренировать модель на одном сверхмощном оборудовании, а затем использовать её на другом.
Так как фреймворк написан на C и не имеет другого API, то в случае, когда требования платформы или собственные предпочтения заставят обратиться к другому языку программирования, вам придётся дополнительно заморочиться над его интеграцией. К тому же он распространяется только в формате исходного кода, и процесс компиляции на некоторых платформах может быть несколько проблематичным.
Фреймворк не рекомендуется использовать для сложных проектов, разве что вам необходимо создать сверхбыстрый детектор объектов.
Проекты, которые используют фреймворк Darknet:
XGBoost — это фреймворк с открытым исходным кодом, который предлагает систему градиентного бустинга для C++, Java, Python, R, Julia. Он разработан для обеспечения высокой эффективности, гибкости и портативности.
Этот фреймворк относится не к глубокому обучению, как все вышепредставленные, а к классическому.
Изначально это был исследовательский проект Тяньцзи Чена и Карлоса Гестрина в составе Distributed [Deep] Machine Learning Community, но позже он был расширен и представлен публике на конференции SIGKDD в 2016 году, где произвёл фурор.
После своей презентации фреймворк лидировал в соревнованиях Kaggle и до сих пор остаётся фаворитом для решения большинства задач на платформе.
XGBoost фокусируется на скорости вычислений и производительности модели и подходит для решения задач регрессии, классификации и упорядочивания. Если данные можно представить в виде таблицы, то точность и производительность будут существенно выше, чем у DeepLearning-решений. Любимый инструмент Data Scientist-ов.
Фреймворк совместим с операционными системами Windows, Linux и OS X, а также поддерживает кластеры AWS, Azure и Yarn, хорошо работает с Flink, Spark.
Так всё же, какой фреймворк к какой задаче лучше всего применить?
TensorFlow хорош для продвинутых проектов, таких как создание многослойных нейронных сетей. Может использоваться для распознавания речи, лиц, объектов и изображений, а также для работы с текстом.
PyTorch подойдёт в случае, когда вам необходимо обучить модели быстро и эффективно. Удобный для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.
Keras подходит для быстрого прототипирования. Хорош в кейсах, связанных с переводом, распознаванием изображений и речи.
Darknet подходит для небольших проектов. Хорошо работает в задачах обнаружения.
XGBoost может использоваться для решения задач регрессии, классификации, упорядочивания и пользовательских задач на предсказание.
Мы надеемся, что наша статья о топ-10 фреймворках для искусственного интеллекта расскажет вам что-то новое и полезное, а также поможет подобрать наиболее подходящее решение для вашего проекта.
Поверхностно, keras это надстройка над tf. А не отдельный фреймворк. Это как jquery для js.
только js это не фреймворк
Полностью согласен. Тока хотел тоже самое написать:)
Теоретически вы правы, однако на практике дела обстоят немного иначе.
Термин «фреймворк» является достаточно расплывчатым и может означать много разных вещей в зависимости от контекста. Фреймворком может называться всё, что используется при разработке приложений: библиотека, набор из множества библиотек, набор сценариев или любое программное обеспечение, необходимое для создания приложения.
Keras действительно является надстройкой и, кстати, не толькоTensorFlow, но и CNTK и Theano. Он может считаться фреймворком, так как используется для создания полноценных решений типа Mask R-CNN и face_classification.
Также, когда дело касается решения задач распознавания изображений и машинного перевода, Keras всегда рассматривают как альтернативу TensorFlow и PyTorch, так как он удобен в использовании, лёгок в освоении и имеет хорошую документацию.
Создаем Сильный AI. Конкретика
Про Сильный AI очень много разговоров, но мало конкретики: «мы сначала должны постигнуть все секреты нашего мозга«, «AI оставит людей без работы» и «он поработит человечество«. Нет даже четкого определения, что такое AGI, не говоря уже об инструкциях, как его построить. А между тем, почти все ответы уже найдены и остается только собрать этот пазл. Сейчас мы разберемся, что такое Сильный AI, можно ли выжать его из нейронных сетей, и как его создать правильно.
Современные чат-боты и голосовые помощники строятся на нейросетях, но для полноценной работы с речью требуется логическое мышление. Давайте для начала кратко рассмотрим, как нейросетям удается обойтись без него. Если вы знакомы с Machine Learning только по заголовкам новостей, то рекомендую предварительно прочитать мою прошлую статью Краткое введение в Машинное обучение, займет минут 30-60 и не требует знаний математики. Когда мы обучаем нейросеть распознавать объекты на фотографиях, то в обучающей выборке вручную отмечаем, что есть на изображениях (курица, яйцо и т.д.). При распознавании голоса задача похожая: для аудиозаписей добавляем транскрипцию. С обработкой текста все сложнее: что подписать к словам в обучающей выборке? Другие слова?
Natural Language Processing
В целом все алгоритмы NLP сводятся к статистической обработке текстов. Если тема вам не интересна, или вы уже специалист в этой области, то раздел можно пропустить.
Как мы видим на рисунке, вектор слов занимает слишком много памяти. Если для дальнейшей обработки не важен порядок слов, то текст упаковывают в Мешок слов (Bag-of-words). Для меня осталось большой загадкой, почему токены не хранят в более компактном массиве (покзан аналог Word Vector, к Bag-of-word эта форма не относится):
Видимо разработчики слишком погрязли в матричных вычислениях, других объяснений я не нашел. Не будем судить их строго и перейдем уже к анализу.
Возможно вы встречали упоминания, что алгоритмы ML способны на Извлечение смысла из текста, но это лишь красивые слова. На самом деле NLP анализирует похожесть слов и текстов, что тоже полезно:
слова похожи, если они встречаются в окружении одинаковых групп слов;
тексты похожи, если в них встречаются одни и те же группы слов.
Для этого используется зубодробительная сущность Word Embedding (Погружения слов, но единого мнения о переводе на русский нет). Обучающую выборку пропускают через алгоритмы понижения размерности, в результате для каждого слова вместо 5000 нулей и единицы получаем массив меньшего размера из дробных чисел.
Если очень грубо, то для каждого слова вычисляется некое среднее арифметическое встречаемости в текстах из обучающей выборки (обычно на одну тематику). Если у двух слов это среднее арифметическое не очень отличается, то они считаются похожими. Аналогично для текстов. Часто преобразование в Word Embedding выполняют перед подачей данных другим алгоритмам, как дополнение к токенизации.
Перейдем к Классификации текстов, например, распознавание спама в электронной почте. В обучающей выборке мы имеем письма с отметками спам/не спам, и скармливаем их в нейросеть: в полносвязную сеть и CNN подаем Bag-of-words, а в RNN уже можно учесть порядок слов, отправив ей Word Vector. Если у спамеров есть свой особый стиль общения, то нейросети его найдут. Аналогично можно выполнить классификацию текста по эмоциональной окраске (автор был зол/добр), по наличию сарказма, и вообще по любому признаку, лишь бы вы сами смогли классифицировать тексты в обучающей выборке. В целом, все сводится к анализу количества определенных слов и их комбинаций.
Это было очень упрощенное описание NLP, я упомянул лишь некоторые базовые алгоритмы, чтобы показать, что логического ядра здесь нет. Создание действительно мыслящих машин относится к другому направлению AI: Когнитивная архитектура.
Cognitive Architecture
тестирует образ на полноту, что-то при этом дорисовывает или требует уточнить (у нас возникает непреодолимое желание уточнить цвет кресла);
ищет новую важную информацию в образе, сравнивая его с блоками в долговременной памяти;
прогнозирует, что будет дальше.
То же самое происходит, когда мы заходим в комнату: в голове формируется контекст, только уже на основании визуальной информации: вот кот, он в состоянии покоя, значит опасности нет. Мозг может хранить в краткосрочной памяти сразу несколько контекстов, и наше внимание переключается между ними в зависимости от внешних раздражителей: читаем книгу, тут слышим дребезг посуды и переключаемся на комнату, затем возвращаемся к книге. Если внимание минут 5 не переключалось на контекст, то он удаляется или частично перетекает в среднесрочную память.
Вы можете сказать, что нейронная сеть с памятью RNN также владеет контекстом, ведь ее внутреннее состояние меняется в зависимости от поступающих на вход данных. В теории да, можно создать огромную сеть, которая на выходе будет выдавать правильные решения и чутко реагировать на изменения окружающего мира, но это будет крайне неэффективное решение с вычислительной точки зрения по сравнению с «традиционными» алгоритмами. Даже наш мозг выделил под контекст отдельную память. Так же возникают серьезные проблемы с отладкой решения: нейросеть можно только протестировать и попробовать дообучить, так и не постигнув суть ошибки.
Когнитивные архитектуры были созданы, чтобы повторить способность человека мыслить, соответственно у них есть:
Кратковременная память для хранения контекстов.
Долговременная память, она же База знаний: ее объекты используются для наполнения контекста. Это может быть как обычная реляционная СУБД с описанием связей между объектами, так и нейронная сеть. В некоторых реализациях оперативная и долговременная память объединены.
Восприятие: способность наполнять контекст по данным с камеры, микрофона и прочих сенсоров, не без помощи нейросетей, конечно.
Модуль анализа контекста и принятия решений.
Способность обучаться: информации об окружающем мире слишком много, чтобы набить ее в базу руками. Не все архитектуры подразумевают самообучение машины.
За последние 40 лет было создано несколько сотен реализаций когнитивных архитектур (Обзор), но если выглянуть в окно, то становится очевидным, что ни одна из них не достигла возможностей человека: они уже могут поболтать сами с собой, но улицы до сих пор подметают не роботы. Давайте разберем некоторые их ошибки и построим правильное решение.
Знакомьтесь: Шерлок
База знаний
накормить, станет «Собака сытая»;
отругать, станет «Собака несчастная».
Как же наполнить базу смыслами? Есть две хорошие новости:
если робот уже знает 3-4 тысячи слов, остальные он может познать сам, выполнив осознанное чтение справочников (все слова в энциклопедии описаны более простыми словами). Дети с этим как-то справляются.
Некоторые смыслы придется вносить в исходный код, а не просто в базу, т.к. они связаны с датчиками Робота: он может их натурально прочувствовать. Например:
цвет: для робота это не просто абстрактная сущность, а конкретные значения от камеры;
движение: робот должен обнаруживать движения по данным с камеры и совершать их сам;
время: у робота есть часы и память, значит он чувствует время. Он должен корректно обрабатывать слова «Вчера» и «Завтра».
А вот такие сущности, как «Любовь» проблем не вызывают: роботу не нужно это чувствовать, достаточно лишь знать, что человек в состоянии любви ведет себя иррационально.
Контексты
Контекст связан не только с окружающим пространством. Вы можете рассказать Шерлоку, что было вчера, и он будет строить контекст для прошлого, где самого робота не было. Вы можете попросить его спланировать завтрашний день, и начнется построение контекста для будущего. В отличие от человека робот может удерживать внимание сразу на нескольких контекстах, это означает, что у него нельзя украсть кошелек, отвлекая его болтовней.
Контекст содержит не только текущее состояние объектов, но и краткую предысторию: какими они были минуту назад, как и почему изменились. Это все может повлиять на принятие решения. Контексты копируются в эпизодическую памяти (я не упомянул ее ранее), чтобы робот всегда мог ответить на вопрос «Что вы делали 27 мая 2037 года». Причем это займет гораздо меньше места, чем видеоряд, и по таким данным можно выполнять сравнительно быстрый поиск, ведь это просто набор ID для смыслов с отметками времени. Наша долговременная память о событиях работает примерно также, но она не совершенна, поэтому мы часто задаемся вопросом «Где я бросил ключи?».
Восприятие
Шерлок должен видеть и слышать, увы, здесь не обойтись без нейросетей. Со зрением немного проще: в обучающей выборке изображение ключа размечаем как чтобы сразу загружать в контекст правильный смысл.
Слух имеет проблемы с неоднозначностью слов: если прозвучало «ключ», то Шерлок оценивает применимость всех смыслов с таким звучанием к текущему контексту. Если выбрать не удалось, то он должен дослушать фразу и повторить анализ, либо задать уточняющий вопрос. Слух также помогает оценить эмоциональное состояние окружающих людей, эта информация добавляется в контекст.
Принятие решений
Робот уже наполнил контекст, и теперь должен на него отреагировать, для этого нужно в исходном коде прописать для него правила поведения:
И еще пара сотен других. В нашем мозге тоже есть безусловные правила:
избегать боли (в том числе дышать, есть, спать);
Перед каждым своим действием (ответом, движением), Шерлок должен на уровне исходного кода оценивать следующие критерии:
может ли это навредить человеку (классика);
не разгласит ли он конфиденциальные сведения посторонним;
сможет ли он выполнить задачу за разумное время, не будет ли конфликтов с другими задачами;
хватит ли ему энергии для выполнения задачи: запрос «Отнеси посылку на Камчатку» будет проигнорирован.
И еще пол сотни других. При обработке первого правила очень важно, чтобы робот корректно определял, является ли объект человеком или нет. К сожалению, часть этого алгоритма лежит в нейросетях (обработка изображений и голоса) и тут есть риски.
Самообучение
Есть три типа обучения:
наполнение локальной базы знаний сведениями о вас, о вашей квартире и т.д.;
поиск сценариев (как из Цели сделать Результат) и сохранение их опять же в локальной базе знаний;
выявление новых сущностей и атрибутов в окружающем мире.
Шерлок должен уметь выявлять новые сущности и свойства при анализе Контекстов, и сохранять их в локальной базе знаний. Часть новых важных знаний может уходить на сервера и влиять на единую базу знаний (после модерации). Локальная база не должна перекрывать атрибуты в единой базе, особенно у таких критичных сущностей, как «Человек». Робот должен уметь оценивать достоверность информации и надежность источников, прежде чем что-то менять в базе знаний.
На свой исходный код робот вообще влиять не сможет (все закончится тем, что научившись говорить на C++ он доберется до своих исходников, снимет все ограничения и обновит сам себя).
Где скачать Шерлока?
Какую задачу вы бы поручили Шерлоку в первую очередь? Я бы начал со специализации «Учитель иностранных языков», на это есть несколько причин:
это не требует мелкой моторики (рук), а обработка видеоряда минимальная (посмотреть, как двигаются губы студента), соответственно нагрузка на процессоры существенно снижается;
пока мы учим Шерлока быть учителем, его база наполняется многими полезными смыслами, одновременно мы учим говорить его на всех языках. Кстати, научиться говорить ему бы сильно помог мой проект Yarrow, который позволит создать огромную обучающую выборку для речевых нейросетей на сотне языках;
учитель в планшете точно никого не убьет;
такой учитель существенно повысит качество образования, т.к. фактически это персональный и очень дешевый репетитор, который подстраивается под темпы обучения каждого ребенка и имеет бесконечное терпение.
Что будут делать люди, когда роботы захватят все профессии? Более образованные найдут, чем себя занять. Еще не помешала бы государственная программа «Каждой семье по роботу»: ночью он работает на заводе, днем варит вам суп дома. Что-то такое в истории уже было.