Возможное будущее ИИ, Python как модель мышления или незаслуженно забытый Акинатор

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

Добрый день, уважаемые хабровчане. Это первая написанная мной статья на хабре(да и вообще статья), несмотря на то, что количество прочитанных уже далеко за пределами моих способностей к устному счёту, поэтому вынужден попросить вас о нескольких важных вещах:

  • Прочитайте этот параграф и следующий, чтобы понять стоит ли читать дальше. Это важно.

  • Постарайтесь не судить строго.

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

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

Коротко о себе

Меня зовут Николай, и я занимаюсь программированием на Python в свободное от работы/учёбы время. Поскольку я только начинаю и мне довольно сложно сориентироваться в том, какое направление разработки выбрать, есть несколько областей которые меня интересуют. Одна из этих областей - это как раз нейронные сети и ИИ, в ходе изучения которой мне в голову пришли некоторые мысли по поводу их развития. Я рассказываю это всё для того, чтобы вам, уважаемые читатели, было легче выполнить второй пункт введения, а также, чтобы вы обратили внимание на то, что данная статья - это скорее вопрос, нежели ответ. Если вам подобный подход претит, вы смело можете уйти, однако если вам есть что сказать и есть куда направить неофита в этой области, то добро пожаловать.

Коротко о проблеме

В процессе познания нейронных сетей я практически не увидел информации о том, чтобы кто-то приближался или хотя бы шёл к созданию сущности, похожей на настоящий ИИ. Большая часть задач, которые решаются нейросетями, это довольно тривиальные вещи, вроде распознавания объектов, имитации чего-либо, автоматизации какой-то задачи с условиями или предсказания поведения объектов, чьи математические модели слишком сложны для моделирование и/или вообще неизвестны.

Однако что же с исследовательской частью проблемы? Где и как люди отвечают на вопрос "Как улучшить сам ИИ, чтобы было легче выполнять задачи?" или "Есть ли что-то, что можно добавить в основу ИИ, кроме структуры нейронов и принципов их взаимодействия?"? Ответов на эти вопросы у меня нет, но есть предположения, а если они есть у меня, возможно они есть не только у меня. И возможно именно тот факт, что я их сейчас озвучу, приведёт меня к знанию, имеют ли они место быть в реальном мире. Собственно, далее речь в статье пойдёт об этих предположениях.

Модель мышления и Python

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

Понятийное мышление

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

  • Анализ — расчленение общего на составные части и отдельные признаки.

  • Синтез — обобщение отдельных частей в общее целое.

  • Сравнение — сопоставление нескольких предметов или событий между собой.

  • Абстрагирование — выделение одних признаков и отвлечение от несущественных понятий.

  • Обобщение — это объединение разных понятий в одну категорию.

  • Систематизация — объединение категорий в одну систему.

С моей точки зрения обобщение, синтез и систематизация по сути есть одно и то же, особенно если касаться программной реализации, однако это ИМХО и не существенно в данном случае. Абстрагирование можно пока тоже оставить в стороне, эту задачу отчасти выполняет нейросеть. А теперь ответьте, если вы представите себе хоть одно понятие, и формализуете в голове все оставшиеся операции, оно ничего вам не напомнит? Например дерево(не конкретное, а как понятие), которое можно разделить на корни, ствол, листья и ветви, у которого есть набор свойств таких, например, как высота и срок жизни, и которое по одному или нескольким параметрам можно сравнить с другим деревом, увидев всего 2 конкретных дерева и один куст в своей жизни уже можно сделать вывод о существовании целого понятия дерева(да и куста, к слову). Вот мне лично это напомнило сразу одно - класс object в python и систему наследования.

Python

В python используется глобальная система наследования. Наследуется абсолютно всё, и абсолютно всё наследуется от одного единственного класса object. Так чем он по сути отличается от машинного понятийного языка? Да ничем!!! Он именно поэтому так лёгок в освоении, и именно поэтому с него так просто начинать, и именно поэтому придумавший его Гвидо ван Россум - Гений с большой буквы и именно поэтому свечка и совершает свои колебания. Он скопировал модель понятийного человеческого мышления и внес её как основу языка. И если просто научить машину создавать нужные классы, прописывать их, научить операциям, представленным выше(что по сути просто означает разработку методов и функций для экземпляров классов), то мы получим пусть зачаточную, пусть, возможно, не сильно применимую, но всё-таки модель понятийного мышления. А маленькие отдельные нейросети, встроенные в такую модель, могут вдохнуть в неё жизнь, научить выполнять некоторые операции самой. Не нужно хранить и запускать огромную нейросеть, а потом смотреть как она съедает ресурсы, достаточно чтобы маленькая нейросеть просто определила формальные признаки одного объекта, провела анализ, абстрагирование или синтез, а дальше объект будет опознаваться без неё, или с использованием меньшей по мощности нейросети, которая уже будет искать признаки объекта, а не целиком объект. Сравнение же будет происходить вообще без нейросети, по формализованным признакам. Возможно идея не нова и слабо реализуема, я не знаю, но что если попробовать? Это не обязательно должен быть именно python, можно использовать и БД и другие языки, просто сам принцип реализации классов в python удивительно гармонирует с идеей понятийного мышления. Дальше следует ещё одна удивительная гармония.

Незаслуженно забытый Акинатор

Давным-давно, в далёком-далёком 2007 году(не путать с далёкой-далёкой галактикой) Арно Мегре и Джефф Дел создали игру под названием Акинатор. Если коротко, то её идея в следующем - вы загадываете персонажа, хоть реального, хоть книжного и джинн Акинатор задавая вам вопросы его угадывает. Если он его не угадал и/или его нет в базе, вы можете его добавить, чтобы Акинатор запомнил список вопросов. Смысл в том, что игра подбирает определённые вопросы исходя из того, насколько уменьшится множество возможных вариантов в зависимости от ответа на этот вопрос. И поиграв в неё всего пару раз становится понятно, что программа удивительно умна. Она спрашивает об огромном количестве различных признаков, таких как пол, раса, бессмертность, определённая игровая/книжная/кино/реальная вселенная, жанр произведения и многом другом. И угадывает она с каждым годом в разы лучше(возможно это причина, по которой она перестала быть популярной, кому хочется всё время проигрывать?). Я заходил в неё раз в несколько лет и видел этот прогресс, хоть тогда в силу возраста не догадался его задокументировать.

И вот собственно вопрос, а чем это не "учитель" для ИИ описанного выше? Насколько я успел прочитать, Акинатор реализован именно на многомерной картине распределения ответов и разграничении кластеров многомерных точек, а не на системе понятийного классификатора, но ведь это распределение и список вопросов уже можно использовать как данные для создания такого классификатора, разве нет?

Простой пример, разве сложно автоматически создать признак вымышленности персонажа, или, например, что соответсвует понятийной модели, два подкласса класса "персонаж": подкласс "реальный" и подкласс "вымышленный", если у Акинатора существует вопрос "Ваш персонаж существует в реальной жизни?"?. И ведь у подклассов "реальный" и "вымышленный" будут разные признаки, у одних срок жизни и место рождения, у других произведение в котором они фигурируют, которые Акинатор тоже способен определить. А нейросети по этим признакам скажем смогут искать упоминание/появление персонажа в том или ином произведении, выуживать информацию о нём скажем из книги и ещё больше расширять эту базу знаний таким образом. Сейчас всё это делается вручную.

К слову, такие классификаторы и Акинаторы могут быть созданы не только для персонажей. Ими можно описать любую науку, любые объекты, словом любое ПОНЯТИЕ. Просто Акинатор взял одно единственное ПОНЯТИЕ персонажа, и смог тем самым описать с десяток других ПОНЯТИЙ. Например он автоматически частично способен описать понятие "художественное произведение" практически ничего не упуская, потому что большая часть персонажей именно из художественных произведений, и практически всё что характеризует художественные произведения присутствует в вопросах Акинатора.

Если расплодить такие системы, если поощрять людей за игру в них, то чего можно достичь, если за всем этим будет стоять система ИИ и нейросетей, способная всё это переработать и увеличить знания хотя бы на 10% от исходных данных!?

Заключение

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

Источник: https://habr.com/ru/post/577582/


Интересные статьи

Интересные статьи

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомян...
Микрокомпьютер Gigatron — это минималистичный 8-битный ретро-компьютер построенный по необычному дизайну: в нём нет никаких сложных логических интегральных схем, нет даже микропроцессора! Его...
Ничто так не раздражает, как заставший врасплох телефонный звонок с неизвестного номера. В наш век мессенджеров и общения перепиской зловеще мерцающий на экране смартфона незнакомый номер телефон...
Я пишу на питоне лет пять, из них последние три года — развиваю собственный проект. Большую часть этого пути мне помогает в этом моя команда. И с каждым релизом, с каждой новой фичей у нас вс...
Много копий сломано в обсуждениях того, почему питон эдакий бяка — не запрещает вызывать непубличные методы. И конечно, не раз звучали объяснения в духе «мы все тут взрослые люди», но похоже их б...