На мой взгляд пока у ИИ отсутствует личность/самосознание это просто набор алгоритмов. Да, эти алгоритмы могут быть очень «умными» и продвинутыми, но все же это просто алгоритмы. Такой ИИ это всего-навсего инструмент для решений конкретной задачи. Его-то и ИИ назвать можно с очень большой натяжкой, а признавать автором изобретения — просто маразм! На это случай есть поговорка: «От дурной головы ногам покоя нет». Люди часто придумывают проблемы, а потом усиленно стараются их решить — это как раз тот случай.
В какое все-таки удивительное время мы живем! Прогресс движется семимильными шагами (по крайней мере в некоторых областях). Только успевай следить за новыми достижениями!
Надо было уточнить, что «использует свои возможности более полно, если сравнивать по способности считать в уме». А вообще полностью с Вами согласен, мерила потенциала мозга нет. Более того, нет также и мерила текущего его состояния. Все эти тесты IQ, имхо, измеряют, что угодно, но не интеллект. Да что там говорить, даже с тем, что считать интеллектом определиться не можем. А пытаться измерить то_не_знаю_что — это вообще так по-человечески!
Не знаю кто как, а я фразу «Мы используем лишь 10% от всего мозга» всегда понимал в том смысле, что в среднем люди раскрывают свой потенциал лишь на 10%. И вот с этим как раз спорить очень трудно. Один человек таблицей умножения с трудом пользуется, а другой преспокойно трехзначные числа в уме перемножает. Понятно, что второй использует свои возможности более полно.
Программирование великая вещь! Всего пару десятков строк кода и получается такая красотища. Мне этот метод генерации лабиринтов очень бы пригодился в одном проекте, но с python-ом я, к сожалению, не знаком. Если кто-нибудь возьмется портировать этот код на actionscript 3, то я буду не только благодарен, но и оплачу труды в размере 1000 руб. Кого это предложение интересует, пишите в личку.
А у кого есть идеи насчет того как Акинатор сохраняет промежуточный результат при «общении» с конкретным пользователем? То есть, допустим, я ответил на 1-й вопрос. Алгоритм просчитал вероятности для персонажей из своей базы, исходя из этого просчитал, какой вопрос задать следующим, ну и задал его :)
Я снова ответил. Он вновь пересчитал вероятности и так далее пока вероятность какого-либо персонажа не станет больше какой-то определенной величины (допустим 95%), ну или пока количество заданных вопросов не станет равно 20.
Система которую я стремлюсь создать поняла бы даже такую писанину как у меня! А вообще мы все тут не на экзамене. Я выражаю свои мысли. Это творческий процесс. Если где-то буква пропущена, лишняя запятая стоит или что-то в этом роде, то ничего особо страшного в этом я не вижу. А учебника я и так читаю, правда более мудреные. Но все равно спасибо.
+1 Спасибо, очень интересно. Приму к сведению. А вообще почитав комментарии понял, что не зря потратил время на написание статьи. Тема волнует многих, появляются не только вопросы, но и дельные предложения и критика. Это очень хорошо!
Спасибо, но не вижу смысла в изучении нового языка. Прежде всего это займет время. Что само по себе немаловажно. Кроме того я считаю, что не важно на чем ты программируешь, важно как ты программируешь. При желании и на Бейсике можно много чего сделать. А быдлокодить можно на любом языке, ведь это в первую очередь зависит от программиста.
Ну особого смысла в копировании системы на ранних этапах я не вижу. Каждая такая копия будет неполноценна, т.к. она будет общаться только с определенной группой пользователей (или данных), т.е. автоматически это не все люди или данные, а только какая-то часть. В итоге сумма знаний всех таких систем будет меньше чем у системы, общающейся с абсолютно разными людьми. Ведь у нее будет опыт самый разнообразный.
А вот на некотором определенном этапе эволюции подобные системы можно тиражировать. И, возможно, ограничивать тип данных с которыми она будет работать. Т.е. решать узкоспециальные задачи. Например, при общении с человеком она должна оценивать его с точки зрения психологии. Эдакий психологический тест «Все в одном». Просто пообщавшись с Вами система на основе Ваших ответов даст полный анализ личности (общаться видимо придется долго, хотя как знать). У меня есть много подобных идей. А как Вы считаете где конкретно можно применять подобные самообучаемые системы?
Поймите, у меня нет проблем с тем как что-то реализовать в коде. Когда они возникнут я попрошу о помощи хоть на ГитХабе, хоть на Хабре, хоть еще где-то. Проблемы есть в идейном плане, а именно, как реализовать самообучение, хранение знаний и так далее.
Я пытаюсь разобраться с общими алгоритмами, а конкретная реализация это отдельная тема.
Кроме того в чем смысл публиковать то, что возможно будет сто раз изменено. А так и будет, ибо я не питаю надежд на то, что с ходу все напишу так как оно должно быть.
Про GitHub я конечно же слышал. Но опять таки не вижу в этом смысла. Если бы это была реально действующая, доказавшая свою эффективность система и у людей возник вопрос: «А как все это работает?» То да, без кода не обойтись. Но пока до этого далеко…
Приводить код смысла не вижу. Во-первых, это не инструкция на тему «ИИ своими руками». Я пишу потому, что это безусловно заинтересует многих и эти многие могут подсказать мне идеи или указать на ошибки. Во-вторых, я пишу на PHP. Безусловно его знают многие, но ведь не все. В-третьих, как Вы это себе представляете? Это же не пара строк кода. Это классы, интерфейсы, библиотеки и прочее прочее прочее.
Ну если Вам нужно чисто для саппорта. То тут можно обойтись системой «фраза пользователя или ее значимая часть»->один или несколько заранее забитых в базу ответов на эту фразу. Те же инфы от Наносимантики как раз для этого и созданы.
В одиночку пока не будет создано абстрактное ядро и действующий прототип. А потом уже можно будет собирать команду. Чтобы каждый член решал узкую задачу.
Не знаю почему Вас это покоробило. Система однозначно должна быть модульная. Ядро системы — абстрактное. Изменение логики модуля не должно влиять на остальные модули.
К примеру я написал модуль автоисправления ошибок. Он поработал и выяснилось, что в нем есть ошибки. Я могу исправить ошибки в этом модуле (в одном месте) и это никак не отразится на работе других модуле. В конце концов я могу вообще отказаться от автоисправления ошибок и отключить соответствующий модуль. Это опять таки никак не должно влиять на работу других модулей. Это скажется только на самой системе — вероятно она перестанет понимать фразы с ошибками/опечатками.
Стратегические ошибки невозможно исправить оперативными действиями. Т.е. на этапе прототипирования — вполне себе подход, но если у вас уже тонны кода и годы работы… Черт его знает, может стоит поразмышлять предварительно.
поразмышлять безусловно стоит, но все предусмотреть не возможно. И поэтому уже на этапе прототипирования нужно делать гибкую модульную систему. Которую можно легко менять, улучшать, конфигурировать и так далее.
Да, возможно я зря написал «однозначно идентифицирует», нужно было что-то вроде «наиболее вероятно».
Ну а вообще, это решаемо. Допустим при наличии вопросительного слова изначально считаем что это вопрос. Последующие аналитические инструменты могут выявить что это не так (не вопрос, а например, утверждение).
Согласен с unconnected, что идиоматические выражения всегда описывались в отдельных словарях. И их выявление это отдельная тема.
А вот с Вашим высказыванием
В общем, по-моему, думать об исправлении ошибок и мальчиках Тибе несколько преждевременно, пока не решена задача распознавания смысла грамматически корректно сформулированных фраз.
согласиться не могу. Если начать с распознавания смысла, то при наличии ошибок/очепяток смысл Вы распознать не сможете. Поэтому начать, наверно, нужно именно с исправления ошибок. А потом уже анализировать, то что получилось. А если не получилось, то возможно это не была ошибка. Возможно это было какое-либо слово или понятие неизвестное системе.
Я снова ответил. Он вновь пересчитал вероятности и так далее пока вероятность какого-либо персонажа не станет больше какой-то определенной величины (допустим 95%), ну или пока количество заданных вопросов не станет равно 20.
Так вот где он эти вероятности хранит?
А вот на некотором определенном этапе эволюции подобные системы можно тиражировать. И, возможно, ограничивать тип данных с которыми она будет работать. Т.е. решать узкоспециальные задачи. Например, при общении с человеком она должна оценивать его с точки зрения психологии. Эдакий психологический тест «Все в одном». Просто пообщавшись с Вами система на основе Ваших ответов даст полный анализ личности (общаться видимо придется долго, хотя как знать). У меня есть много подобных идей. А как Вы считаете где конкретно можно применять подобные самообучаемые системы?
Кроме того в чем смысл публиковать то, что возможно будет сто раз изменено. А так и будет, ибо я не питаю надежд на то, что с ходу все напишу так как оно должно быть.
Про GitHub я конечно же слышал. Но опять таки не вижу в этом смысла. Если бы это была реально действующая, доказавшая свою эффективность система и у людей возник вопрос: «А как все это работает?» То да, без кода не обойтись. Но пока до этого далеко…
К примеру я написал модуль автоисправления ошибок. Он поработал и выяснилось, что в нем есть ошибки. Я могу исправить ошибки в этом модуле (в одном месте) и это никак не отразится на работе других модуле. В конце концов я могу вообще отказаться от автоисправления ошибок и отключить соответствующий модуль. Это опять таки никак не должно влиять на работу других модулей. Это скажется только на самой системе — вероятно она перестанет понимать фразы с ошибками/опечатками.
поразмышлять безусловно стоит, но все предусмотреть не возможно. И поэтому уже на этапе прототипирования нужно делать гибкую модульную систему. Которую можно легко менять, улучшать, конфигурировать и так далее.
Ну а вообще, это решаемо. Допустим при наличии вопросительного слова изначально считаем что это вопрос. Последующие аналитические инструменты могут выявить что это не так (не вопрос, а например, утверждение).
Согласен с unconnected, что идиоматические выражения всегда описывались в отдельных словарях. И их выявление это отдельная тема.
А вот с Вашим высказыванием согласиться не могу. Если начать с распознавания смысла, то при наличии ошибок/очепяток смысл Вы распознать не сможете. Поэтому начать, наверно, нужно именно с исправления ошибок. А потом уже анализировать, то что получилось. А если не получилось, то возможно это не была ошибка. Возможно это было какое-либо слово или понятие неизвестное системе.