Свежий номер №20 (445) / Нейросимуляция Дата публикации: 24.05.2002 VAN, volov@uni-scope.com
NeuroPro Номер продегустированной версии символичен: 0.25. Помнится, в одной из веселых команд времен военно-патриотических слетов бойцы увлекались номерами (которыми с любовью украшали майки и палатки) из следующего ряда: 0.1, 0.25, 0.33, 0.5, 0.7, 1.0 и т.п. Естественно, версия с таким номером по умолчанию некоммерческая и пока еще доступна по адресу www.neuropower.de/ai/files/rusintf/neuropro.zip. Реализована лишь MLP-нейросеть: до десяти слоев, до ста нейронов в каждом слое. Судя по поведению при обучении на прилагаемых данных, действительно работает нейросеть, а не «мультяшка». Замечу, что демо-мультяшками не брезгуют завлекать клиента не только расплодившиеся ловкачи, но и крутые фирмы. К счастью, автор NeuroPro избежал соблазна продемонстрировать псевдофеноменальные результаты. Интерфейс не балует графикой и сервисом (рис. 4), за исключением отображения значимости входов. Назначение пакета - классификация и прогнозирование. Сначала надо ввести файл входных данных (форматы: dBase, FoxBase, FoxPro, Clipper, Paradox), после чего затруднений с освоением возникнуть не должно. Предусмотрено сокращение количества нейронов, весов и входов усилиями самой программы. Недостаток: трудно понять, как обеспечить соответствие входов (симптомов) желаемому отклику (синдромам). Есть и другие недостатки, но, как говорится, «что вы хотите забесплатно»… Автор программы Виктор Царегородцев на запрос о новых версиях ответил: «Последние несколько лет программа развивается только как инструмент для самого себя и как база для выполнения заказных проектов. Пользователям новые версии не раздаются ни платно, ни бесплатно» Что ж… остается пожелать Виктору успехов на поприще заказных проектов. Понятно, что пока за семьдесят рублей можно купить диск со взломанными программами, чья суммарная стоимость превышает $2000, насыщения российского нейросетевого рынка родным качественным ПО ждать нечего. Neuro Office’98 Демо-версия пакета со столь многообещающим названием все еще доступна по адресу: ftp.kiarchive.ru/pub/windows/programmer. Уникальность ее кроется в возможности создания многослойной НС разветвленной архитектуры по усмотрению пользователя и с обучением по правилу обратного распространения ошибок. Авторы называют такую НС «сетью с ядерной организацией», хотя, на мой взгляд, больше бы подошли общеупотребительные термины «структурно организованная» или «блочная». Скорее всего, «ядерный» антураж был выбран из маркетинговых соображений. В составе демо-версии - две программы. Первая, NeuroView+, предназначена для визуально-графического проектирования структурной модели и топологии нейронной сети. Утверждается, что размеры нейронной сети программно не ограничены. Вторая, NeuroEmulator, служит для обучения и тестовых испытаний спроектированной нейросети, а также для редактирования «синаптической карты» и функций активации нейронов. Пользовательский интерфейс нельзя назвать интуитивным. По мере корректных действий пользователя раскрываются дальнейшие сервисные функции, что по замыслу разработчиков должно упрощать работу с программой… На деле же получается наоборот, особенно для тех, кто теоретически подкован и имеет опыт работы с другими симуляторами. Главный недостаток в том, что каждую связь между нейронами приходится задавать вручную (рис. 5), поэтому соорудить большую НС очень тяжело, да и времени на это уходит уйма. Вот если бы связи можно было тянуть (и копировать!) мышкой, как при создании рисунков в MS Word, а также размножать на целые группы нейронов, то работа бы закипела. Еще одна досадная недоделка: после успешного завершения конструирования архитектуры не выдается подтверждающего сообщения. А жаль, ведь если напортачил в NeuroView, остается только удивляться, почему в NeuroEmulator ничего не получается. Загрузив созданный проект в NeuroEmulator, вы получите возможность инициализировать весовые коэффициенты, задать тип пороговой функции для каждого слоя, открыть файл входных данных (форматы Excel: CSV и BDT), предъявить эталоны на выходе и, наконец, приступить к обучению. Предусмотрена генерация тестовых входных данных (в частности, синус), но что именно предъявить для них на выходе в качестве эталона, программа не подсказывает. А ведь как раз в демо-версии была бы очень уместна автоматическая загрузка всех данных, на которых демонстрировалась бы работа программы в режиме обучения! Чтобы оценить работоспособность самой нейросети, пришлось быстренько сочинять хоть какие-то входные и эталонные данные. Процедура обучения НС имеет собственное окно, разделенное на четыре части, назначение которых ясно из рис. 6. Предусмотрено пошаговое обучение («одиночный урок») с выводом значения достигнутой ошибки для каждого примера из входных данных. Так называемое статическое обучение, по идее, должно формировать оптимальные стартовые значения весовых коэффициентов с учетом конкретных входных данных. Режим «обучения множеству» предполагает обучение на всех данных вплоть до задаваемого значения ошибки. К сожалению, проследить за процессом обучения во времени можно лишь по мелькающим цифрам среднеквадратичной ошибки (СКО), чего явно недостаточно, чтобы выяснить причину тех или иных «затыков». Возможность просмотра значений весовых коэффициентов и порогов («смещений»), безусловно, полезна, но в случае «затыка» положения не спасает. Обидно, стоило добавить несколько немудреных сервисных функций, и программа стала бы куда удобнее. Приступим к обучению. Ошибку (точность) и шаг (скорость) можно варьировать непосредственно в процессе обучения, что есть плюс. Задаю навскидку разумные значения. Судя по прекращению мелькания СКО, нейросеть обучилась, а сообщения о завершении не выдается. Мелочь, конечно, но копилка «минусов» пополнилась. Инициализирую веса снова и повторяю обучение. Достигнутая СКО чуть-чуть изменилась. Вывод: похоже на правду. Неплохо было бы протестировать обученную НС на данных, отличающихся от использовавшихся при обучении, то есть попробовать НС в работе, но этого не предусмотрено, по крайней мере в демо-версии «нейроофиса». Зато есть сравнительная оценка скорости работы свежеиспеченной НС. Резюме: программа страдает синдромом «искушенного разработчика»: ее создателям и так все ясно, а вот пользователю со скромным опытом и знаниями придется помучаться. Надеюсь, это временный эффект. Будет жаль, если такая оригинальная и полезная программа «засидится в девках», не получив массового признания. NNet Я сознательно не останавливаюсь на «цветущем» банковско-коммерческом нейросетевом ПО, к которому приложили руку россияне, однако одна из «высокотехнологичных» программ, не успевшая стать коммерческой, все же заслуживает внимания. К огромному сожалению, ее автор (бывший «простой советский» аспирант) ныне, защитив phD, живет и трудится в США, посему дальнейшая судьба оставленной им «на память» программы покрыта мраком. NNet выделяется среди общей массы не только оригинальным интерфейсом (рис. 7), который облегчает освоение и делает программу очень удобной в работе, но и хорошей скоростью вычислений (полностью 32-разрядная и многонитевая) и грандиозными возможностями. Хотя в бета-версии воплощена лишь MLP-нейросеть, зато предусмотрено функционирование в трех режимах (аппроксимация, фильтрация и классификация), но главное - количество нейронов в каждом слое может достигать 64К, а максимальное число весов - четырех миллиардов! Нетрудно прикинуть, сколько оперативной памяти не помешает добавить, если один весовой коэффициент тянет на 8 байт. Конечно, обыкновенному MLP редко понадобится больше пяти слоев. Но зачем так много нейронов и весовых коэффициентов? Оказывается, есть задачки, где без внушительного запаса нейронов не обойтись. Алгоритмы обучения: BPE, Momentum и скрытый Scaled Conjugate Gradient. Формат файлов ввода/вывода данных - double (8 байт на число), доступен всем, кто способен запрограммировать пару операндов. Программа позволяет запустить сразу несколько проектов и проследить изменение ошибки и выхода нейросети в процессе обучения. На персональном компьютере, имеющем 32 Мбайт оперативной памяти, прекрасно работала с 3 Мбайт входных данных и нейросетью из тысяч нейронов. Другие типы нейросетей (с обратными связями, комбинированные, сети анализа независимых компонентов, слепого разделения сигналов) не были включены в бета-версию программы. Насколько мне известно, изначально предполагалось назначить минимальную цену, а то и вовсе нулевую (для России), тогда как все консультации и советы по применению сделать платными. Но планам не суждено было сбыться, и теперь NNet служит немым укором российскому бардаку. Не видать Красной армии?.. Еще с десяток лет назад область производства отечественного нейросетевого программного и аппаратного обеспечения представляла собой целину - если что и делалось, то либо в строжайшем секрете, либо на голом энтузиазме. Ныне же, несмотря на интенсивную утечку мозгов (порой толковый народ улетучивался целыми лабораториями), сдвиги налицо. Начиная с 1995 года в России ежегодно проводится конференция с многообещающим названием: «Нейрокомпьютеры и их применение». Правда, в одном из докладов, прозвучавших в этом году, утверждается, что «нейрокомпьютинговые» патенты и заявки в странах СНГ не превысили 1,5% от числа мировых и что о внедренных изобретениях и узнать-то толком негде. А ведь главное - не количество или массовость научных тусовок. Тут мы весь мир переплюнем, если найдем спонсоров, пожелающих отмыть свои деньги. Главное - это полезный выход, внедрение в продукцию с целью повышения ее потребительских свойств! А вот как раз этим российские белые воротнички искусственного интеллекта похвастаться и не могут. Единственный серьезный прорыв, пожалуй, удался НТЦ «Модуль», где созданы центр теоретических исследований в области нейросетей и центр проектирования высокопараллельных и нейрокомпьютерных устройств для реализации нейросетевых алгоритмов и решения прикладных задач (www.module.ru). Одна из важных идей заключается в усовершенствованной схеме обработки потока данных и команд в рамках одного процессора, который в данном случае представляет собой «смесь» высокопроизводительного RISC-процессора и DSP-процессора. Такой симбиот хорош как универсальный ускоритель вычислений для трехмерной графики, процедур обработки сигналов (например, БПФ), векторно-матричных функций и т.д. О разработанном в НТЦ «Модуль» процессоре NeuroMatrix NM6403 можно почитать в журнале «Открытые системы» 4 и на страницах «Компьютерры» 5. Брют-резюме Увы, зарубежное нейросетевое программное обеспечение слишком дорого. Самое прискорбное, что для внедрения НС в интеллектуальную систему, например, оперативной вибродиагностики, симулятор симулятором, а без программирования «ручками» все равно не обойтись. Нейросимулятора российского производства, в полной мере удовлетворяющего требованиям сегодняшнего дня и способного конкурировать с зарубежными, мне найти не удалось, хотя некоторые отечественные образцы, целиком и полностью разработанные без использования зарубежных кодов, могли бы послужить основой (скорее всего, после объединения усилий) для создания передового программного продукта, в том числе для продажи на мировом рынке. P.S. О дегустации ряда нейросимуляторов, как зарубежных, так и российских, я не рассказал по тривиальным соображением - журнал-то не резиновый. Однако было бы несправедливо не упомянуть о честности «нашенской» демо-версии Neural Network Wizard (www.basegroup.ru, есть библиотека нейросетей в исходниках для Delphi 4!) и о старом «буржуйском» CortexPro, в свое время поразившем меня продвинутой графикой под DOS и универсальностью. Список российских сайтов, посвященных НС и другим направлениям ИИ, можно лицезреть на neurnews.iu4.bmstu.ru/sites/top100.htm, а любопытные ссылки на информационные материалы и некоторое ПО - на stud.math.rsu.ru/actuar/dima/neiro.ru.html и www.orc.ru/~stasson/neurox.html. 4 (обратно к тексту) - www.osp.ru/os/1999/05-06/04.htm 5 (обратно к тексту) - www.computerra.ru/2000/4/29.html
|