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