Кто-нибудь написал код, в котором приложение в своем жизни учится и совершенствует себя (используя наблюдаемые данные , хранящиеся в КБ), существуют ли какие-либо рамки для этого?Автономное программное обеспечение
ответ
Я написал учебное заведение Tic Tac Toe
(или Noughts and Crosses
) игры один раз. Это так?
В основном поддерживается 3-элементный массив элементов, который был для каждого состояния игры. В конце каждой игры она добавила бы один во все штаты во время этой игры, если бы выиграла. Или вычтите его, если он потерял (включая вращения и зеркальные изображения для более быстрого обучения).
При принятии решения о движении ему нужно было только проконсультироваться с несколькими возможностями и выбрать тот, который имеет наивысший балл.
В итоге все получилось неплохо, но не играя человека, который занимал слишком много времени. Его нужно было освободить, играя другую копию себя, случайного бота и жестко закодированного бата для многих, многих тысяч игр.
Когда я развязал его, у него было 10 начальных уровней интеллекта, которые были всего лишь разными этапами во время учебного процесса.
В настоящее время мой сын играет против самого тупого уровня - ему всего четыре года, поэтому я не хочу быть слишком грубым на нем, поэтому они будут учиться вместе (хотя он иногда бьет меня по телефону Connect Four
, так что, может быть, я должен оказывать на него еще большее давление).
Я бы посоветовал начать изучение множества передовых тем ИИ в Интернете: такие темы включают нейронные сети, ect genetric programming (wikipedia them).
Хорошие места для поиска также включают в себя исследования в университете на более высокие уровни ИИ. (т. е. я знаю команду людей, которые написали программу, которая экстраполировала законы движения от создания компьютера, наблюдая за маятником, качающимся с камерой, очень классным материалом) http://blog.wired.com/wiredscience/2009/04/newtonai.html
Это действительно большое поле и много код должен быть написан вами; то, на что вы должны сосредоточиться, - это концепции алгоритмов обучения, так что вы можете программировать или адаптировать те, которые вы найдете в ваших потребностях. Я думаю, это будет вашим лучшим выбором для создания алгоритма обучения.
Я надеюсь, что это поможет.
Ваш вопрос ИМХО очень широк. Большинство спам-фильтров будут соответствовать вашему описанию. Но в целом ваш подход будет зависеть от того, что приложение должно узнать и как оно должно учиться. Спам-фильтры, например, обычно контролируют обучение. Но если вы не хотите, чтобы пользователь помогал в изучении вашего приложения, вам нужно было бы использовать неконтролируемые методы обучения. Конечно, есть еще выбор. mloss.org имеет множество библиотек с алгоритмами ML, которые вы могли бы использовать. Но для большинства библиотек полезно, если вы знаете, по крайней мере, примерно то, как работают их алгоритмы.
Лучшее вы читаете в некоторых книгах по компьютерному обучению (например, Machine Learning Митчелла) и ИИ.
This previous post перечислены некоторые стандартные учебники, из которых я настоятельно рекомендую Artificial Intelligence a Modern Approach (AIMA) от Russel/Norvig.
Из many available toolkits я предлагаю взглянуть на Orange, SciPy (как Python) или Weka (Java).
Darned good question! ;-) – Cerebrus