Программирование - это просто
Advertisement
Главная
16.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Синергетика: самоорганизующиеся системы в программировании Печать E-mail
Автор megabax   
06.01.2020 г.
Эта статья о здоровье для программистов и от программиста

Синергетика: самоорганизующиеся системы в программировании

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

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

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

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

На рисунке ниже показано, как устроен человеческий мозг и какие информационные потоки в нем протекают:

http://easyprog.ru/index.php?option=com_content&task=view&id=2680&Itemid=71


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

Таким образом все сигналы проецируются на кору. Проекция осуществляется пучками нервных волокон, которые распределяются по ограниченным областям коры. Участок, на который проецируется либо внешняя информация, либо информация с других участков мозга образует зону коры. Зоны бывают разные. В зависимости от поступающих сигналов зона имеет свою специализацию. Различают моторную зону коры, сенсорную зону, зоны Брока, Вернике, зрительные зоны, затылочную долю, всего около сотни различных зон.  На рисунке ниже показана структура зон коры больших полушарий:

http://easyprog.ru/index.php?option=com_content&task=view&id=2680&Itemid=71

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

http://easyprog.ru/index.php?option=com_content&task=view&id=2680&Itemid=71

 

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

Эфферентные волокна могут быть:

  • ассоциативные, которые связывают отдельные участки коры одного полушария;

  • комиссуральные, которые соединяют кору двух полушарий;

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

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

Мозг состоит из отдельных нейронов. Естественно, что моделирование мозга с помощью нейронных сетей начинается с ответа на вопрос, каков принцип его работы. В основе работы реального нейрона лежат химические процессы. В состоянии покоя между внутренней и внешней средой нейрона существует разность потенциалов – мембранный потенциал, составляющий около 75 милливольт. Он образуется за счет работы особых белковых молекул, работающих как натрий-калиевые насосы. Эти насосы за счет энергии нуклеотида АТФ гонят ионы калия внутрь, а ионы натрия — наружу клетки. Поскольку белок при этом действует как АТФ-аза, то есть фермент, гидролизующий АТФ, то он так и называется — «натрий-калиевая АТФ-аза». В результате нейрон превращается в заряженный конденсатор с отрицательным зарядом внутри и положительным снаружи.

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


http://easyprog.ru/index.php?option=com_content&task=view&id=2680&Itemid=71

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

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

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

Суть алгоритма состоит в том, что мы вычисляем некую целевую функцию, основанную на случайно подобранных параметрах. Затем меняем параметры (тоже случайным образом). Если целевая функция улучшилась, безусловно запоминаем изменения. Если ухудшилась, то мы запоминаем новое значение с некой вероятностью, которая тем больше, чем больше наша псевдотемпература. Постепенно мы понижаем псевдотемпературу, уменьшая скачки целевой функции. Таким способом мы можем обучать и нейросеть. В отличии от метода обратного распространения ошибки (Теория нейронных сетей. Урок 10. Алгоритм обучения многослойного персептрона для чайников), который может зайти в тупик, данный алгоритм иногда позволяет "выпрыгнуть" из тупиковой ветки и  достичь если не глобального экстремума целевой функции, то, хотя бы, лучше локального.

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

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

Также при помощи генетического  алгоритма можно обучать нейронные сети.

 
Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги