Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Программирование нейронных сетей


Автор: bncom 9.4.2010, 14:49
Здравствуйте!

Сразу изменяюсь за то, что, возможно, тему создал не там, где положено. Просто другого более подходящего раздела не нашел.

И так, собственно вопрос: на каком языке программирования, скажем даже, моделирования, разрабатывать нейронную сеть? Слышал, что такие языки есть и существуют, но в поиске ничего такого не нашел.

Да, можно делать на С++ и т.п., но меня интересуют более "глубокие" языки, ориентированные именно на создание нейронных сетей. Если кто знает такие, напиши пожалуйста.

Автор: VictorTsaregorodtsev 9.4.2010, 15:22
Раздел правильный.

Из спецязыков - NSL, например. Описан в книжке Weitzenfeld, Arbib, Alexander "The Neural Simulation Language - a system for brain modeling" 2002 года издания. Книга эта в инете где-то была. В книге есть ссылки на сайты с какими-то инструментами/программами, поддерживающими этот язык (но дожили ли эти сайты до сегодняшнего дня и будут ли работать те проги в Висте и Вин7 - не знаю). Язык этот ни в коем случае не стандарт и почти не распространен, совместимости со скриптовыми языками других нейропакетов тоже нет.

В общем, сейчас наблюдается абсолютное многоязычие - если в какой-то нейропрограмме есть язык программирования, то он свой собственный (примеры - Матлаб с его нейробиблиотекой, NeuroSolution,...). 

Я сам пишу всё на обычном С/С++ плюс Ассемблер, потребности в специализированных языках не испытываю. 

Что, с моей точки зрения, сейчас может быть актуальным из языков для программирования нейросеток - так это совершенно не привязанные к нейросеткам языки программирования вычислений на видеокартах - CUDA, Brook. За счет значительно бОльшего числа параллельных процессоров (пиксельных или вершинных шейдеров) видяхи по сравнению с числом ядер проца (даже с учетом того, что каждое ядро может одной SSE-командой обрабатывать 4 плавучих операнда одинарной точности) ускорение расчетов получается в разы.

Автор: W4FhLF 9.4.2010, 15:45
Цитата(VictorTsaregorodtsev @  9.4.2010,  15:22 Найти цитируемый пост)
Что, с моей точки зрения, сейчас может быть актуальным из языков для программирования нейросеток - так это совершенно не привязанные к нейросеткам языки программирования вычислений на видеокартах - CUDA, Brook.


А к чему именно вы бы применили эти технологии? Ну т.е. к каким алгоритмам, на какой стадии. Мне просто кажется сомнительным, что алгоритмы используемые в НС можно эффективно положить на GPU. Но я могу ошибаться. 

Автор: VictorTsaregorodtsev 9.4.2010, 22:41
Цитата(W4FhLF @  9.4.2010,  15:45 Найти цитируемый пост)
алгоритмы используемые в НС 
 часто выразимы в векторно-матричной арифметике. Например, многослойный персептрон (с обучением по обратному распространению) - он у меня больше 10 лет как запрограммирован через введение функций матрично-векторного произведения, векторно-матричного произведения, тензорного произведения векторов, сложения векторов, покоординатного нелинейного преобразования элементов вектора (ну и плюс добавочный код вокруг всего этого дела - перечислил только самые "ресурсоемкие" функции). И внутри всех перечисленных функций, кроме последней (покоординатная трансформация вектора), вычисления строятся вокруг команд умножения-сложения (с промежуточным накоплением, если необходимо). А это - та база, что нужна и 3Д-видео.
Т.е. самые нижние уровни (они же - самые тяжелые по времени исполнения) можно переносить на видеопроцессор, оставляя для обычного проца только управляющую логику верхнего уровня.
Несколько конкретных подтверждающих перспективность переноса математики на GPU  статей и проектов перечислены в написанной 4 года назад моей заметке про http://www.neuropro.ru/memo34.shtml. Естественно, я назвал не всё существовавшее на тогдашний момент - а уж сейчас таких работ многие десятки.

Автор: W4FhLF 10.4.2010, 03:51
VictorTsaregorodtsev, действительно, поискал, есть даже реализации и уже отдельные библиотеки. Я уже, кстати, встречал SVM на CUDA (cuSVM). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)