Автор: daner 1. какой алгоритм ну или принцип для обучения вы собираетесь использовать? обучение будет заключаться именно в изменение программы (кстати, программа если я правильно понимаю это набор правил)? вообще, новые знания в вашем подходе являются чем-то отдельным или поведение у вас реактивное? у вас все-таки будет какая-то база данных структура которой будет отображать опыт и модель поведения? |
|
Программа будет состоять из набора правил. Эта программа будет загружаться из файла. Все почти как в обычной экспертной системе. Но серьезное отличие AIPL заключается в том, что он будет работать с базой знаний, расположенной в RAM. Эта БЗ организована в виде иерархической сети - онтологии. В LISP есть ООП в виде CLOS. Но это несколько иное.
Нужно рассматривать программу на AIPL как микропрограмму, зашитую в онтологический микропроцессор. И т.к. AIPL будет заточен для работы с онтологией, то собственно программа (совсем другая программа) и не обязательно основанная на правилах, расположенная в онтологии будет интпретироваться движком AIPL. Я такое уже успешно делал на языке CLIPS, поэтому совершенно четко себе представляю как в даной части будет работать система. Итак, программа на AIPL - загружается однажды и потом не изменяется на всем протяжении своей работы. Еще - загружается одна или несколько онтологий, в которых может располагаться программа или набор программ, которые можно модифицировать или самомодифицировать в рантайме. Кроме прямого изменения кода программы в онтологии возможно изменение работы программы новыми данными при внесении этих новых данных в онтологию.
Чтобы такое было понятнее, объясню на примере человека. Вначале он обучается вождению автомобиля осознавая каждую мелочь в уме, делая это медленно и осторожно. Это потому, что новые устойчивые алгоритмы поведения у него еще не выработались. Затем постепенно у него вырабатываются навыки и через какое-то время он действует почти автоматически, не осознавая все тонкости своего поведения. Первый режим - на основе старых алгоритмов и новых данных второй - на основе появившихся новых алгоритмов и новых данных для них. Примерно такое же будет происходить в системе на AIPL.
Кроме того, на С будет поддержка способности находить и обрабатывать закономерности, приводящая к изменениям в онтологии.
В AIPL знания и программный код будут фактически одним и тем же и различаться лишь в том, на какой вход обрабатывающего программного узла они будут поданы. И располагаться они будут в единой онтологии (одной или нескольких)..
Автор: daner 2. у вас уже есть дизайн интерпретатора? ну или хотя бы тех.задание (requirements specification)?. |
|
Да, есть прототип. это PPS - The Parallel Production System. От нее и буду дальше развивать проект. Для PPS есть некоторая документация. Проект выпущен специалистом NASA в 1987 году. Но это - лишь маленький прототип, которому я собираюсь нарастить большой фунционал. Он у меня сейчас вполне работоспособен, но содержит некоторые ошибки и устарелости в языковых конструкциях. Скоро выложу в
GitHubАвтор: daner 3. онтологический движок вы тоже сами собираетесь писать? |
|
Я уже писал фрагмент онтологического движка на основе продукционной системы. Да, буду писать сам. Ведь он должен быть встроен в AIPL.
Автор: daner П.С. К сожалению LISP плохо знаю, но что-то подсказывает мне, что и типы связей для LISP не проблема... может ошибаюсь. |
|
С помощью LISP можно создать почти любой другой язык программирования. Но вот беда, почти все, кто что-то делали вначале на LISP, потом создавали свои продукты повторно на других программных платформах, в основном на С и С++.