Начал писать интерфейсину для курсача.
С выбором сети - до сих пор трудности.
Итак, есть такие варианты:
Многослойный перцептрон - каноническая сеть, работает с кучей задач, но имеет туеву хучу недостатков. К тому же, имхо, муторно реализовывать из-за неопределенности с количеством слоев и количеством нейронов в слоях (слои-то должны быть полносвязными!), а, тем более обучать.
Сеть Кохонена - предназначены для решения задач классификации. На вход сети подается вектор параметров классифицируемого обьекта. По видимому, будут хорошо работать в рамках моей задачи. Вообще алгоритм работы почему-то конкретно напоминает заевший меня в том семестре алгоритм ISODATA. Однако, в материале есть небольшая нестыковка - в начале сказано, что сеть способна сама определять количество классов, а потом - что нет. Но, если Кохоненова сеть действительно реализует возможность обучения без учителя (а ISODATA именно такой алгоритм), то мне эта сеть не подходит.
Сеть встречного распространения - отлично работает в случаях, когда требуется получить однозначное соответствие между двумя векторами, причем эта сеть способна распознавать на входе как образ, так и результат, подав на выходе соответствующие вектора. В общем, хорошо распознает эквивалентности.
Сеть с обатными связями (сеть Хопфилда) - работают по методу градиентного спуска. Работают в качестве ассоциативной памяти, где адресация производится не по номеру ячейки памяти, а по содержимому. Проблемой в реализации является поиск критерия похожести между векторами - выбор зависит от решаемой задачи и ищется индивидуально. Однако, как я помню из курса "Распознавание образов", метод градиентного спуска имеет огромный недостаток, т.к. в случае поиска экстремума функции нескольких переменных он может найти решение, а может и не найти его, причем будет ли этот метод сходиться для данной задачи зачастую можно сказать чисто эмпирически. А эмпирика - не есть хорошо. Так же довольно неприятной проблемой является отсутствие гарантии устойчивости сети, а так же наличие определенных ограничений на сходимость к эталонам. И тем не менее, весьма многообещающе...
АРТ-сети - имеют отличные характеристики - наличие устойчивого набора запомненных образов, возможность выбора вектора наиболее похожего к предъявляемому, динамическое запоминание новых образов без полного переобучения и отсутствие потерь уже запомненных образов при предъявлении новых. Однако, есть и серьозные минусы, такие как большая сложность реализации сети. Есть несколько разновидностей - АРТ-1, которая работает с бинарными векторами; АРТ-2, работающая с непрерывными векторами; FART, использующая нечеткую логику и ARTMAP, которая занимается классификацией входных и выходных векторов, а также строит связи между ними как сеть встречного распространения. Конечно, идеальный вариант, но один я с ней точно не справлюсь из-за чрезмерно большой сложности.
Теперь вот думаю, кого б взять?.. Пока что склоняюь к сети Хопфилда, но для окончательного решения нужно поговорить с кем-нить сведущим в данном вопросе...