Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2006 №5

Настоящее и будущее нейронных сетей

Грибачев Виталий


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

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

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

Впервые модель искусственной нейронной сети была предложена У. С. МакКаллоком и У. Питтсом в 1943 году. МакКаллок и Питтс показали и строго обосновали возможность реализации такой сетью «...любого функционирования... при условии, что оно поддается сколь-нибудь логически точному и однозначному описанию конечным числом слов» (цитируется по книге [1]). Исследователи этого периода ориентировались прежде всего на структурные моменты, например в известной модели Хебба (1949 г.) было введено понятие нейронной ассоциации и синапса Хебба. Согласно этой теории всякому определенному внешнему раздражителю соответствует цепочка нейронов, связанных посредством синаптической мембраны. Если корреляция с внешним раздражителем нарастает, усиливается и синаптический контакт и, следовательно, улучшаются условия для распространения возбуждения. Если корреляция ослабевает, синаптический контакт ухудшается. Эта и другие подобные теории вскоре привели американского ученого Ф. Розенблатта к модели мозга, названной им перцептроном (от лат. perceptio — «восприятие»). Сам ученый определяет перцептрон как «некоторое множество элементов, генерирующих сигналы (нейроны), связанные в единую сеть». Логические свойства перцептрона по Розенблатту определяются его топологией, то есть связями между нейронами, набором алгоритмов, управляющих генерацией, и передачей сигналов, а также набором функций памяти, или алгоритмов преобразования свойств сети в результате активности. Начиная с этого момента изображения нейронных сетей приобретают знакомый нам вид автономных кружочков, соединенных многочисленными связями, а структурно-функциональные схемы, которыми оперировали первые исследователи, уходят в прошлое.

Рис. 1. Схема базового процессорного элемента
Рис. 1. Схема базового процессорного элемента

На рис. 1 изображена функциональная схема модели нейрона, соотнесенная с биологическим нейроном (адалина). На рис. 2 нарисован простейший однослойный перцептрон. На рис. 3 изображена простейшая однослойная сеть перцептронного типа. В данном случае сеть имеет один входной нейрон (1), один выходной (4), один нейрон скрытого слоя (3) и один нейрон смещения (2), выделенный голубым цветом.

Рис. 2. Простейший перцептрон
Рис. 2. Простейший перцептрон
Рис. 3. Однослойная нейронная сеть
Рис. 3. Однослойная нейронная сеть

Прежде чем использовать нейронную сеть для выполнения какой-либо прикладной задачи, необходимо настроить коэффициенты W1–W3, чтобы выходные сигналы сети соответствовали заданной целевой функции. Процесс настройки весовых коэффициентов в нейросетевых терминах называется обучением. Нейроны смещения в многослойных сетях выполняют особую функцию. В физиологии нервной деятельности есть понятие «закон всё или ничего», в соответствии с которым нейрон возбуждается, только если входной раздражитель превысит некоторую пороговую величину. Вот эта пороговая величина — «смещение» — как раз и задается нейроном смещения, без него нейронная сеть не сможет функционировать.

Перцептронные нейронные сети были основательно изучены М. Минским и С. Пейпертом в 1969 году [2]. Из-за слабого развития теоретической базы нейросетевых вычислений ученые сделали ошибочные выводы о принципиальной невозможности эффективного обучения многослойной сети произвольной целевой функции. Авторитет данного исследования показался в то время настолько незыблемым, что дальнейшие работы в области нейронных сетей были заморожены на много лет, до тех пор пока в 1986 году исследовательская группа по параллельным вычислениям (группа PDP: Д. Румельхарт, Дж. Хинтон, Р. Вильямс, США) не разработала вычислительную процедуру обучения многослойных нейронных сетей (МНС), получившую название «error back propagation metod» (BPM — метод обратного распространения ошибки) [3]. После этого интерес к искусственным нейронным сетям и их практическому применению приобрел характер настоящего бума, продолжающегося до сих пор.

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

Проблемы обучения нейронных сетей

Хотя основной алгоритм обучения многослойных нейронных сетей (BPM) открыт уже достаточно давно и весьма хорошо исследован, обучение нейронных сетей в данный момент по-прежнему больше напоминает шаманство, нежели технологию.

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

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

где n — размерность входного сигнала, m — размерность выходного сигнала, N — число элементов обучающей выборки [4].

Получив необходимое число весов, можно рассчитать число нейронов в скрытых слоях. Например, если речь идет о двухслойной сети, число нейронов в скрытом слое будет:

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

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

Рис. 4. Состояние переобучения: 1 — истинная зависимость; 2 — слишком точная аппроксимация полиномом
Рис. 4. Состояние переобучения: 1 — истинная зависимость; 2 — слишком точная аппроксимация полиномом

Также имеются трудности, связанные с внутренней организацией входных данных.

Это так называемое «проклятие размерности». В общем случае входные данные содержат шум и некоторое количество малозначащей информации. При попытке заставить сеть разобрать все это по кластерам без предварительной подготовки входных данных мы рискуем получить неверные обобщения. С другой стороны, если внутренняя структура данных нам неизвестна (задача кластеризации в чистом виде), мы в подобной ситуации вынуждены увеличивать число входных элементов сети. Необходимое число входных нейронов быстро возрастает с увеличением размерности кластеризуемого пространства (приблизительно как 2N), а вслед за увеличением числа входных нейронов неизбежно изменяется и число нейронов скрытого слоя, иначе процесс кластеризации может сопровождаться потерями значимой информации. Это усложняет процесс обучения нейронной сети и делает его менее предсказуемым.

Желающим получить более подробную информацию о процессах, происходящих в нейронных сетях во время обучения, рекомендую замечательную книгу Роберта Каллана [5]. Свою первую нейронную сеть я программировал именно по этой книге.

Таким образом, для успешного решения задачи обучения нейронной сети необходимо:

  1. Правильно выбрать структуру сети (то есть количество слоев и количество нейронов в каждом слое). Выбор подходящей структуры сети должен соответствовать характеру решаемой задачи.
  2. Правильно выбрать параметры обучения, в частности шаг обучения сети, норму обучения, количество обучающих примеров, сам алгоритм обучения.
  3. Правильно подготовить входные данные. Желательно, чтобы перед началом обучения исследователь в общих чертах представлял себе структуру входных данных, отфильтровал шум, желательно также избавиться от малозначащих составляющих входных данных. В некоторых случаях предварительная обработка данных может предусматривать линейное преобразование, выделяющее из всей массы входных данных некоторый набор наиболее значимых направлений или векторов (метод главных компонент, Bishop, 1995). Иногда такое преобразование можно поручить дополнительной нейронной сети, содержащей в скрытом слое меньше нейронов, чем во входном или выходном слоях, что позволяет понижать размерность входных данных. То есть как бы сжимать их.

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

Обзор некоторых наиболее перспективных структур нейронных сетей

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

Топология сетей, основанных на нечеткой логике

Нечеткая логика допускает существование у булевой переменной промежуточных значений, в отличие от традиционной логики, где значений всего два (истина — 1) и (ложь — 0). Это позволяет распространить применение методов математической логики на классы явлений, к которым традиционная логика применяться не могла. Например, для описания степени соотношения между явлениями, или степени достоверности. С помощью нечеткой логики, к примеру, можно строить модели, описывающие поведение игроков на валютных рынках. Поскольку в данном случае мы неизбежно должны были бы пользоваться некими оценками степени доверия игроков к той или иной входящей информации, очевидно, что то же самое описание, основанное на традиционной логике, было бы затруднительно. Более подробную вводную статью о нечеткой логике можно почитать на сайте www.reshebnik.net.ru (стоит также обратить внимание на раздел ссылок).

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

Для примера рассмотрим топологию нечеткой сети на два входных канала, один выходной канал и три управляющих правила. В случае использования нечеткой логики структура сети полностью определяется начальными условиями, то есть набором управляющих правил, количеством входов и выходов. В этом случае каждому из начальных условий сопоставляется отдельный слой нейронов. Таким образом, зная начальные условия, мы можем произвести послойный расчет топологии сети. Методика подобного расчета подробно описана в книге Рутковских [6].

  • L1 = 2— количество нейронов первого слоя соответствует количеству входных каналов.
  • L2 = n×N = 2×3 = 6 нейронов во втором слое сети, где n — количество нейронов первого слоя, N — количество нечетких правил (так как в каждое нечеткое правило входит каждая из входных переменных).
  • L3 = N = 3— соответствует количеству нечетких правил (мы задались тремя).
  • L4 = 2 нейрона, предназначенные для суммирования сигналов предыдущего слоя.
  • L5 = 1 — выходной слой содержит один нейрон потому, что у нас всего один выходной канал.
Рис. 5. Структура нечеткой сети на три управляющих правила: 1 — блок фуззификации; 2 — блок нечеткого вывода; 3 — блок дефуззификации
Рис. 5. Структура нечеткой сети на три управляющих правила: 1 — блок фуззификации; 2 — блок нечеткого вывода; 3 — блок дефуззификации

Общий вид полученной сети представлен на рис. 5. Следует отметить, что структура нечеткой нейронной сети всегда соответствует формальной логике нечеткого логического вывода, в соответствие с которой входная четкая величина подвергается операции фуззификации путем пропускания ее через набор так называемых функций принадлежности μa (в нашем случае — это функции активации нейронов слоя L2), затем производят операцию нечеткого вывода, согласно набору управляющих правил (слой L3), и в заключение для получения четкой выходной величины производят дефуззификацию (в нашем случае эта операция выполняется слоями L4 и L5).

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

Здесь y — выходная четкая величина, yk — точка, в которой функция принадлежности μB достигает максимального значения (центр распределения функции принадлежности), N — количество нейронов в слое, k — номер текущего нейрона. Знаки суммирования соответствуют нейронам слоя L4, а операция деления — нейрону слоя L5. На вход функции принадлежности μB в числителе подаются нечеткие выходные значения нейронов слоя L2, полученные после стадии фуззификации.

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

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

Топология сетей RBF (Radial Basis Function)

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

вектор весовой матрицы сети как w = [w1, w2, …wn], и вектор выходных значений как d = [d1, d2, …dn], общее уравнение функционирования сети можно записать в виде матричного уравнения:

или в векторной форме:

откуда получаем вектор весов выходного нейрона сети:

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

где σi— параметр, от значения которого зависит ширина (радиус) функции, а сi — центр распределения функции. Структура RBF-сети представлена на рис. 6.

Рис. 6. Структура RBF-сети
Рис. 6. Структура RBF-сети

Для успешного обучения подобной сети следует, во-первых, подобрать параметры сi и σi, во-вторых, подобрать веса нейронов выходного слоя.

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

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

Топология сетей двунаправленной ассоциативной памяти (сети BAM — Bidirectorial Associative Memory)

Предложена Б. Коско. Состоит из двух слоев нейронов, включенных встречным образом, как показано на рис. 7.

Рис. 7. Структура сети BAM
Рис. 7. Структура сети BAM

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

Принцип обучения сетей BAM заключается в пошаговой настройке коэффициентов путем решения матричного уравнения:

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

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

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

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

Нейронные сети и искусственный интеллект

Между искусственными нейронными сетями и традиционным ИИ существует такая же принципиальная разница, какая существует между человеческим сознанием и отдельной популяцией нейронных клеток в пробирке.

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

Но есть один весьма существенный момент. Для создания системы ИИ в традиционном понимании необходимо в явном виде запрограммировать весь процесс приобретения и использования полученного знания. При этом проектировщики такой системы неизбежно вторгаются в недостаточно исследованную на сегодняшний момент область. Им необходимо понять, как живые существа приобретают новые знания и в каком виде они хранятся внутри. Очевидно, часть знаний мы получаем из опыта, часть в виде готовых правил, а часть информации достается нам генетически в виде рефлексов. Но и это еще не все. Существуют определенные сложности с построением модели рассуждений (например, каскадные умозаключения, когда каждое последующее умозаключение делается на основе предыдущего и корректируется с учетом вновь поступившей информации), наконец, традиционный ИИ испытывает значительные трудности с построением механизмов самомодификации своей внутренней структуры, то есть с организацией процесса обучения. Таким образом, возможности нейронных сетей в некоторых смыслах превосходят традиционный ИИ. Так, в нейронной сети достаточно легко организовать процесс самомодификации структуры путем удаления или добавления отдельных нейронов. Значительно легче организуется и процесс обучения, поскольку сеть обучается по сути, как «черный ящик», на примерах. Надобности в построении структуры данных и разработке правил работы с ними у программиста в данном случае нет. Однако очевидно, что искусственный мозг на паре нейронов не построишь, а с увеличением количества нейронов стремительно возрастает практическая сложность обучения подобной сети. А потому, вероятно, лучшим выходом на данном этапе будет комбинирование этих двух основных подходов. Искусственные нейронные сети можно с успехом использовать для моделирования рецепторов и первичной обработки информации, а традиционный ИИ хорош в области наиболее абстрактных обобщений.

Кроме того, видимо пришло время более масштабных экспериментов, чем проводились до сих пор. В этой связи следует отметить, например, зарубежный проект CYC http://www.cyc.com и отечественный проект «Ева» http://aigood.narod.ru.

Литература

  1. Розенблатт Ф. Принципы нейродинамики: Перцептрон и теория механизмов мозга. М.: Мир. 1965.
  2. Минский М., Пейперт С. Перцептроны. М.: Мир. 1971.
  3. Rumelhart D. E., Hinton G. E., Williams R. J. Learning internal representations by error propagation // Parallel Distributed Processing. 1986. Vol. 1, № 8.
  4. Круглов В. В., Дли М. И., Голунов Р. Ю. Нечеткая логика и искусственные нейронные сети: Учеб. пособие. М.: Издательство физико-математической литературы. 2001.
  5. Каллан Р. Основные концепции нейронных сетей. Пер. с англ. М.: Издательский дом «Вильямс». 2001.
  6. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. М.: Горячая линия — Телеком. 2004.
  7. Круглов В. В., Борисов В. В. Искусственные нейронные сети теория и практика. М.: Горячая линия — Телеком. 2002.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Сообщить об ошибке