Партнеры

Счетчики








Нейронные компьютеры

Вы когда-нибудь задумывались над тем, какими будут компьютеры лет через 20–30? Будут ли они строится по классической технологии, согласно закону Мура вмещая все большие количества транзисторов в чипах? Или перейдут на новые ступени развития? Если хотите узнать, читайте.

В последнее время все чаще можно услышать слова "нейрокомпьютер", "нейронная сеть". Попробуем разобраться, что же скрывается за ними. С научной точки зрения, нейронная сеть - это по каким-либо правилам устроенная сеть искусственных нейронов, условных аналогов настоящих нейронов, которая может взаимодействовать с внешним миром подобно биологической нервной системе. Вычислительное устройство, реализующее принцип обработки информации на основе нейронной сети, называется нейрокомпьютером. Искусственная нейронная сеть является значительно упрощенной моделью нейронной сети мозга человека. Разрабатывая теоретические и практические аспекты концепции нейронных сетей, ученые предполагали, что с их помощью, рассчитывая при этом на быстродействие компьютера, можно сымитировать хотя бы узкоспециализированное искусственное мышление, близкое по принципам функционирования к имеющемуся у представителей homo sapiens. Замысел дерзкий, но реализовать его в полной мере (к сожалению или к счастью) не удалось до сих пор.

Нейронный ликбез

Немного теории. Человеческий мозг содержит порядка нескольких миллиардов вычислительных элементов, называемых нейронами. Нейроны связаны между собой в сложную сеть. Эта сеть отвечает за все явления, которые мы называем мыслями, эмоциями, познанием и так далее, то есть на физиологическом уровне образует то, что называется на самом деле нервной системой, в свою очередь совокупность явлений в нервной системе можно назвать психикой, люди же обычные, особо не обремененные научной пунктуальностью, часто именуют последнюю словом "интеллект". Каждый нейрон состоит из трех основных частей: самой клетки (сомы) и двух типов древовидных отростков - дендритов (их обычно очень много) и аксонов (обычно он один). Вообще-то, для нервной системы позвоночных характерны мультиполярные нейроны. В таком нейроне от клеточного тела отходят несколько дендритов и аксон. По правде говоря, структура, размеры и форма нейронов сильно варьируются. Например, периферические чувствительные нейроны вовсе не идентичны нейронам, составляющим мозг. Дендриты выполняют роль своеобразных "входов" для нервных импульсов, а аксон - "выхода".

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

Общие принципы работы модели нейрона можно описать следующим образом: на входы нейрона поступают нервные сигналы от других нейронов. Каждый вход характеризуется собственным некоторым весовым коэффициентом, определяющим важность получаемой информации. Вдаваясь в грубую аналогию, весовой коэффициент объясняют как своего рода сопротивление (резистор, если нервный сигнал рассматривается как аналоговый электрический сигнал), оказываемое поступающему на конкретный вход нейрона нервному сигналу. Предварительно устанавливая величину такого "сопротивления" или же динамически изменяя его величину по определенным правилам в процессе работы нейронной сети, осуществляется как бы задание степени значимости информации, поступающей по данному входу нейрона, то есть в буквальном смысле задание меры подавления нервного сигнала.

Далее: полученные уже после весовых коэффициентов сигналы суммируются, затем итоговый сигнал операции суммирования преобразуется следом так называемой активационной функцией и подается на выход нейрона. Активационную функцию прокомментировать можно как механизм, обеспечивающий порог срабатывания, отзывчивости нейрона на сумму входных сигналов, перевод его в состояние возбуждения, а также возвращение в состояние покоя, то есть торможения. Затем выходной сигнал нейрона поступает на вход следующего нейрона, и все повторяется, пока не будет достигнут желаемый, то есть "запрограммированный" устройством нейронной сети результат.

Такая модель нейрона лишь в общих чертах отражает работу истинного нейрона головного мозга: активационная функция моделирует возбуждение нейрона, а весовые коэффициенты по входам имитируют прохождение сигналов через синапсы нейрона. Синапсы - специализированные функциональные контакты между возбудимыми клетками, служащие для передачи и преобразования сигналов. Кроме того, нейроны группируются в нейронные слои и образуют нейронную сеть.

Тип соединения нейронов и их количество в нейронной сети полностью определяет возможности последней: ее мощность и спектр задач, которые она призвана решать. В настоящее время существует более 200 разновидностей нейронных сетей. Но основной, самой распространенной и простой является сеть, получившая название многослойный персептрон. Персептрон, перцептрон (от латинского perceptio - понимание, познавание, восприятие) - математическая модель процесса восприятия. Модель восприятия (персептивная модель) может быть представлена в виде трех слоев нейронов: рецепторного слоя, слоя преобразующих нейронов и слоя реагирующих нейронов. Персептрон же состоит из слоя входных нейронов, слоя выходных и нескольких промежуточных слоев.

Многослойные нейронные сети обладают различной мощностью. Мощность нейронной сети, очевидно, будет зависеть от числа слоев и числа нейронов в каждом слое. Интуитивно можно предположить, что с увеличением количества слоев и нейронов качество нейронной сети улучшится, и это действительно так, но до некоторого предела, когда наращивание объема становится неэффективным. Уровень порога связан с размерностями входных и выходных данных, а также с внутренней структурой обрабатываемых данных.

Для того чтобы созданная сеть начала работать, ее необходимо обучить. Необученная сеть не имеет даже "рефлексов" - на любые внешние воздействия ее реакция будет хаотичной. Обучение состоит в многократном предъявлении множества чуть-чуть отличающихся характерных примеров распознаваемого элемента до тех пор, пока сеть не станет давать на выходе ожидаемый отклик.

Существуют алгоритмы обучения с учителем и без него. В первом случае в выработке весовых коэффициентов (обучении) участвует человек. Объясним доходчиво суть такого обучения: человек подает на вход спроектированной нейронной сети пример распознаваемого элемента, затем вручную, или посредством поддерживаемых сетью специальных возможностей, или вспомогательными утилитами сервисного обслуживания сетей настраивает весовые коэффициенты (буквально "подкручивает сопротивления") у разных нейронов обучаемой сети, чтобы на ее выходе получился сигнал такой-то величины. Затем подает на вход сети следующий пример, едва-едва отличающийся от предыдущего, и теперь "подкручивает сопротивления" таким образом, чтобы и на прошлый, и на новый пример обучаемая нейронная сеть давала на выходе сигнал заданной или очень близкой к ней величины. То есть человек-учитель пытается достичь в настройках весовых коэффициентов как бы золотой середины. Следующий пример на вход - и следующая подстройка коэффициентов. В конце концов обученная таким образом сеть готова рефлекторно откликаться в форме заданного уровня сигнала на выходе при появлении на входе распознаваемого элемента, причем тот, в зависимости от длительности обучения, опознается в весьма широком диапазоне вариаций его появления.

Кстати, эти особенности обусловили значительную направленность нейронных сетей на задачи распознавания, в числе которых оказывается не только распознавание изображений, но и уверенная идентификация неких явлений, фаз изменения, преподнесенных на вход нейронной сети в виде состояний соответствующих "участников" явления, фазы или прочего; скажем, прогнозирование изменения курса валют требует идентификации, распознавания экономических состояний. В то же время указанные особенности нейронных сетей все-таки не способствуют воспроизведению актов подлинного мышления. Видимо, не нашлась пока уникальная свежая идея на этот счет.

Во втором случае - в случае обучения без учителя - сеть справляется сама, выполняя в принципе те же действия по подстройке весовых коэффициентов, только самообучение инициируется здесь фактом обнаруженного противоречия с имеющимися в нейронной сети знаниями, когда поступивший на вход элемент очень слабо или вовсе не распознается, но его непременно требуется как-то классифицировать.

Кратко объясним суть и этого обучения. В первую очередь для таких сетей предполагается, что они имеют в своем составе достаточный запас нейронных узлов, в которых будут храниться знания в виде настроенных весовых коэффициентов, или же что сеть в состоянии "выращивать" такие узлы, создавать и подключать их к себе самостоятельно. Во вторую очередь считается, что изначально заданы предельные границы расхождения результатов распознавания с наколенными знаниями, после которых элемент признается неизвестным. Грубо скажем, если более 50 процентов деталей элемента не распознаются, он считается неизвестным, вызывающим противоречие.

Итак, пусть сеть в начальный момент времени не обучена. На входе появляется подлежащий распознаванию элемент. Рождается противоречие с накопленным знанием, так как элемент вообще неизвестен, так как расхождение со знаниями в этом случае измеряется сотней процентов. Одному из свободных узлов сети передаются на вход зафиксированные сигналы от элемента, выход узла подразумевается быть всегда равным величине сигнала "опознал" (условно назовем так этот сигнал) или "тишина", и уже внутри узла выполняется автоматическая подстройка весовых коэффициентов, заменяя ручную подгонку как в случае обучения с учителем.

Пусть теперь на вход сети поступил прошлый элемент, чуть измененный в вариации. Обученный нейронный узел, который тоже подключен ко входной магистрали, опознает элемент с погрешностью, допустим, в 30 процентов. Понятно, что выходной сигнал узла мы назвали в исключительной форме "опознал" для удобства, на самом же деле он изменяется в пределах от "тишина" (это же "опознал на 0 процентов") до "опознал на 100 процентов". Сеть, не обнаружив выхода за пределы границы расхождения, передает тому же узлу новый пример элемента, чтобы узел подстроил весовые коэффициенты на удачное опознание и первого примера, и второго примера одного и того же элемента.

Как только на входе появился неизвестный элемент, то есть когда ни один из обученных узлов не опознал элемент с точностью свыше 50 процентов, сеть передает сигналы от элемента следующему незадействованному в системе знаний узлу, который тоже по описанному выше сценарию попадает в систему накопленных нейронной сетью знаний. Этим и обеспечивается обучение сети без учителя, и как правило, подобный процесс происходит качественно, если удачно организовано взаимодействие сети с нейронными узлами.

День сегодняшний

Сейчас нейросетевые технологии применяют во многих областях. Например, когда необходимо решить задачи такого рода: неизвестен алгоритм решения, но имеется множество примеров; исходные данные искажены или противоречивы; имеются большие объемы входной информации. Нейронные сети применяются для решения задач классификации, распознавания образов, оптимизации, прогнозирования и для многих других. Нейротехнологии используются также для распознавания текста со сканеров, проверок достоверности подписей, прогнозирования экономических показателей (например, прогнозирования курса валют), управления технологическими процессами и робототехникой, и прочее, прочее, прочее...

Стоит особо отметить, что нейронные сети не нуждаются для решения задач в заранее составленном математическом алгоритме, они сами вырабатывают методику решения задачи в процессе обучения. В этом коренное отличие нейросетевых компьютеров от компьютеров классических, и их главное преимущество. Математический аппарат работы нейронных сетей несложен. Программирование не требует профессиональных изощрений: на каждом шагу - умножение вектора на матрицу с накоплением суммы. Сложность представляет адаптация алгоритма обучения нейронной сети под конкретную задачу - подбор и моделирование сети, предварительная обработка информации, оценка результатов.

Также нейронные сети имеют возможность роста. При этом сохраняется их структура и значительно увеличивается эффективность обработки информации. Достаточно сложно организованная сеть способна сама себя развивать. Это свойство может очень широко использоваться программистами будущего, которые смогут создавать небольшие нейронные сети и "доращивать" их до необходимой информационной мощности и емкости.

Нейронное железо

Для того чтобы ускорить программы, моделирующие работу нейронных сетей, были разработаны различные модели нейропроцессоров. Да-да, уже сегодня вы можете купить нейроускоритель и проапгрейдить своего "боевого коня". В 1989 году фирма Intel представила свою модель нейропроцессора - i80170NX ETANN (Electrically Trainable Analog Neural Network). Процессор i80170NX эмулирует работу 64 биологических нейронов, каждый из которых имеет 128 входов. Данные, поступающие на входы и выходы процессора, аналоговые, но функции управления, установки и чтения весовых коэффициентов - цифровые. Вышедшая несколько позже, в 1993 году, модель i80160NC была уже полностью цифровой. Кроме того, в ней присутствовал алгоритм обучения, отсутствовавший у ее предшественницы. Понятно, что с тех пор утекло много воды. Фирмой Intel выпускаются специализированные нейронные микросхемы, которые применяются в военно-прикладных задачах НАТО, что не позволяет приподнять над ними завесу секретности. Такие изделия используются в системах наведения высокотехнологичного оружия, комплексах криптоанализа, программах идентификации по отпечаткам пальцев и тому подобного.

Нашим ответом империализму была разработанная НТЦ "Модуль" микросхема NM6403, появившаяся на мировом рынке нейропроцессоров в 1998 году. Нейропроцессор, созданный российскими инженерами, выпускается фабриками Samsung и позволяет решать ряд уникальных задач. Его технические характеристики следующие: тактовая частота - 40 МГц; напряжение питания - от 3 до 3,6 вольт; потребляемая мощность - до 1,6 ватт. Основные вычислительные узлы - управляющие RISC-ядро и векторный сопроцессор. Производительность нейропроцессора составляет 120 миллионов операций в секунду для 32-битовых операндов. Более полную информацию вы можете получить на сайте производителя. К слову, НТЦ "Модуль" продает свое детище. Стоит сравнительно недорого - около 50 долларов США.

Также выпускается ряд "нейроплат" на базе NM6403 в формате PCI, CompactPCI, VME с драйверами под Windows и Linux. Вся продукция комплектуется специализированным программным обеспечением и обеспечивается технической поддержкой. Продукцией НТЦ "Модуль" заинтересовались крупнейшие мировые производители в сфере информационных технологий и связи. Так, Fujitsu планирует применять нейропроцессорную архитектуру для средств связи, требующих обработки и передачи видеосигналов в реальном времени. Нейрочип показал себя высокопроизводительным процессором широкого применения для встраиваемых систем. Особенно он хорош для криптографии, обработки видеоданных и радиолокации.

Нейронные ожидания

Чем грозит простому пользователю нашествие нейротехнологий? Во-первых, появлением в скором времени операционных систем, реализованных на этом принципе. Их отличие от обычных операционных систем заключается в том, что они смогут подстраиваться под конкретного пользователя, возможно будут очень редко приводить к сбоям в работе или глюкам. Кстати, по заявлению Билла Гейтса, компания Microsoft собирается в ближайшее время выпустить операционную систему, 90 процентов ресурсов которой будет занято распознаванием образов с целью подстройки операционной системы под конкретную конфигурацию компьютера и конкретного пользователя. Готовьтесь! А топ-менеджер фирмы Intel Роберт Экельман признался, что лидер рынка микропроцессоров серьезно готовится к новому технологическому прорыву и проводит дорогостоящие исследования в области биомикросхем, которые должны заменить в компьютерах будущего обычные процессоры. Операционные системы и программное обеспечение на основе нейронной сети потребуют установки в системные платы компьютеров нейропроцессоров или по крайней мере нейроускорителей. Обычные дискретные процессоры, вероятнее всего, отойдут на второй план, и будут применяться в качестве сопроцессоров.

Нейросетевое программное обеспечение

Программное обеспечение, основанное на нейронной технологии, широко представлено на рынке. Есть все - от небольших бесплатных программок, работающих из командной строки, до промышленных нейросетевых комплексов масштаба предприятия. Условно бесплатные и бесплатные продукты, как правило, создаются студентами и аспирантами, изучающими данную проблему. В основном они предназначены для решения одной определенной задачи (например, обработки сигналов) и имеют примитивный интерфейс. Существуют также профессиональные продукты для моделирования на персональных компьютерах сложных нейронных сетей. Как правило, они поддерживают нейроускорители. Эти программные продукты отличают также наличие подробной документации и мощный графический интерфейс. Единственный недостаток - заоблачная цена. Другой вид нейросетевого программного обеспечения ориентирован на решение задач корпоративного уровня и оптимизирован под выполнение конкретных задач. Например, прогнозирование рыночных показателей, анализ степени благонадежности клиента и другие.

Для того чтобы поэкспериментировать с нейронной сетью и решить с ее помощью какую-либо задачу, не обязательно учиться в МГУ или работать в научно-исследовательском институте. Надо просто установить один из пакетов моделирования нейронных сетей. Обычно в них приводится теория и рассмотрены примеры, достаточные для успешной работы. А вот и сами программы.

NeuroSolution. На сайте производителя этого продукта NeuroDimenSion выложена демо-версия программы (12 мегабайт). В целом демка очень даже ничего. Поначалу смутило отсутствие русскоязычного интерфейса, но развитая система подсказок, интуитивно понятный интерфейс, четкая и содержательная справка (теория и работа с программой) позволяют забыть об этом неудобстве. Красочные картинки, соответствующий инструментарий, возможность строить сети мышкой создают ощущение игры. К тому же программа довольно шустро работает по своему прямому назначению - есть программные ускорители и много других фишек. В общем, разберетесь сами. NeuroSolution можно рекомендовать для быстрого построения, экспериментирования и дальнейшего применения нейронных сетей при наличии начальных знаний о них. В зависимости от комплектации и предоставляемых возможностей цена продукта варьируется от 195 до 4495 долларов США.

NeuroOffice. Скачать демку (1.3 мегабайта) можно с сайта производителя - российской фирмы АльфаСистем. Ну что можно сказать? Интерфейс русскоязычный, что весьма порадовало. Однако его нельзя назвать дружественным и интуитивно понятным. Один из недостатков заключается в том, что каждую связь между нейронами приходится задавать вручную. Не впечатляет и отсутствие диагностических сообщений во время работы, не облегчает жизнь и запутанная справка. Хотя, может, для специалиста в самый раз, но пользователю со скромными знаниями придется помучиться. Разработчики рекомендуют применять продукт при прогнозировании, для построения экспертных систем, распознавания образов, цифровой обработки сигналов. В целом программа хорошо проявила себя в работе. Полная версия продается от 100 долларов США (для образовательных учреждений России и СНГ) и до 300–400 долларов (для иностранных пользователей).

Из этих двух утилит мне больше понравился NeuroSolution. Его встроенную справку я перевел "Сократом", в программе разобрался методом тыка. Не думайте, что кроме этих двух продуктов другого программного обеспечения не существует. Существует, и очень много. Поищите в Сети, может, какой эксклюзив найдете - тогда подбросьте ссылочку и мне!

Нейронные сети в Интернете

Нейросетевые технологии привлекают некоторыми возможностями. Это, во-первых, параллельная обработка информации, глобальность связей между нейронами. До обучения эти связи произвольны и малы. Обучение формирует структуру сети под конкретную задачу. Во-вторых, это способность решать неформализированные задачи, которая следует из способности нейронных сетей самостоятельно вырабатывать весьма сложные алгоритмы обработки данных. В-третьих, это надежность функционирования. Избыточность связей между нейронами приводит к тому, что вывод из строя некоторого количества нейронов не сказывается критически на работе всей сети.

Заинтересовавшимся подброшу несколько ссылочек:

www.neuroproject.ru - сайт компании "Нейропроект", которая производит нейросетевое программное обеспечение. Ресурс содержит много информации как для новичков, так и для специалистов;

neurnews.iu4.bmstu.ru/neurnews.html - новости российского рынка нейрокомпьютеров.

Сергей Бормотов, Мой компьютер, 29 сентября 2003 года