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

XVIII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

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

Быков В.О. 1Абашин Н.А. 1
1МОУ СШ №77
Коломиец Т.В. 1Пелих В.И. 1
1МОУ СШ №77
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

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

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

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

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

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

Цель работы:

Знакомство с нейронными сетями, примеры их построения и применения. Анализ функции нейросетей и их потенциальных возможностей. Учитывая сложность понятий и скромность наших вычислительных возможностей, мы пытаемся построить примеры нейросетей для простейших задач.

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

Познакомиться с литературой по данной теме

Поинтересоваться историей развития понятия нейросеть

Изучить начальные принципы функционирования искусственных нейронных сетей;

Освоить определения главных понятий: «нейронные сети», «интеллект», «синапс», «сигнал», «искусственный нейрон», «процессор», «нейрокомпьютер» и т. д.;

Описать математический аппарат тех нейронных сетей, которые нам удалось построить;

создать простую нейросеть на доступном нам языке программирования;

наметить задачи для дальнейшего исследования.

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

Глава I. Как работают нейронные сети?

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

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

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

Схематично нейрон выглядит так:

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

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

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

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

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

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

Попробуем сконструировать несколько простейших примеров иллюстрирующих работу нейросетей.

Глава II. Примеры нейросетей.

Поставим задачу: обучить нейросеть (читай - компьютер) “распознавать”
среди целых положительных чисел чётные.

На входе нашей сети задаётся число zпроизвольной разрядности. Разумеется, эта задача для человеческого мозга является элементарной – достаточно взглянуть на последнюю цифру в записи числа и поискать её среди набора 0,2,4,6,8, чтобы получить ответ. Попробуем заставить компьютер “взглянуть на последнюю цифру”.

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

 

Да: n=i ,

 

I=0

 

Z

 

Нет: i=i+1

Нейросеть узнала n - разрядность числа z. Затем, определяем первую цифру числа z. То есть,,с помощью пары циклов находим наименьшее p, удовлетворяющее неравенству .

 

Нет: n=n-1

 

Да:Z=Z-p

 

P=1=p

Z=0

ppp

 

Нет:p=p+1

Теперь мы можем отбросить в числе z первую цифру: . Если при этом z=0, то pесть последняя цифра исходного числа z. Сравнивая эту цифру с набором 0,2,4,6,8 определяем чётность. Если цифра не последняя, то процедура отбрасывания первой цифры повторяется. Эта нейросеть реализована в программе Чётность.

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

.

Р

F>0.6

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

 

11

 

z

 

F<0.6

 

0

Единица на выходе отвечает чётному числу, а ноль – нечетному. Эта нейросеть реализована в Приложении программой “ФункАктив”.

Рассмотрим пример нейросети состоящей из двух нейронов А и В, имеющих два входа и два выхода. Входные импульсы суммируются соответственно так: , , после суммирования передают результат на выход Z1, а часть информации на выход Z2 в долях α и β. Вот её схема:

 

aX1+сX2
А

Z1=(a1+b)X1+(c+g)X2

X1

 

bX1+gX2В

 

X2

Z2=α(aX1+cX2)+β(bX1+gX2)

Этой схемой можно моделировать множество явлений в реальной жизни. Поясним наши рассуждения на двух примерах.

Два армейских подразделения X1 и X2 передают сведения в штаб сухопутных войск А и в морской – В. Там информация обрабатывается и поступает командующему Z1. В штабах А и В информация суммируется с различными весами:

, .

Командующий, таким образом, получает сведения в объёме:

При этом, часть информации в долях α и β из обоих штабов

попадает в прессу или в штаб противника Z2. Вопрос: где находится утечка информации (где шпионы) и какая у них интенсивность (α и β) передачи этой информации)? Задача контрразведки по наблюдениям определить параметры α и β.

Вторая модель. Человек переходит дорогу и спотыкается о возвышающийся люк канализации. Информация об этом поступает прохожему в мозг тактильно X1 и по зрительному каналу X2 в различные отделы мозга A и B. Там она обрабатывается и вызывает реакцию пешехода, осмысленную Z1 и импульсивную Z2. Последняя может быть вредной если идущий неожиданно окажется на проезжей части. Вопрос: откуда и с какой интенсивностью (α и β) информация поступает к импульсивным рецепторам?

Будем наблюдать за нашей математической моделью, измеряя входную информацию X1, X2 и выходную информацию, поступающую в Z1 и Z2. Схема нейросети содержит 6 неизвестных параметра a, b, c, g, α, β.

Заметим, что любые измерения содержат случайные ошибки, поэтому уравнения нейросети следует записать приближённо:

(1)

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

:

x1, 47, 19, 26, 49, 37, 10, 10, 34, 52, 9, 41, 4, 13, 10, 9, 43, 55, 41, 18, 52

x2, 14, 42, 5, 5, 39, 28, 29, 10, 4, 23, 41, 46, 21, 17, 14, 27, 10, 28, 45, 42

z1, 90.6, 76.6, 47.1, 83.9, 102.1, 46.8, 47.9, 65.4, 87.6, 39.7, 110.7, 57.0, 43.9, 34.7, 29.8, 98.5, 99.0, 96.4, 78.3, 129.4

z2, 31.08, 12.88, 17.43, 32.38, 24.58, 7.03, 7.03, 22.63, 34.33, 6.38, 27.18, 3.13, 8.98, 7.03, 6.38, 28.48, 36.28, 27.18, 12.23, 34.33

Подставляя в (1) и (2) известные величины x1, x2, z1, z2, мы получим 40 уравнений относительно 6 неизвестных. Введём обозначения:

Используя их, представим систему (1), (2) в виде сорока линейных уравнений относительно новых неизвестных m, n, u, v:

Здесь символы x1, x2, z1, z2 представляют собой двадцатимерные векторы из приведённой выше таблицы. Такие системы уравнений называются переопределёнными, и они могут быть противоречивыми. Для работы с такими уравнениями вводят понятие псевдорешения mср , nср , uср ,vср. Ищутся такие m, n, u, v, чтобы суммарные среднеквадратичные ошибки

были минимальными. Эта задача решена давно, написаны надёжные компьютерные программы, например, “leastsqrs” в пакете Maple. Воспользуемся ею и вычислим псевдорешения mиn, uиv.

Наблюдения, приведённые выше дали такой результат (программа “2 Штаба1”):

После этого, перейдём к определению параметров a, b, c, g, α, β из системы уравнений:

Ясно, что четырёх уравнений недостаточно для определения шести неизвестных. Другими словами, наша нейросеть не может быть обучена на таком количестве экспериментальных данных. Поставим ещё один эксперимент, уменьшив, например, вдвое интенсивность сигнала от в штаб А и от в штаб B. Уравнения, аналогичные (1), (2), теперь окажутся такими:

Таблица этих наблюдений имеет вид:

x1, 47, 19, 26, 49, 37, 10, 10, 34, 52, 9, 41, 4, 13, 10, 9, 43, 55, 41, 18, 52

x2, 14, 42, 5, 5, 39, 28, 29, 10, 4, 23, 41, 46, 21, 17, 14, 27, 10, 28, 45, 42

z12, 70.65, 59.45, 36.75, 65.50, 79.40, 36.30, 37.15, 51.00, 68.40, 30.80, 86.10, 44.10, 34.10, 26.95, 23.15, 76.70, 77.25, 75.05, 60.75, 100.70

z22, 24.460, 28.240, 12.145, 20.655, 33.385, 17.840, 18.345, 17.630, 21.260, 14.945, 35.875, 24.710, 15.415, 12.285, 10.400, 29.545, 25.400, 29.310, 29.385, 40.450

Повторяя предыдущие рассуждения и вводя новые обозначения:

Результат новых наблюдений оказался следующим (программа в Приложении“2 Штаб 1”):

Получаем новые уравнения:

Таким образом, мы приходим к системе уравнений

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

Исследуем разрешимость этой системы, т.е. решим её в общем виде.
Система (7) распадается на две линейных системы 1,5 и 2,6 относительно a, bиc. g, которые имеют решения .

После этого, в уравнениях 3,4,7 и 8 системы (7) исключаем переменные a, bиc, g:

(8)

Переопределённую линейную систему (8) решаем численно методом наименьших квадратов (Приложение “АльфаБета”):

.

Таким образом, делаем вывод, что 89.7% вредной информации исходит из штаба В.

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

Построим сеть, проверяющую заданное число на простоту. В памяти нейросети содержится набор первых простых чисел, например, 1,2,3,5,7. Получив на входе для проверки на простоту число Z, сеть сравнивает его с последним простым из имеющихся в памяти. Если Z>7, сеть начинает самообучаться, т.е. пополнять банк простых чисел до тех пор, пока число Z не окажется в пределах нового банка памяти. После этого нейросеть ищет совпадение числа Z с каким-либо числом из банка. Если находится совпадение, сеть сообщает, что заданное число простое. В противном случае число объявляется составным. Схема такой нейросети может быть представлена так:

 

Z>mend

да
нет

Z=mk

да

простое

 

Z

 

нет

 

составн

 

GGПополнение
банка простых
чисел

 

Простые
числа
<=mend

Компьютерная реализация этой сети дана в программе “ПровПрост”

Заключение

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

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

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

: https://www.calltouch.ru/glossary/iskusstvennyy-intellekt/ , https://mining-cryptocurrency.ru/nejronnye-seti/#:~:text=Нейронная%20сеть%20–%20одно%20из,–%20классификация%2C%20предсказание%20и%20распознавание

Приложение

Ч

> restart:

> z:=56720:

> w:=1/(2-(-1)^z):

> if w>0.6 then W:=`чётное` else W:=`нечётное` end if:

> print(W);

 

чётное

 

> z:=5672037:

> w:=1/(2-(-1)^z):

> if w>0.6 then W:=`чётное` else W:=`нечётное` end if:

> print(W);

 

нечётное

 

 

ётнность.

 

ФункАктив.

 

> restart:

> z:=56720:

> w:=1/(2-(-1)^z):

> if w>0.6 then W:=`чётное` else W:=`нечётное` end if:

> print(W);

чётное

> z:=5672037:

> w:=1/(2-(-1)^z):

> if w>0.6 then W:=`чётное` else W:=`нечётное` end if:

> print(W);

нечётное

2 Штаб 1.

 

> array(1..20):

> A:=linalg[matrix](20,2):

> for i from 2 to 21 do

> A[i-1,1]:=W[1,i]: A[i-1,2]:=W[2,i]: b1[i-1]:=W[3,i]:

> b2[i-1]:=W[4,i]:b3[i-1]:=W[5,i]:b4[i-1]:=W[6,i]:

> end do:

> a1:=leastsqrs(A, b1);

> a2:=leastsqrs(A, b2);

> a3:=leastsqrs(A, b3);

> a4:=leastsqrs(A, b4);

a1 := [1.800000002, 1.199999998]

a2 := [1.060000001, 0.6399999986]

a3 := [1.800000002, 0.949999998]

a4 := [0.6099999998, 0.6400000003]

АльфаБета.

 

> restart:

> with(linalg):

> Q:=matrix(4,2):

> b:= array(1..4):

> m:=1.6: n:=1.1: u:=0.65: v:=0.53:

> m1:=1.25: n1:=0.85: u1:=0.37: v1:=0.505:

> Q[1,1]:=(2*m1-m): Q[1,2]:=(2*m-2*m1): b[1]:=u:

> Q[2,1]:=(2*n-2*n1): Q[2,2]:=(2*n1-n): b[2]:=v:

> Q[3,1]:=(2*m1-m): Q[3,2]:=(m-m1): b[3]:=u1:

> Q[4,1]:=(n-n1): Q[4,2]:=(2*n1-n): b[4]:=v1:

> ab:=leastsqrs(Q, b);

ab := [0.1000000005, 0.7999999993]

ПровПрост.

Задаём число Z и проверяем его на простоту.

# Запись элементарного банка простых чисел.

> restart:

> G:=linalg[vector](6,[5., 1., 2., 3., 5., 7.]);

> writedata(`Прост.txt`,G):

G := [5., 1., 2., 3., 5., 7.]

# Проверка числа Z.

> restart:

> Z:=43:

> m:=5:

> for l from 1 while m>1 do

> L:=readdata(`Прост.txt`):

> n:=trunc(L[1]):

> if Z<=L[n] then

> for s from 1 to n do

> if Z=L[s] then OTV:=`простое`: s:=n: else

> OTV:=`составное`:end if: m:=0:

> end do:

> else

> b:=trunc(L[n+1]+2): m:=1: p:=0:

> A:=linalg[vector](n+2,0):

> for k from 1 while m<7 do

> for j from 1 by 1 to n+1 do

> for i from 3 to n+1 do

> b1:=b/L[i]: b2:=floor(b1):

> if b1-b2=0. then p:=p+1 end if:

> end do:

> end do:> if p = 0 then A[n+2]:=b: m:=17 else b:=b+2 end if:

> p:=0:

> end do:

> A[1]:=trunc(n+1):

> for i from 2 to n+1 do

> A[i]:=trunc(L[i]):

> end do:

> writedata(`Прост.txt`,A):

> end if:

> end do:

> print(OTV); evalm(A):

>

простое

# Получен ответ и представлен обновлённый банк простых чисел.

# Просмотр банка простых чисел, имеющихся в памяти компьютера.

> restart:

> A:=readdata(`Прост.txt`):

> evalm(A);

>

[16., 1., 2., 3., 5., 7., 11., 13., 17., 19., 23., 29., 31., 37.,

41., 43., 47.]

Просмотров работы: 145