Бот (англ. bot, от англ. robot — робот) — программа, выполняющая автоматически и/или по заданному расписанию какие-либо действия, и имеющая в этом некое сходство с человеком.
Суть вопроса/предложения = давайте спроектируем младенца-бота "программу с ии" начального уровня в Visual Paradigm?
Обучение кого бы то ни было, возможно лишь в случае, если этот кто то хочет учиться, т.е. воспринимать информацию. Если он не хочет , если у него нет потребности в обучении, то научить человека невозможно.При Попытке обучить чему то программу, обязательно нужно помнить про написанное выше и задать себе вопрос: А ХОЧЕТ ли программа получить знания? Если не хочет, то какого ... тратить усилия на ввод в нее данных?
Когда хотят что то узнать, задают вопрос.
1. Программа должна задавать вопросы - Самообучение.
Если программа не задает их, значит программа не хочет ничего получать. Самообучающаяся программа должна задавать вопросы самостоятельно! Самообучение - это когда вопросы задаются себе, это же следует из самого термина самообучение!
Ребенок в начале своего развития, познает мир именно ломая и разбирая по составу. Дети в нежном возрасте РАЗБИРАЮТ игрушки, а не собирают?
Это потому, что на вопрос "что это такое"? находится ответ только при разбирании предмета на запчасти, от сложного к простому.
Далее, дети с математическими генами, уже не любят разбирать игрушки, они любят собирать игрушки из ЛЕГО, причем копируя какие то известные конструкции (обычно в ЛЕГО приводится схема собирания той или иной конструкции). Дети с гуманитарными генами продолжают разбирать игрушки и конструировать из них новую игрушку (в стиле фантасмогории), а еще лучше, собирать новую игрушку из огромного количества уже разобранных.
Ребенок с математическим типом мышления любит восстанавливать то, что сломал в максимальном приближении.
Ребенок с гуманитарным типом мышления не любит конструировать из ЛЕГО то, что показано в схемах сборки.
Но вернемся к самообучающимся программам. Что нужно, чтобы программа задавала вопрос?
Нужно заложить в нее автоматический алгоритм РАЗБИВАНИЯ входной информации на составляющие. Тогда любое понятие, которое ЕИ получает из ощупывания, просматривания и т.д (А в случае ИИ, лишенного манипуляторов и возможности получать сведения извне и потому нуждающегося в вводе информации конструктором) самообучающаяся система должна РАЗБИТЬ на части.
Как это запрограммировать? Очень просто. Нужно свойства каждого объекта (понятия) делить на 2 сразу после того, как этот объект вы ввели в программу в виде набора определителей этого понятия. Т.е. все численные значения, характеристики понятия, вы по умолчанию делите на 2.
Например: Ввели исходное понятие "день" и определили его как максимально возможную интенсивность освещения в некоторых условных единицах, например 255.
Что делает самообучающийся алгоритм? Он делит 255 на 2 и получает НОВОЕ понятие. СИНТЕЗИРУЕТ его САМОСТОЯТЕЛЬНО!!! Это понятие эквивалентно понятию "половина дня", если не поправить машину, то в ее памяти это понятие так и будет называться "половина дня".
Поэтому, чтобы конкретизировать новое понятие так, чтобы оно соответствовало человеческому, алгоритм должен выдать вопрос: - синтезировано новое понятие "половина дня".
Параметры:
интенсивность освещения 127,5
введите синоним...
вы вводите синонимы: "полдень", "12 часов дня"
т.е. машина сама разродилась новым понятием, без вас, и назвала его правильно. Далее. программа делит на 2 уже 127,5, а также 12 часов дня и получает еще 2 новых понятия, а если бы вы ввели больше синонимов, то и их бы она начала делить.
И так происходит разветвление и увеличение числа синтезированных понятий, пока вам не покажется, что уже достаточно и вы не поставите предел.
Машина быстро расчленит любое сложное понятие до атомов и до квантовой физики, где вы ни бум бум, так что придется поставить пределы и сказать машине:
"ДОСТАТОЧНО горшочек, больше не вари, займись чем-нибудь другим"...
Так можно поставить предел понятием "ночь" и пр.
Вот что такое самообучающийся алгоритм на принципе от сложного к простому. Именно его следует реализовывать, а уже потом, пользоваться алгоритмом (вводить его) обучения от простого к сложному.
В этом случае, машина опять должна задавать вам вопросы, касательно обозначения синтезированных уже по другому алгоритму понятий. К этому алгоритму нужно приходить с уже имеющейся БД, полученной описанным способом.
Теперь задача объединить горизонтальными связями имеющиеся понятия в БД, т.е. теперь в ход вступает комбинаторика и перебор свойств (то, к чему вы привыкли и что соответствует вашим аналитическим возможностям от рождения с математическими генами).
И вопрос теперь машина должна задавать такой:
- Синтезировано новое понятие "печатающая машинка"
введите синонимы.
вы вводите: "принтер", epson 3102, HP 1510 ...
а меж тем, алгоритм может выдать и такое:
- Синтезировано новое понятие: "смеющийся кирпич"
введите синонимы: ...
Можно, конечно, попытаться быть креативным и представить себе смайлик смеющегося кирпича или карикатуру дорожного знака, но я рекомендую поставить предел в абстракциях, обрубая подобные комбинаторные ветви или просто пропуская данную позицию, оставляя в БД пробел по этому вопросу. Подобная детализация несвоевременна, так скажем, это дело будущего.
Главное не допустить ошибки: не браться за создание БД понятийного множества по второму алгоритму, минуя первую стадию "ребенка"...
Примерно, изложил "начало" программы... Предлагаю обсудить проектирование этого Бота-ЕИ