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

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

Основные свойства

Как мы узнали в главе 2, искусственные нейронные сети составлены из множества отдельных процессоров, которые мы называем блоками обработки данных (или, сокращенно, просто блоками), так же, как сформированы нейронные сети в живых биологических системах. Биологический нейрон — это одна клетка с щупальцами для ввода информации, называемыми дендритами, и щупальцами для вывода информации — аксонами (рис. 10.13). Сигналы, которые передаются через аксоны клетки, указывают, находится она в заторможенном или возбужденном состоянии. Это состояние определяется комбинацией сигналов, полученных дендритами клетки. Дендриты принимают сигналы от аксонов других клеток через небольшие промежутки, называемые синапсами. Исследования показывают, что проводимость синапсов управляется их химическим составом. То есть окажет ли определенный входной сигнал затормаживающий или возбуждающий эффект на нейрон, определяется химическим составом синапса. Поэтому считается, что биологическая нейронная сеть обучается, настраивая эти химические соединения между нейронами.

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

рисунке выходы трех блоков обработки данных (обозначенные t>,, v2 и р3) являются входами другого блока. Входы в четвертый блок связаны со значениями, называемыми весами (да,, w2 и да3). Блок, получающий информацию, умножает каждое из значений входа на связанный с ним вес и затем складывает результаты умножения для получения эффективного входа (v^wt + v2w2 + v3w3). Если полученная сумма превышает пороговое значение обрабатывающего модуля, он выдает значение 1, в противном случае на выход подается значение 0.

Модули обработки данных (см. рис. 10.14) будем обозначать прямоугольниками. На входе блока разместим небольшие прямоугольники для обозначения входов, в каждом из которых запишем вес, связанный с этим входом. В середине большого прямоугольника запишем пороговое значение для этого модуля. Так, модуль обработки данных (рис. 10.15) имеет три входа и пороговое значение, равное 1,5. Первому входу назначен вес -2, второму — вес 3, а третьему — вес, равный —1. Таким образом, если модуль получает входы, равные 1, 1 и 0, эффективный вход будет равен:

(1)х(-2) + (1)х(3) + (0)х(-1)-1

 
 

и на выход будет подан 0. Однако если модуль получит 0, 1 и 1, эффективный выход будет равен:

(0)х(-2) + (1)х(3) + (1)х(-1)-2

что превышает пороговое значение. Выходом будет единица.

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

Рассмотрим пример. Простая сеть, представленная на рис. 10.1, а, запрограммирована выдавать 1, если значения двух ее входов различаются, и 0 в противном случае (логическая операция XOR). Если же мы изменим веса, как на рис. 10.16, б, то получим сеть, выдающую 1, если значения обоих входов равны 1, и 0 — в противном случае (логическая операция AND).

Необходимо обратить внимание на то, что сеть на рис. 10.16 значительно проще реальной биологической сети. В человеческом мозгу содержится приблизительно 10" нейронов, и для каждого нейрона существует примерно 104 синапсов. Количество дендритов у биологического нейрона столь велико, что они выглядят скорее как волоконная сеть, а не как отдельные щупальца, показанные на наших рисунках.

Приложение теории

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

Мы начнем с предположения, что поле зрения состоит из квадратных пикселов, каждый из которых равен квадратным элементам, из которых составлены буквы. Каждый пиксел присоединен к датчику, который выдает 1, если пиксел закрыт просматриваемой буквой, и 0 — в противном случае. Выходы этих датчиков мы используем как входы нашей искусственной нейронной сети.

Сеть (рис. 10.19) состоит из блоков обработки данных двух уровней. Первый уровень составляет множество блоков — по одному для каждой области размером 3x3 пиксела в поле зрения. Для каждого из этих блоков существует девять входов, с которыми связаны датчики областей 3x3. (Обратите внимание, что области, связанные с обрабатывающими блоками первого уровня, перекрывают друг друга, поэтому каждый датчик является входом для девяти блоков обработки данных первого уровня.)

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

Для каждого модуля обработки данных на первом уровне также установлено пороговое значение 0,5. Для каждого из входов вес задан равным 1, кроме входа, связанного с центральным пикселом области 3x3 этого модуля, для которого вес равен 2. Таким образом, каждый из этих модулей может выдать единицу, только если получит единицу от датчика, связанного с пикселом в центре области 3x3.

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

Рассмотрим ситуацию с буквой Т в поле зрения. Представим себе область 3x3, центр которой — квадрат, закрытый нижнейчастью ножки буквы Т (рис. 10.21). Обрабатывающий блок, связанный с этим квадратом, получит эффективный вход, равный 1 (2 от центрального пиксела и 1 от остальных пикселов, закрытых ножкой). Это превышает пороговое значение блока, поэтому он отправит единицу

блоку высшего уровня. Таким образом, блок высшего уровня также выдаст значение 1.

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

ОТ МАЛОГО К БОЛЬШОМУ---------------------------------------------------------------------

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

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

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

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

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

Ассоциативная память

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

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

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

Рассмотрим искусственную нейронную сеть, показанную на рис. 10.22. Каждый круг на рисунке обозначает блок обработки данных, пороговое значение для которого записано внутри круга. Линии между кругами представляют связи между соответствующими блоками. Все связи двунаправленные, то есть линия, соединяющая два блока, указывает, что выход каждого из этих блоков является входом для другого. Следовательно, выход центрального блока подсоединен ко входам всех блоков по периметру, а выход каждого блока периметра является входом центрального блока. Два соединенных блока назначают одинаковые веса входам друг от друга. Этот общий вес записывается рядом с соединяющей их линией. Так, блок в верхней части диаграммы назначает вес 1 входу, полученному от центрального блока, и вес 1 входам от его соседей по периметру. Анатогично, центральный блок назначает вес 1 всем значениям, которые получает от блоков по периметру.

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

Рассмотрим последовательность событий, которые произойдут, если мы установим такую конфигурацию сети, когда только два крайних правых блока заторможены, а остальные возбуждены (рис. 10.23, а). Крайние слева блоки получат эффективные входы, равные 1, поэтому останутся возбужденными. Их соседи по периметру получат нулевые эффективные входы и перейдут в заторможенное состояние. Эффективный вход для центрального блока будет равен 4, поэтому он также перейдет в заторможенное состояние. Следовательно, конфигурация всей сети изменится на конфигурацию (рис. 10.23, б), где только два левых крайних блока возбуждены. Так как центральный блок теперь заторможен, возбужденное состояние левых крайних блоков вызовет повторное возбуждение верхнего и нижнего блоков. В то же время центральный блок останется заторможенным, так как эффективный вход для него равен 2. Сеть перейдет в состояние, показанное на рис. 10.23, в, из которого перейдет в состояние, представленное на рис. 10.23, г. (Вы можете убедиться, что мигающий эффект также возникнет, если установить сеть в такое состояние, когда возбуждены только четыре верхних блока. Верхний блок останется в возбужденном состоянии, тогда как его соседи по периметру и центральный блок будут переходить из возбужденного состояния в заторможенное и обратно.)

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: