"Я даже не знаю, как ответить на такой вопрос. Дело в том, что всякого
рода попытки писать программы создания нейросетей "с нуля" -- это чистой воды любительщина, которая годится разве что только в качестве учебного упражнения. Как Вы знаете, основа практически всех методов обучения сетей -- это методы параметрической оптимизации, причем в довольно-таки специфической трактовки. Это все вещи очень капризные в реализации (нетривиальные итерационные процессы), надо хорошо понимать что, как и
зачем делается, а такими знаниями новички в нейросетевой области обычно не обладают. Поэтому в их исполнении получаются обычно малополезные игрушки (товарищ плохо искал, этого добра в Сети довольно много), причем непонятно, зачем этот "велосипед" надо изобретать заново. Когда речь заходит о том, что надо создавать нейросети различных архитектур, экспериментировать с их свойствами, алгоритмами обучения и т.п. я всегда говорю, что лучше Матлаба и пакета Neural Networks из его состава в данный момент ничего нет (есть много эмуляторов различного рода, но они сильно проигрывают в гибкости). Здесь НС определена как класс объектов, конкретные сети как экземпляры этого класса (все это мало похоже на ООП в C++ или Object Pascal, но тем не менее это натуральная объектная реализация). Алгоритмы обучения реализованы профессионально, чего-то не хватает (архитектур, алгоритмов) -- не проблема, пакет открытый, все эти вещи в него можно добавлять. Плюс ко всему за этим пакетом стоит вся вычислительная мощь Матлаба, ее можно свободно использовать при создании сетей, их исследовании, интеграции их в другие системы, а также, что очень важно, при расширении пакета Neural Networks в нужном нам направлении. Если стоит задача создания инструмента, позволяющего получать НС с обучением (самообучением) их оперативно, когда они работают в составе бортовых систем, то здесь, конечно, Матлаб может помочь только на этапе макетирования и отработки сетей, а потом все это придется реализовывать уже в "боевом" варианте. И это, пожалуй, один из очень немногих случаев, когда имеет смысл затевать НС-разработки с использованием языков типа C и им подобных, но и здесь вначале придется привлекать Матлаб, иначе задача становится абсолютно неподъемной. Итак, резюмируя, если надо экспериментировать с нейросетями и нейроалгоритмами, то лучший инструмент для этого -- Матлаб. Если необходима некая "бортовая" реализация -- отработка с помощью Матлаба,
а потом "финишная" реализация теми средствами, которые лучше всего
отвечают потребностям "борта".
Ю.В. Тюменцев
--
Yury Tiumentsev, Ph.D.,
Vice-President of the Russian
Neural Network Society (RNNS),
a Principal Research Associate
and an Associate Professor
in the Flight Dynamics and Control Department at the Moscow Aviation Institute (MAI)"