Некоммерческое акционерное общество

Алматинский университет энергетики и связи

Кафедра автоматической электросвязи

 

 

 

МАТЕРИАЛЫ И МЕТОДЫ НАНОТЕХНОЛОГИИ В НАНОЭЛЕКТРОНИКИ

Методические указания к выполнению лабораторных работ

(для обучающихся в профильной магистратуре по специальности
 6M071900 – Радиотехника, электроника и телекоммуникации)

 

 

Алматы 2011 

СОСТАВИТЕЛИ: И. Э. Сулейменов, П. В. Обухова. Материалы и методы нанотехнологии и наноэлектроники. Методические указания к выполнению лабораторных работ  (для обучающихся в профильной магистратуре по специальности 6M071900).-Алматы: АУЭС, 2011.-37 с.

 

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

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

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

Ил.-34, табл.- 8 , библиогр.- 5 назв., 37 с.

 

Рецензент: канд. техн. наук, доц. Байкенов А. С.

 

Печатается по плану издания НАО «Алматинского университета энергетики и связи» на 2011 г.

 

© НАО «Алматинский университет энергетики и связи», 2011 г.        

Дополнительный план 2011г., поз.50


Введение 

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

Выбор нейросетевых методов как основы данных работ был продиктован следующими соображениями.

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

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

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

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

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

 

1 Лабораторная работа №1. Создание нейронной сети

 

Цель работы: ознакомление студентов с основными принципами построения нейронных сетей.

 

1.1 Предварительная подготовка

 

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

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

 

1.2 Задание к работе.

 

1.2.1 Выбрать количество слоев нейронной сети по варианту (вариант выбирается по последней цифре зачетной книжки в таблице 1.1).

 

Т а б л и ц а 1.1 – Количество слоев в нейронной сети

Последняя цифра зач. кн.

0

1

2

3

4

5

6

7

8

9

n

4

5

6

7

6

5

4

6

5

4

 

1.2.2 Выбрать количество нейронов в заданных слоях по варианту (таблица 1.2).

 

Т а б л и ц а 1.2 – Количество нейронов в слоях

Предпоследняя

Цифра зач. кн.

0

1

2

3

4

5

6

7

8

9

Слой 1

20

20

18

19

20

22

20

25

22

24

Слой2

15

18

17

20

15

20

15

20

20

20

Слой3

10

14

16

17

14

15

12

18

15

12

Слой 4

5

10

15

16

12

10

4

15

10

8

Слой 5

 

4

10

10

10

5

 

10

4

 

Слой 6

 

 

8

8

5

 

 

5

 

 

Слой 7

 

 

 

4

 

 

 

 

 

 

 

1.2.3 Обучить нейронную сеть

1.2.4 Создать несколько образов.

1.2.5 Задать образ на входе сети и распознать его.

1.2.6 Сравнить соответствует ли распознанный образ на входе сети образу на выходе сети в созданных файлах и сделать выводы.

 

1.3 Методические указания к лабораторной работе №1

 

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

Рассмотрим архитектуру сети прямого распространени (см. рисунок 1.1). В таких сетях обязательно присутствует входной слой, один или несколько промежуточных (скрытых) слоев и выходной слой. Входной слой служит для распределения входных сигналов по всем нейронам промежуточного слоя.

 

 

Рисунок 1.1 – Нейронная сеть прямого распространения

 

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

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

В настоящее время широкое распространение получил алгоритм обратного распространения ошибки и его модификации.

Он основан на минимизации целевой функции ошибки нейронной сети. В соответствии с методом наименьших квадратов, указанную функцию ошибки можно записать как (1.1):

 

                                          ,

 (1.1)

 

 

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

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

 

                                             ,

(1.2)

где  - весовой коэффициент связи, соединяющей выход нейрона I со входом нейрона j;  - коэффициент скорости обучения, 0<<1.

Используя (1.1), распишем значение , (1.3)

 

                              ,

(1.3)

где - выходной сигнал нейрона j; - взвешенная сумма сигналов, поступающих на входы сигналов j-го нейрона .

Частные производные в правой части выражения (1.3) даются выражением:

 

                                          ; .

Т.к.  и  связаны соотношением , где  - функция активации нейрона, то имеет место очевидное равенство  (производная функции по ее аргументу). Последняя производная является выходом нейрона i: .

Таким образом, коррекция веса для нейронов выходного слоя имеет вид (1.4):

 

                                         .

(1.4)

 

Частная производная  является локальным градиентом. Локальный градиент выходного слоя можно записать (1.5):

 

                                             .

(1.5)

 

Локальный градиент скрытого слоя выражается через локальный градиент последующего слоя и имеет вид (1.6):

 

                                      .

(1.6)

В общем виде коррекция веса нейрона для любого слоя запишется как (1.7):

 

                                           

                       .

 

(1.7)

 

При использовании алгоритма обратного распространения для обучения сети существует два прохода вычислений. Первый (прямой) проход соответствует режиму нормальной работы сети. На вход сети подается обучающая последовательность . Выходы нейронов примут следующие значения (1.8):

 

                                              .

(1.8)

где  - индуцированное локальное поле нейрона j . Если j – входной слой, то . Если j – выходной слой, то  являются элементами выходного вектора.

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

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

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

2)       Рассчитываем локальный градиент для выходного слоя (1.5), рассчитываем изменения весов (1.4).

3)       Рассчитываем локальный градиент и изменения весов для всех остальных слоев (1.6), (1.7).

4)       Корректируем веса каждого слоя рассчитывается как (1.9).

 

                                         .

(1.9)

 

5)       Если ошибка (1) не соответствует заданным критериям, то переходим к шагу 1. Иначе обучение завершено.

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

Если сеть работает с двоичными образами и традиционными активационными функциями, имеющими область значений [0,1] возможна ситуация, в которой обучение остановится из-за большого наличия нулевых выходов. Иногда бывает полезно скорректировать функции активации, путем смещения их области значений в область [-0.5, 0.5].

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

а) логистическая функция (см. рисунок 1.2)

 

,

 

где а>0;  - индуцированное локальное поле нейрона.

 

Рисунок 1.2-Логистическая функция

 

Производную данной функции можно выразить следующим образом:

 

,

где  - выходной сигнал нейрона j.

 

б) гиперболический тангенс (см. рисунок1.3)

 

,

где a, b – положительные константы.

Рисунок 1.3 – Активационная функция – гиперболический тангенс

 

Производная гиперболического тангенса:

.

Ёмкость нейронной сети характеризует количество образов, предъявляемых на её входы, которые она в состоянии распознать. Для сетей, с числом слоев больше двух на данный момент точного ответа не существует. В приведена оценка ёмкости сети () с двумя слоями, которая может быть выражена:

 

,

 

где  - число подстраиваемых весов;  - число нейронов в выходном слое.

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

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

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

 

1.3.1 Рассмотрим конкретный пример работы с сетью на основе разработанной программы.

Создадим сеть из четырех слоев. Для этого на рабочем столе откроем папку «Нейрон» в ней запустим фаил neuron.exe. Для того чтобы создать сеть из n слоев необходимо зайти во вкладку Сеть→Создать, и указать там количество слоев (с помощью нажатия кнопки «Добавить»), количество нейронов в каждом слое и выбрать функцию активации, например, гиперболический тангенс (для каждого слоя можно выбрать свою функцию) по варианту (см. рисунок 1.4).

 

 

Рисунок 1.4 – Окно модели нейронной сети

 

1.3.2 Выберем количество нейронов в заданных слоях по нужному варианту лабораторной работы. Например, на входе 7 нейронов, на выходе 4 нейрона. В промежуточных слоях необходимо указать количество нейронов по убыванию, в нулевом-7, в первом-6, во втором-5, в третьем-4 (см. рисунок 1.5).

 


Рисунок 1.5 – Окно указания количества нейронов в каждом слое

 

Затем нажмем кнопку «Создать»

 

Рисунок 1.6 – Окно созданной нейронной сети

1.3.3 Обучим нейронную сеть.  Сеть→Обучить.

Примечание: сначала необходимо создать входные и выходные файлы с несколькими образами по варианту (количество нейронов в образе)в блокноте (см. рисунок 1.7-1.9).

 

 

Рисунок 1.7 – Входной и выходной файл

 

Указать файлы входов и выходов нейронной сети и провести обучение.

 

 

Рисунок 1.8 – Окно входов и выходов нейронной сети

 

Посмотреть «Лог событий» (см. рисунок 1.10)

 

 

Рисунок 1.9 – Созданная и обученная модель нейронной сети

1.3.4 Создадим несколько образов. Необходимо создать несколько входных образов сети идентичных тем которые находятся в файле input.txt и один образ которого нет в этом файле (см. рисунок 1.11).

 

 

Рисунок 1.10 – Входные образы для нейронной сети

 

1.3.5 Зададим созданный в предыдущем пункте образ 1 на вход сети и распознаем его. Для этого необходимо войти во вкладку Образ→Загрузить и указать путь к созданному образу (см. рисунок 1.12).

 

 

Рисунок 1.11 – Окно модели с заданным образом на входе сети

 

Затем необходимо его распознать (см. рисунок 1.12).

 


Рисунок 1.12 – Окно процесса распознавания образов

То же самое проделать с другими образами и сделать выводы.

 

1.4 Контрольные вопросы

 

1.4.1 Какова архитектура нейронной сети прямого распространения?

1.4.2 В чем состоит принцип работы нейронной сети прямого распространения?

1.4.3 Нейроны каких слоев проводят основную работу по распознаванию образа?

1.4.4 Нейроны каких слоев выдают необходимую кодовую комбинацию?

1.4.5 Что необходимо сделать для корректной работы многослойной сети прямого распространения?

1.4.6 Какие методы обучения вы знаете?

1.4.7.В чем состоит алгоритм работы сети в режиме обучения в методе обратного распространения?

 

2 Лабораторная работа №2. Изучение нейронной сети типа многослойный персептрон

 

Цель работы: изучить принцип работы нейронной сети типа «многослойный персептрон», сравнить функционирование двух сетей с различными функциями активации.

 

2.1 Предварительная подготовка

 

2.1.1 Необходимо изучить и освоить теорию многослойного персептрона и материал по нейронным сетям.

2.1.2 Изучить особенности влияния функций активации отдельного нейрона на функционирование сети в целом.

 

2.2 Задание к работе.

 

2.2.1 Построить многослойный персептрон двух видов ( сети №1, №2), функции активации для каждой сети приведены в таблице 2.1. Для всех слоев сети №1 выбрать функцию активации №1, для всех слоев сети №2  функцию активации №2. Количество слоев нейронной сети и количество нейронов в слоях выбрать по номеру варианта для лабораторной работы № 1(вариант выбирается по списку в журнале, данные приведены в таблицах 1.1 -1.2).

2.2.2 Обучить нейронную сеть №1.

2.2.3 Создать несколько образов.

2.2.4 Задать образ на входе сети и распознать его.

2.2.5 Повторить эти действия для сети №2.

2.2.6 Проанализировать состояние полученных сетей и сравнить полученные результаты.

2.2.7 Сделать выводы.

 

Т а б л и ц а 2.1 – Функции активации для сетей №1 и №2

№вар\функц. активации

Сеть №1

Сеть №2

№вар\функц. активации

Сеть №1

Сеть №2

0

гиперболический тангенс

логистическая

5

пороговая

логистическая

1

гиперболический тангенс

пороговая

6

гиперболический тангенс

логистическая

2

логистическая

пороговая

7

логистическая

гиперболический тангенс

3

логистическая

гиперболический тангенс

8

пороговая

гиперболический тангенс

4

пороговая

гиперболический тангенс

9

логистическая

пороговая

 

2.3 Методические указания к лабораторной работе №2

 

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

- множества входных узлов, которые образуют входной слой;

- одного или нескольких скрытых слоев вычислительных нейронов;

- одного выходного слоя нейронов.

Многослойный персептрон представляет собой обобщение однослойного персептрона Розенблатта. Пример многослойного персептрона приведен на рисунке 2.1.

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

 

Рисунок 2.1 – Пример двухслойного персептрона

 

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

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

Свойство 1. Каждый нейрон сети имеет нелинейную функцию активации.

Важно подчеркнуть, что такая нелинейная функция должна быть гладкой (т.е. всюду дифференцируемой), в отличие от жесткой пороговой функции, используемой в персептроне Розенблатта (см. рисунок 2.2). Самой популярной формой функции, удовлетворяющей этому требованию, является сигмоидальная. Примером сигмоидальной функции может служить логистическая функция, задаваемая следующим выражением (2.1):

 

                                      ,                                         (2.1)

 

где α – параметр наклона сигмоидальной функции. Изменяя этот параметр, можно построить функции с различной крутизной.

Рисунок 2.2 – Сигмоидальная функция

 

Наличие нелинейности играет очень важную роль, так как в противном случае отображение «вход-выход» сети можно свести к обычному однослойному персептрону.

Свойство 2. Несколько скрытых слоев.

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

Свойство 3. Высокая связность .

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

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

2.3.1 Создадим сеть №1 многослойный персептрон из четырех слоев. Для всех слоев сети выберем функцию активации – логистическая рисунок 2.3-2.4.

 

Рисунок 2.3 - Окно указания количества нейронов в каждом слое

Рисунок 2.4 – Окно созданной нейронной сети

 

2.3.2 Обучим нейронную сеть.  Сеть→Обучить (см. рисунок 2.5).

 

Рисунок 2.5 – Модель обученной нейронной сети

 

2.3.3 Зададим созданный ранее образ  на вход сети и распознаем его. Для этого необходимо войти во вкладку Образ→Загрузить и указать путь к созданному образу или написать его в строчке «Образ на входе сети» (см. рисунок  2.6).

 

Рисунок 2.6 – Окно процесса распознавания образов

2.3.6 Посмотрим состояние сети. Для этого необходимо зайти во вкладку Сеть → Состояние (см. рисунок 2.7).

 

 

Рисунок 2.7 – Окно состояния нейронной сети

 

2.3.6 Повторить действия для сети №2.

2.3.7 Сравнить результаты вычислений и сделать выводы.

 

2.4 Контрольные вопросы

 

2.4.1 Что такое многослойный персептрон?

2.4.2 Как распространяется входной сигнал в многослойных сетях?

2.4.3 Из каких элементов состоит  многослойный персептрон?

2.4.4 Приведите архитектуру сети многослойный персептрон?

2.4.5 Какие функции активации вы знаете?

2.4.6 Перечислите основные свойства сети многослойный персептрон и поясните их?

 

3 Лабораторная работа №3. Изучение нейронной сети Хопфилда

 

Цель работы: необходимо изучить сеть Хопфилда, принцип ее работы, сравнить состояние различных сетей Хопфилда с и различными параметрами и  функциями активации.

 

3.1 Предварительная подготовка

 

3.1.1 Необходимо изучить и освоить теорию нейронных сетей Хопфилда.

3.1.2 Уяснить понятие формальной энергии (формального гамильтониана)

3.2 Задание №1

 

3.2.1 Создать сети Хопфилда без перезаписи, параметры сети приведены в таблице 3.1.

Функция активации для всех вариантов пороговая. Вариант выбирается по списку в журнале.

 

Т а б л и ц а 3.1 – Исходные данные к заданию №1

№ варианта

количество нейронов в сети

0

29

1

26

2

30

3

25

4

20

5

22

6

24

7

28

8

27

9

23

 

3.2.2 Обучить нейронную сеть №1.

3.2.3 Создать несколько образов.

3.2.4 Задать образ на входе сети и распознать его.

3.2.5 Посмотреть состояние сети.

 

3.3 Задание №2. Переобучить созданную сеть Хопфилда в задании 1

 

3.3.1 Создать сеть Хопфилда с перезаписью из задания №1.

3.3.2 Переобучить сеть изменив параметры по варианту таблица 3.2 и повторить пункты 3.3.1-3.3.5.

3.3.3 Сравнить результаты и сделать выводы.

 

Т а б л и ц а 3.2 – Исходные данные к заданию №2

№ варианта

количество нейронов

0

20

1

28

2

21

3

25

4

24

5

26

6

19

7

27

8

29

9

25

 

3.4 Методические указания к лабораторной работе №3

 

Американский физик Джон Хопфилд представил первую ассоциативную сеть (на основе автоассоциативной памяти) в 1982 г. в Национальной Академии Наук США. В честь Хопфилда и нового подхода к моделированию, эта сетевая парадигма упоминается как сеть Хопфилда.

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

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

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

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

Сеть Хопфилда состоит из N искусственных нейронов. Граница ёмкости памяти для сети (то есть количество образов, которое она может запомнить) составляет приблизительно 15% от числа нейронов в слое Хопфилда (N*0,15).  При этом запоминаемые образы не должны быть сильно коррелированны.

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

 

 

 

Рисунок 3.1 - Схема сети Хопфилда

 

Каждый нейрон системы может принимать одно из двух состояний выражение (3.1), что аналогично выходу нейрона с пороговой функцией активации:

 

                                               .                                                       (3.1)

 

Благодаря своей биполярной природе нейроны сети Хопфилда иногда называют спинами.

 

Взаимодействие спинов сети описывается выражением (3.2), «энергетической» функцией, которая уменьшается в процессе функционирования сети:

 

                                 ,                                                    (3.2)

 

где wij элемент матрицы взаимодействий W, которая состоит из весовых коэффициентов связей между нейронами. В эту матрицу в процессе обучения записывается М «образов» — N-мерных бинарных векторов: Sm = (sm1,sm2,...,smN).

 

В сети Хопфилда матрица связей является симметричной (wij = wji), а диагональные элементы матрицы полагаются равными нулю (wii = 0), что исключает эффект воздействия нейрона на самого себя и является необходимым для сети Хопфилда.

Рассмотрим общий алгоритм работы сети:

На стадии инициализации сети весовые коэффициенты синапсов (связей, по которым выходные сигналы одних нейронов поступают на входы других) устанавливаются следующим образом (3.3):

 

                                   ,                                                   (3.3)

 

где i и j – индексы, соответственно, предсинаптического (входного) и постсинаптического (выходного) нейронов; wij — i-й синаптический вес j-го нейрона;  – i-ый и j-ый элементы вектора k-ого образца.

На входы сети подаётся неизвестный сигнал. Фактически его ввод осуществляется непосредственной установкой значений (3.4):

 

                                  ,                                        (3.4)

 

где yj — аксон (т.е. выход) j-го нейрона. Поэтому обозначение на схеме сети входных синапсов в явном виде носит чисто условный характер. Ноль в скобке справа от yj означает нулевую итерацию в цикле работы сети.

Рассчитывается новое состояние нейронов и новые значения аксонов, выражение (3.5):

                                  ,                                                  (3.5)

 

где  j=0...n-1, p – номер (конкретный шаг) итерации,   y- новое состояние нейрона (3.6);

 

                               ,                                          (3.6)

где f – активационная функция в виде скачка, приведённая на рис. 3.2 б.

 

 

а) жёсткая пороговая (передаточная)функция сети Хопфилда;

б) активационная функция сети Хопфилда.

Рисунок 3.2

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

Существуют  3 режима работы сети Хопфилда:

1) режим фильтрации;

2) синхронный режим;

3) асинхронный режим.

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

 

Это же можно описать так называемым локальным полем ai действующим на нейрон xi со стороны всех остальных нейронов сети, выражение (3.7):

 

                                          .                                           (3.7)

 

После расчёта локального поля нейрона ai(t) это значение используется для расчёта значения выхода через функцию активации, которая в данном случае является пороговой (с нулевым порогом). Соответственно, значение выхода xi(t) нейрона і в текущий момент времени t рассчитывается по формуле (3.8):

 

                              ,                                                (3.8)

 

где - значения выходов нейрона j в предыдущий момент времени.

 

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

 

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

 

Рассмотрим коротко работу сети в асинхронном режиме работы сети. Если моделировать работу сети как последовательный алгоритм, то в данном режиме работы состояния нейронов в следующий момент времени меняются последовательно: вычисляется локальное поле для первого нейрона в момент t, определяется его реакция, и нейрон устанавливается в новое состояние (которое соответствует его выходу в момент t+1), потом вычисляется локальное поле для второго нейрона с учётом нового состояния первого, меняется состояние второго нейрона, и так далее - состояние каждого следующего нейрона вычисляется с учетом всех изменений состояний рассмотренных ранее нейронов. По сути при последовательной реализации сети Хопфилда явно не видно в чём заключается асинхронность, но это видно если сеть Хопфилда реализовать с параллельными вычислениями. В этом случае асинхронный режим сети Хопфилда упрощён, и носит частный случай по сравнению с общим видом асинхронных сетей, где время передачи τij для каждой связи между элементами ui и uj свое, но постоянное. Чтобы рассмотреть работу сети при параллельной реализации, необходимо ввести понятие такта - как минимальное время за которое происходит передача сигнала по связи, т.е. при τij = 1. Тогда за промежуток времени между t и (t+1) происходит определённое количество тактов N. И именно в пределах времени из N тактов происходит асинхронность протекания сигналов и выполнения расчётов. То есть, например, когда нужно рассчитать состояние нейрона №3 необходимо рассчитать состояния нейрона №1 и состояния нейрона №2 и умножить это на соответствующие веса. Но оказывается, для того чтобы рассчитать состояние нейрона №2 нам нужно знать обновленное состояние нейрона №1 и старое состояние нейрона №3, умножить их на соответствующие веса. Понятно, что физически невозможно рассчитать состояние нейрона №1 и состояние нейрона №2 за одно и то же время, т.к. состояние нейрона №2 зависит от состояния нейрона №1. Поэтому связь между нейроном №1 и нейроном №3 имеете время передачи τij = 2, и достигает нейрона №3 за два такта. Именное такое разное время передачи τij и позволяет говорить о сети Хопфилда как о сети с асинхронным режимом.

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

 

3.4.1 Создадим сеть Хопфилда с параметрами: функция активации –пороговая, количество нейронов в сети -6 (см. рисунок 3.3-3.4).

 

 

Рисунок 3.3 – Параметры нейронной сети Хопфилда

 

 

Рисунок 3.4 – Окно созданной нейронной сети Хопфилда

3.4.2 Обучим нейронную сеть (см. рисунок 3.5).

 

 

 

Рисунок 3.5 – Окно модели обученной сети

 

3.4.3 Создадим несколько образов и зададим образ на входе сети, затем распознаем его.

Создадим несколько образов на входе сети или просто зададим их вручную (см. рисунок 3.6).

 

Рисунок 3.6 – Окно модели с заданным образом на входе сети

 

Распознаем созданные образы (см. рисунок 3.7).

 

Рисунок 3.7 – Окно модели с распознанным образом

3.4.4 Посмотреть состояние сети (см. рисунок 3.8).

 

Рисунок 3.8 – Состояние нейронной сети

3.4.5 Задание №2 делается аналогично, только необходимо выбрать тип обучения с перезаписью.

 

3.6 Контрольные вопросы

 

3.5.1 Что такое сеть Хопфилда?

3.5.2 Поясните алгоритм работы сети Хопфилда?

3.5.3 Что такое автоассоциативная память?

3.5.4 Нарисуйте схему сети Хопфилда?

3.5.5 Сколько режимов работы сети Хопфилда вы знаете и какие?

3.5.6 Поясните особенности различных режимов работы сети Хопфилда.

 

4 Лабораторная работа №4. Нейронные свойства модельных макромолекул ( приложение Structures Modeling tool)

 

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

 

4.1 Предварительная подготовка

 

4.1.1 Изучить особенности поведения полиэлектролитных макромолекул.

4.1.2 Изучит теорию нейросетевых свойств макромолекул.

 

4.2 Задание №1

 

4.2.1 Создать структуру нейронной сети, количество нейронов для каждого варианта заданы в таблице 4.1.

4.2.2 Сформировать нейронную сеть на основе созданной структуры.

4.2.3 Запустить тест первого типа.

4.2.4 Проанализировать результат работы теста.

4.2.5 Проделать пункты 4.3.1-4.3.4 для всех типов потенциалов.

 

Т а б л и ц а 4.1 – Количество нейронов в сети

Последняя цифра зач. кн.

0

1

2

3

4

5

6

7

8

9

n

8

10

12

14

15

16

17

18

13

9

А

0.2

0.3

0.4

0.5

0.6

0.7

0.1

0.8

0.9

0.4

Lamda

0.2

0.3

0.6

0.8

0.9

0.2

0.4

0.5

0.3

0.4

 

4.3 Задание №2

 

4.3.1 Создать два типа структур нейронной сети, количество нейронов для каждой структуры и типы потенциалов приведены в таблице 4.2.

4.3.2 Повторить пункты 4.3.2 – 4.3.4 для данной сети.

 

Т а б л и ц а 4.2 – Варианты заданий к задаче №2

посл. цифра зач. кН.

кол-во эл-ов структур 1/2 типов

тип потенциала для элементов структуры 1 типа

тип потенциала для элементов структуры 2 типа

тип потенциала между элементами структур двух типлов

0

8/9

Кулоновский потенциал

диполь-дипольного взаимодействия

Потенциал Дебая-Хюккеля

1

9/10

диполь-дипольного взаимодействия

Потенциал Дебая-Хюккеля

Кулоновский потенциал

2

7/10

Потенциал Дебая-Хюккеля

диполь-дипольного взаимодействия

Потенциал Дебая-Хюккеля

3

8/12

Потенциал Дебая-Хюккеля

Кулоновский потенциал

диполь-дипольного взаимодействия

4

6/10

диполь-дипольного взаимодействия

Кулоновский потенциал

Кулоновский потенциал

5

7/9

Кулоновский потенциал

диполь-дипольного взаимодействия

диполь-дипольного взаимодействия

6

12/6

Потенциал Дебая-Хюккеля

Кулоновский потенциал

Потенциал Дебая-Хюккеля

7

10/8

диполь-дипольного взаимодействия

диполь-дипольного взаимодействия

Кулоновский потенциал

8

9/6

Кулоновский потенциал

Кулоновский потенциал

диполь-дипольного взаимодействия

9

8/8

диполь-дипольного взаимодействия

Кулоновский потенциал

Потенциал Дебая-Хюккеля

 

4.4 Методические указания к лабораторной работе №4

 

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

Редактор структур позволяет создавать структуры 2-х типов, которые задаются переключателем Edit structure. Также возможно задать цвет отображения элементов структур (кнопка Color). Для каждого типа структуры возможно указание типа потенциала, создаваемого элементами структур.

Доступны следующие функции потенциала:

 

Т а б л и ц а 4.3 – Функции потенциалов

Кулоновский потенциал (Coulomb potential)

Потенциал диполь-дипольного взаимодействия (dipole-dipole potential)

Потенциал Дебая-Хюккеля (Debye-Hückel potential)

 

Коэффициенты A и λ для каждого типа потенциала задаются в соответствующих полях ввода.

В результате работы редактора структур формируется матрица размерностью (nxn), где n – количество элементов структуры, отмеченных в редакторе. Причем следует отметить, что нумерация элементов структур обратная порядку отметки элементов структур в редакторе. Т.е. если вы в редакторе отметили несколько элементов, то в матрице последнему отмеченному элементу будет соответствовать первая строка и первый столбец и наоборот. Матрица строится согласно указанному потенциалу для каждого типа структуры, переменным  и  которого соответствуют координаты и i-го и j-го элемента.

Редактор формул позволят масштабировать для удобства область редактирования (Zoom In, Zoom out), сохранять матрицу в файл.

Главное окно приложения Structures Modeling tool содержит основные результаты работы моделирования и меню для вызова дополнительных инструментов.

Рассмотрим работу элементов основного меню:

Меню File:

New structure – создание новой структуры. Если структура существовала в памяти, то она удаляется и создается пустая и открывается редактор структур.

Edit structure – открыть редактор структур.

Save structure – сохранить матрицу в файл.

Exit – закрыть приложение.

Меню Network:

Create net from structure – создает нейронную сеть Хопфилда, присваивая ее весовым коэффициентам элементы матрицы, сформированной в редакторе структур.

Delete net – удалить из памяти созданную нейронную сеть.

Save net to file – сохранить нейронную сеть в файл. Нейронная сеть содержит информацию о созданной структуре. Сохраненную сеть можно в дальнейшем использовать для экспериментов.

Open net – загрузить сеть из файла. В памяти создается нейронная сеть, конфигурация которой была записана в файл. Загруженную сеть можно использовать для запуска тестов.

Элемент Run test содержит два подпункта:

Run ordinary test – запуск теста загруженной в память сети на распознавание всех возможных кодовых комбинаций для имеющегося числа входов сети (2n), где  n –число входов сети. Данный тест хранит результаты распределения в памяти, поэтому обладает большим быстродействием, но применим для небольшого числа нейронов (<20).

Run fast test – данный тест выполняет аналогичные действия, но данные распределения хранит в БД (параметры подключения которой можно задать) поэтому число нейронов для этого теста может быть значительно, но время выполнения теста может занять продолжительное время.

Меню Tools:

Create inputs – создает файл со входными кодовыми комбинациями.

Save distribution – сохраняет диаграмму распределения в указанном формате.

Update diagram – обновляет масштаб диаграммы.

– отображает окно со статистикой распределения (номер кодовой комбинации, ее частота Show distribution info, двоичный код кодовой комбинации).

Settings – отображает окно редактирования настроек работы программы. Позволяет задать параметры подключения к БД, параметры записи тестовых данных в файлы, задавать параметры отображения графического представления результатов теста (см. рисунок 4.1).

 

 

Рисунок 4.1 – Окно настроек приложения

 

Меню Help:

About – Информация о программе.

About QT – информация о платформе разработки.

 

4.4.1 Создадим структуру нейронной сети из 8 нейронов.

Запустить приложение structures.exe, (см. рисунок 4.2).

 

 

Рисунок 4.2 – Главное окно приложения Structures modeling tool

Открыть редактор структур. Меню Файл – New structure (либо сочетание клавиш Ctrl+N). Появится окно редактора.

Указать значения параметров A и Lamda.

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

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

 


Рисунок 4.3 – Окно Edit structures

 

После окончания редактирования структуры нажать кнопку ОК. Окно редактора структур закроется, появится главное окно приложения.

4.4.2 Сформируем нейронную сеть на основе созданной структуры.

Для этого необходимо выбрать в меню Network элемент Create net from structure. На данном этапе приложение готово к запуску тестов распознавания образов(см. рисунок 4.4).


Рисунок 4.4 – Окно расчетов сформированной нейронной сети

4.4.3 Запустить тест.

Для этого необходимо выбрать в меню Network элемент Run test (см. рисунок 4.5).

 

Рисунок 4.5 – Окно результата тестирования сети

 

4.4.4 Анализ результатов.

Рассмотрим окно отображения статистической информации. Для этого необходимо выбрать в меню Tools элемент Show distribution info (см. рисунок 4.6).

 

 

Рисунок 4.6 – Окно отображения статистической информации

4.4.5 То же самое проделать с другими потенциалами для той же структуры сети с теми же параметрами. Сравнить и сделать выводы.

 

4.5 Методические указания к выполнению задания 2

 

4.5.1 Выбрать тип потенциала для элементов структур первого типа, второго типа и тип потенциала между элементами структур первого и второго типа

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

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

Число элементов структуры 1-го типа возьмем равным 8 с типом потенциала диполь-дипольного взаимодействия. Число элементов структуры 2-го типа возьмем равным 8 с типом потенциала Дебая-Хюккеля. Тип потенциала между элементами структур первого и второго типа -кулоновский тип потенциала, (см. рисунок 4.7).

 

 

Рисунок 4.7 – Окно создания структур первого и второго типа

 

4.5.2 Сформируем нейронную сеть на основе созданной структуры.

Для этого необходимо выбрать в меню Network элемент Create net from structure. На данном этапе приложение готово к запуску тестов распознавания образов. Запустим тест(см. рисунок 4.8).

 

Рисунок 4.8 – Окно результата тестирования сети

 

4.6 Контрольные вопросы

 

4.6.1 На основе каких структур были сформированы нейронные сети в данной работе.

4.6.2 Какие типы потенциалов вы использовали в данной работе

4.6.3 Какова типа сети используется (создается) в данной работе

4.6.4 Сколько видов тестов можно провести и их отличие

4.6.5 Что показывают диаграмма полученные после запуска теста.

 

Список литературы 

1. Сергеев Г.Б. Нанохимия. Учебное пособие,- М.: изд.-во КДУ, 2006,- 336 с.

2. Андриевский Р.А., Рагуля А.В. Наноструктурные материалы. Учебное пособие, - М.: «Академия», 2005, -192 с.

3. Кобояси Н. Введение в нанотехнологию. - М.: БИНОМ. 2005, -134 с.

4. Головин Ю.И. Введение в нанотехнологию, - М.: Машиностроение. 2007, -496 с.

5. Хайкин, Саймон. Неронные сети: полный курс, 2-е издание, Пер. с англ, – М.: Издательский дом «Вильямс», 2006. – 1104 с.

 

Содержание 

Введение                                                                                                               3

1 Лабораторная работа №1                                                                                      4

2 Лабораторная работа №2                                                                                    14  

3 Лабораторная работа №3                                                                                    19

4 Лабораторная работа №4                                                                                    28

Список литературы                                                                                             37