|
neuroproject.ru Форум сайта компании НейроПроект
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Finder Новый посетитель

Зарегистрирован: 09 Июл 2007 Сообщения: 10
|
Добавлено: Чт Окт 18, 2007 8:52 am Заголовок сообщения: Возможности ускорения процесса обучения НС. |
|
|
Вот такой вопрос. На сколько увеличение характеристик компа может дать убыстрение процесса обучения НС.
Практический пример. Написан в VBA софт для работы с модульными сетями. Обучение BackProp + доводка рандомным улучшающим поиском в окрестности значений весов. При количестве вх. полей до 50-80 и записей до 5000-7000 при нескольких сетевых модулей - все "летает". Как только количество полей переваливает за 100 и модулей > 7-10 - очень тормозит. Одну систему обучать приходится за 20-40 часов.
Процессор 2ГГЦ + 250 озу. Даст ли более мощный процессор или увеличение оперативной убыстрение обучения? Поделитесь опытом, кто имеет, please. |
|
| Вернуться к началу |
|
 |
Victor G. Tsaregorodtsev Эксперт

Зарегистрирован: 28 Июн 2005 Сообщения: 114 Откуда: Красноярск
|
Добавлено: Пт Окт 19, 2007 3:44 pm Заголовок сообщения: |
|
|
VBA - псевдокомпилятор или реальный компилятор? У меня недавний опыт работы с одним из псевдокомпиляторов для С-подобного языка дал проигрыш в скорости для математических задачек порядка 20 раз по сравнению с реальным компилятором.
Думаю, что улучшение от нового компа может дать ускорение максимум раз в пять, тем более что VBA вряд ли будет автоматически распараллеливать прогу на несколько ядер современного многоядерного проца. Оперативка - если сейчас программа при обучении сети к винчестеру не лезет, то памяти хватает и рост объема памяти вряд ли поможет ускорить в разы.
Причина в торможении при росте числа модулей - а фиг его знает, информации мало, а я не телепат
Остаются следующие возможности (сами расставьте их по порядку предпочтений или трудозатрат):
1. Нормальный оптимизирующий компилятор вместо васика, он позволит задействовать и расширения системы команд современных процов, которые (команды то-есть) позволяют обрабатывать несколько операндов за такт.
2. Другие алгоритмы обучения сетки или более лучшие настройки текущих алгоритмов.
3. Сервис, влияющий на скорость обучения - например, правильная предобработка данных.
4. Спецалгоритмы для модульных сеток - например, можно попробовать темперирование весов и центрирование градиентов от Nicol Schraudolph (вдруг у Вас именно модульность всё ломает, а указанные алгоритмы лечат как раз послойное структурное рассогласование сетки). _________________ www.neuropro.ru - нейросети, анализ данных, прогнозирование |
|
| Вернуться к началу |
|
 |
siteadmin НейроПроект

Зарегистрирован: 10 Июн 2005 Сообщения: 81 Откуда: Москва
|
Добавлено: Пт Окт 19, 2007 8:03 pm Заголовок сообщения: |
|
|
| можно расчетную логику прятать в DLL, писаные на C или чемто вроде этого. и тягать эти dll из VB. а на VB писать в основном интерфейсную логику. или хотябы в dll выделять самые наименее эффективно выполняющиеся в vba операции |
|
| Вернуться к началу |
|
 |
Finder Новый посетитель

Зарегистрирован: 09 Июл 2007 Сообщения: 10
|
Добавлено: Сб Окт 20, 2007 4:17 pm Заголовок сообщения: |
|
|
Спасибо всем большое за инфу.
1. Компилятор - ACCESS 2000 -ный (ДОБАВЛЕНО: - sorry, в смысле VB6). Я специально оптимизировал код, чтобы в execute не было ничего кроме голых циклов для скорости. Без ACCESS сложновато обойтись, потому как вcе интегрировано
полностью в его структуру (данные).
2. "Другие алгоритмы обучения сетки или более лучшие настройки текущих алгоритмов."
- Тут как раз и работаю. В частности там "плавающий" коэф.обучения - свой на каждую сетку (что естественно ИМХО) и скорость "вверх-вниз" можно программно менять.
Но вот сам процесс таков: 1. Дла каждой сетки пробегает эпоху по всем записям - модифицируя веса в каждой точке. 2. Считает общую невязку (еще один пробег) 3.Ежели больше чем предыдущее наилучшее - не сохраняет изменения и идет к следующей сетке. Полагаю - это не самый быстрый способ, но зато надежный. Пока не представляю - что можно улучшить. Самый долгий момент когда сеть пытается нарастить веса связанных модулей (как воду в сообщающихся сосудах) идя по градиенту, но рассматривает их по отдельности, затрачивая уйму времени на выравнивание. И при этом уменьшить количество модулей (слить в один) не получается из-за сути задачи.
3. "Спецалгоритмы для модульных сеток - например, можно попробовать темперирование весов и центрирование градиентов от Nicol Schraudolph (вдруг у Вас именно модульность всё ломает, а указанные алгоритмы лечат как раз послойное структурное рассогласование сетки)." -
Где такое можно в русском увидеть? Я искал алгоритмы для модульных сеток - ничего не нашел.
| Цитата: | "можно расчетную логику прятать в DLL, писаные на C или чемто вроде этого. и тягать эти dll из VB. а на VB писать в основном интерфейсную логику. или хотябы в dll выделять самые наименее
эффективно выполняющиеся в vba операции" |
Да, это в планах попробовать.
Последний раз редактировалось: Finder (Вс Окт 21, 2007 8:54 pm), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
Victor G. Tsaregorodtsev Эксперт

Зарегистрирован: 28 Июн 2005 Сообщения: 114 Откуда: Красноярск
|
Добавлено: Сб Окт 20, 2007 4:39 pm Заголовок сообщения: |
|
|
| Цитата: | | Где такое можно в русском увидеть? Я искал алгоритмы для модульных сеток - ничего не нашел. |
На русском этого нет. И это реально не для модульных сеток, а просто универсальный способ для предотвращения затыкания в каком-то слое сети. По ФИ автора можно найти его страничку со статьями, там смотреть на статьи середины-конца 90-х. _________________ www.neuropro.ru - нейросети, анализ данных, прогнозирование |
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|