Библиотека    Новые поступления    Словарь    Карта сайтов    Ссылки





предыдущая главасодержаниеследующая глава

16.Егельский С. "Искусственные нейронные сети и ИИ"

Как работает нейронная сеть

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

Преимущества и особенности нейронной сети

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

Почему же тогда многие предпочитают нейросети? Одни чтобы заработать на модной новинке, другие чтобы поиграть в новую интеллектуальную игрушку, не отстать от моды попробовать новую технологию и так далее.

Так в чем же реальные преимущества нейронных сетей? Чтобы ответить на этот вопрос, во-первых, обратимся к десятилетнему опыту применения данной технологии красноярской группой НейроКомп, а во-вторых, попытаемся разгадать логику мирового нейросетевого "бума".

Что такое нейронные сети?

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

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

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

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

С коннекционизмом тесно связан следующий блок идей:

однородность системы (элементы одинаковы и чрезвычайно просты, все определяется структурой связей);

надежные системы из ненадежных элементов и "аналоговый ренессанс" использование простых аналоговых элементов;

"голографические" системы при разрушении случайно выбранной части система сохраняет свои свойства.

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

Истинные преимущества нейронных сетей?

Нейронные сети нынче в моде, но стоит ли следовать за ней? Ресурсы ограничены особенно у нас и особенно теперь. Так что же такое Нейрокомпьютер интеллектуальная игрушка или новая техническая революция? Что нового и полезного может сделать нейрокомпьютер? Очевидно, что на новые игрушки, даже высокоинтеллектуальные, средств нет; нейрокомпьютер должен еще доказать свои необыкновенные возможности совершить то, что не под силу обычной ЭВМ, иначе на него не стоит тратиться.

У энтузиастов имеются свои рекламные способы отвечать на заданные вопросы, рисуя радужные горизонты. Но все это в будущем. А сейчас? Ответы парадоксальны:

· нейрокомпьютеры это новая техническая революция, которая приходит к нам в виде интеллектуальной игрушки (вспомните, и ПК были придуманы для игры);

· для любой задачи, которую способен решить нейрокомпьютер, можно построить специализированную ЭВМ, которая решит ее не хуже, а подчас даже лучше.

Зачем же тогда нейрокомпьютеры? Вступая в творческую игру, мы не можем знать, чем она кончится, иначе это не Игра. Поэзия и реклама дают нам фантом, призрак результата, погоня за которым важнейшая часть игры. Столь же призрачными могут оказаться и прозаические ответы игра может далеко от них увести. Но и они необходимы иллюзия практичности столь же важна, сколь и иллюзия величия. Вот несколько вариантов прозаических ответов на вопрос "зачем?".

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

Б. Вместо программирования - обучение. Нейрокомпьютер учится только формировать учебные задачники. Труд программиста замещается новым трудом учителя (может быть, лучше сказать тренера или дрессировщика). Лучше это или хуже? Ни то, ни другое. Программист предписывает машине все детали работы, учитель создает "образовательную среду", к которой приспосабливается нейрокомпьютер. Появляются новые возможности для работы.

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

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

Д. Нейросетевые системы "демократичны", они также дружественны, как текстовые процессоры, поэтому с ними может работать любой, даже совсем неопытный пользователь.

Все это вместе служит рациональным основанием для нейрокомпьютерной моды.

Как постороить нейронную сеть

Теперь, когда стало ясно, что именно мы хотим построить, мы можем переходить к вопросу "как строить такую нейронную сеть". Этот вопрос решается в два этапа:

1. Выбор типа (архитектуры) нейронной сети.

2. Подбор весов (обучение) нейронной сети.

На первом этапе следует выбрать следующее:

· какие нейроны мы хотим использовать (число входов, передаточные функции);

· каким образом следует соединить их между собой;

· что взять в качестве входов и выходов нейронной сети.

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

На втором этапе нам следует "обучить" выбранную нейронную сеть, то есть подобрать такие значения ее весов, чтобы она работала нужным образом. Необученная нейронная сеть подобна ребенку - ее можно научить чему угодно. В используемых на практике нейронных сетях количество весов может составлять несколько десятков тысяч, поэтому обучение - действительно сложный процесс. Для многих архитектур разработаны специальные алгоритмы обучения, которые позволяют настроить веса нейронной сети определенным образом. ( Наиболее популярный из этих алгоритмов - метод обратного распространения ошибки (Error Back Propagation), используемый, например, для обучения перцептрона. )

Описанные выше процессы обучения и применения нейронных сетей можно увидеть в действии прямо сейчас. Фирмой Ward Systems Group подготовлено несколько простых программ, которые написаны на основе библиотеки NeuroWindows. Каждая из программ позволяет пользователю самостоятельно задать набор примеров и обучить на этом наборе определенную нейронную сеть. Затем можно предлагать этой нейронной сети новые примеры и наблюдать ее работу.

Задачи для нейронных сетей

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

· построение функции по конечному набору значений;

· оптимизация;

· построение отношений на множестве объектов;

· распределенный поиск информации и ассоциативная память;

· фильтрация;

· сжатие информации;

· идентификация динамических систем и управление ими;

· нейросетевая реализация классических задач и алгоритмов вычислительной математики: решение систем линейных уравнений, решение задач математической физики сеточными методами и др.

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

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

Классификация предприятий по степени их перспективности - это уже привычный способ использования нейронных сетей в практике западных компаний. При этом нейронная сеть также использует мн