Нейронные сети (работа 2)
Задание 1. Нейронные сети
Две базовые архитектуры компьютеров - последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам - появились практически одновременно.
Концептуально они оформились в 30-40-х годах. Первая - в теоретической работе Тьюринга 1936 г., предложившего гипотетическую машину для формализации понятия вычислимой функции, и затем уже в практической плоскости - обобщившего уроки создания первой ЭВМ ENIAC и предложившего методологию конструирования машин с запоминаемыми программами (ENIAC программировался штекерами). Так, в качестве базовых элементов ЭВМ фон Нейман предложил модифицированные формальные нейроны Мак-Каллока и Питтса - основателей нейросетевой архитектуры.
Что касается нейросетевой архитектуры, то, несмотря на многочисленные реверансы в сторону нейронных сетей со стороны классиков кибернетики, их влияние на промышленные разработки вплоть до недавнего времени было минимальным. Хотя в конце 50-х - начале 60-х с этим направлением связывали большие надежды, в основном благодаря Фрэнку Розенблатту, разработавшему первое обучаемое нейросетевое устройство для распознавания образов, персептрон (от английского perception - восприятие).
Персептрон был впервые смоделирован в 1958 году, причем его обучение требовало около получаса машинного времени на одной из самых мощных в то время ЭВМ IBM-704. Аппаратный вариант - Mark I Perceptron - был построен в 1960 г. и предназначался для распознавания зрительных образов. Его рецепторное поле состояло из матрицы фотоприемников 20х20, и он успешно справлялся с решением ряда задач.
Тогда же возникли первые коммерческие нейрокомпьютинговые компании. В 1969 году Марвин Минский выпустил вместе с южноафриканским математиком Пейпертом книгу "Персептроны". В этой роковой для нейрокомпьютинга книге была строго доказана принципиальная ограниченность персептронов. Исследования в этом направлении были свернуты вплоть до 1983 года, когда они, наконец, получили финансирование от Агентства перспективных военных исследований США (DARPA). Этот факт стал сигналом к началу нового нейросетевого бума.
Интерес широкой научной общественности к нейросетям пробудился после теоретической работы физика Джона Хопфилда (1982 г), предложившего модель ассоциативной памяти в нейронных ансамблях. Холфилд и его многочисленные последователи обогатили теорию нейросетей многими идеями из арсенала физики, такими как коллективные взаимодействия нейронов, энергия сети, температура обучения и т.д. Однако настоящий бум практического применения нейросетей начался после публикации в 1986 году Давидом Румельхартом с соавторами метода обучения многослойного персептрона, названного ими методом обратного распространения ошибки (error back-propagation). Ограничения персептронов, о которых писали Минский и Пейперт, оказались преодолимыми, а возможности вычислительной техники-достаточными для решения широкого круга прикладных задач. В 90-х годах производительность последовательных компьютеров возросла настолько, что это позволило моделировать с их помощью работу параллельных нейронных сетей с числом нейронов от нескольких сотен до десятков тысяч. Такие эмуляторы нейросетей способны решать многие интересные с практической точки зрения задачи.
В основу искусственных нейронных сетей положены следующие черты живых нейронных сетей, позволяющие им хорошо справляться с нерегулярными задачами:
простой обрабатывающий элемент - нейрон (рис.1.1);
очень большое число нейронов участвует в обработке информации;
один нейрон связан с большим числом других нейронов (глобальные связи);
изменяющиеся по весу связи между нейронами;
массированная параллельность обработки информации.
Прототипом для создания нейрона послужил биологический нейрон головного мозга. Биологический нейрон имеет тело, совокупность отростков - дендритов, по которым в нейрон поступают входные сигналы, и отросток - аксон, передающий выходной сигнал нейрона другим клеткам. Точка соединения дендрита и аксона называется синапсом. Упрощенно функционирование нейрона можно представить следующим образом (рис.1.2):
1) нейрон получает от дендритов набор (вектор) входных сигналов;
2) в теле нейрона оценивается суммарное значение входных сигналов.
Однако входы нейрона неравнозначны. Каждый вход характеризуется некоторым весовым коэффициентом, определяющим важность поступающей по нему информации.
Таким образом, нейрон не просто суммирует значения входных сигналов, а вычисляет скалярное произведение вектора входных сигналов и вектора весовых коэффициентов;
Рис.1.1 Биологический нейрон
Рис.1.2 Искусственный нейрон
3) нейрон формирует выходной сигнал, интенсивность которого зависит от значения вычисленного скалярного произведения. Если оно не превышает некоторого заданного порога, то выходной сигнал не формируется вовсе - нейрон "не срабатывает";
4) выходной сигнал поступает на аксон и передается дендритам других нейронов.
Поведение искусственной нейронной сети зависит как от значения весовых параметров, так и от функции возбуждения нейронов. Известны три основных вида функции возбуждения: пороговая, линейная и сигмоидальная. Для пороговых элементов выход устанавливается на одном из двух уровней в зависимости от того, больше или меньше суммарный сигнал на входе нейрона некоторого порогового значения. Для линейных элементов выходная активность пропорциональна суммарному взвешенному входу нейрона. Для сигмоидальных элементов в зависимости от входного сигнала, выход варьируется непрерывно, но не линейно, по мере изменения входа. Сигмоидальные элементы имеют больше сходства с реальными нейронами, чем линейные или пороговые, но любой из этих типов можно рассматривать лишь как приближение.
Нейронная сеть представляет собой совокупность большого числа сравнительно простых элементов - нейронов, топология соединений которых зависит от типа сети. Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, мы должны выбрать, каким образом следует соединять нейроны друг с другом, и соответствующим образом подобрать значения весовых параметров на этих связях. Может ли влиять один элемент на другой, зависит от установленных соединений. Вес соединения определяет силу влияния.
Нейронные сети принадлежат к классу коннекционистских моделей обработки информации. Основная их черта - использовать взвешенные связи между обрабатывающими элементами как принципиальное средство запоминания информации. Обработка в таких сетях ведется одновременно большим числом элементов, благодаря чему они терпимы к неисправностям и способны к быстрым вычислениям.
Задать нейронную сеть, способную решить конкретную задачу, это значит определить модель нейрона, топологию связей, веса связей. Нейронные сети различаются между собой меньше всего моделями нейрона, а в основном топологией связей и правилами определения весов или правилами обучения (рис.1.3), программирования.
Рис.1.3 Процесс обучения нейросети
Исходя из вышеизложенного, можно заключить, что для решения задач прогнозирования наиболее подходит сеть с обратным распространением. Она позволяет формальным образом обучить сеть прогнозировать изменение требования на основе исторических данных о требовании. Процесс применения нейросети приведен на рисунке 1.4
Рис.1.4 Процесс применения нейросети
Для описания алгоритмов и устройств в нейроинформатике выработана специальная "схемотехника", в которой элементарные устройства - сумматоры, синапсы, нейроны и т.п. объединяются в сети, предназначенные для решения задач.
Самый заслуженный и, вероятно, наиболее важный элемент нейросистем - это адаптивный сумматор. Адаптивный сумматор вычисляет скалярное произведение вектора входного сигнала x на вектор параметров . На схемах будем обозначать его так, как показано на рис.1.5 Адаптивным называем его из-за наличия вектора настраиваемых параметров . Для многих задач полезно иметь линейную неоднородную функцию выходных сигналов. Ее вычисление также можно представить с помощью адаптивного сумматора, имеющего n+1 вход и получающего на 0-й вход постоянный единичный сигнал (рис.1.6).
Нелинейный преобразователь сигнала изображен на рис.1.7 Он получает скалярный входной сигнал x и переводит его в (x).
Точка ветвления служит для рассылки одного сигнала по нескольким адресам (рис.1.8). Она получает скалярный входной сигнал x и передает его всем своим выходам.
Рис.1.5 Адаптивный сумматорРис.1.6 Неоднородный адаптивный сумматор
Рис.1.7 Нелинейный преобразователь сигнала
Рис.1.8 Точка ветвления
Рис.1.9 Формальный нейронРис.1.10 Линейная связь (синапс)
Элементы слоистых и полносвязных сетей могут выбираться по-разному. Существует, впрочем, стандартный выбор - нейрон с адаптивным неоднородным линейным сумматором на входе (рис.1.9).
Линейная связь - синапс - отдельно от сумматоров не встречается, однако для некоторых рассуждений бывает удобно выделить этот элемент (рис.1.10). Он умножает входной сигнал x на "вес синапса" a.
Веса синапсов сети образуют набор адаптивных параметров, настраивая которые, нейронная сеть обучается решению задачи. Обычно на диапазон изменения весов синапсов накладываются некоторые ограничения, например, принадлежности веса синапса диапазону [-1,1].
Среди всего множества нейросетевых архитектур можно выделить две базовых архитектуры - слоистые и полносвязные сети.
Слоистые сети: нейроны расположены в несколько слоев (рис.1.11). Нейроны первого слоя получают входные сигналы, преобразуют их и через точки ветвления передают нейронам второго слоя. Далее срабатывает второй слой и т.д. до k-го слоя, который выдает выходные сигналы. Если не оговорено противное, то каждый выходной сигнал i-го слоя подается на вход всех нейронов i+1-го. Число нейронов в каждом слое может быть любым и никак заранее не связано с количеством нейронов в других слоях. Стандартный способ подачи входных сигналов: каждый нейрон первого слоя получает все входные сигналы. Особое распространение получили трехслойные сети, в которых каждый слой имеет свое наименование: первый - входной, второй - скрытый, третий - выходной.
Рис.1.11 Слоистая сеть
Полносвязные сети: имеют один слой нейронов; каждый нейрон передает свой выходной сигнал остальным нейронам, включая самого себя. Выходными сигналами сети могут быть все или некоторые выходные сигналы нейронов после нескольких тактов функционирования сети. Все входные сигналы подаются всем нейронам.
Можно выделить два класса задач, решаемых обучаемыми нейронными сетями. Это задачи предсказания и классификации.
Задачи предсказания или прогнозирования являются, по существу, задачами построения регрессионной зависимости выходных данных от входных. Нейронные сети могут эффективно строить сильно нелинейные регрессионные зависимости. Специфика здесь такова, что, поскольку решаются в основном неформализованные задачи, то пользователя интересует в первую очередь не построение понятной и теоретически обоснованной зависимости, а получение устройства-предсказателя. Прогноз такого устройства непосредственно не пойдет в дело - пользователь будет оценивать выходной сигнал нейросети на основе своих знаний и формировать собственное экспертное заключение. Исключения составляют ситуации, на основе обученной нейронной сети создают устройство управления для технической системы.
При решении задач классификации нейронная сеть строит разделяющую поверхность в признаковом пространстве, а решение о принадлежности ситуации тому или иному классу принимается самостоятельным, не зависящим от сети устройством - интерпретатором ответа сети. Наиболее простой интерпретатор возникает в задаче бинарной классификации (классификации на два класса). В этом случае достаточно одного выходного сигнала сети, а интерпретатор относит, например, ситуацию к первому классу, если выходной сигнал меньше нуля, и ко второму, если он больше или равен нулю.
Классификация на несколько классов требует усложнения интерпретатора. Широко используется интерпретатор "победитель забирает все", где число выходных сигналов сети равно числу классов, а номер класса будет соответствовать номеру максимального выходного сигнала.
Одна нейронная сеть может одновременно предсказывать несколько чисел, либо одновременно решать задачи и прогнозирования, и классификации. Потребность в последнем возникает, однако, крайне редко, и лучше решать разнотипные задачи отдельными нейронными сетями.
В литературе встречается значительное число признаков, которыми должна обладать задача, чтобы применение нейросетей было оправдано и нейронная сеть могла бы ее решить:
отсутствует алгоритм или не известны принципы решения задач, но накоплено достаточное число примеров;
проблема характеризуется большими объемами входной информации;
данные неполны или избыточны, зашумлены, частично противоречивы.
Таким образом, нейронные сети хорошо подходят для распознавания образов и решения задач классификации, оптимизации и прогнозирования.