Українська   English
ДонНТУ   Портал магистров

Реферат по теме выпускной работы

Содержание

Введение

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

1 Нейрон и нейронная сеть

1.1 Биологический нейрон

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

Схематически биологический нейрон выглядит, так как представлено на рис.1.1.

Биологический нейрон

Рисунок 1.1 – Схематический вид биологического нейрона.

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

1.2 Математическая модель нейрона

Математическая модель нейрона представлена на рис.1.2.

Математическая модель биологического нейрона

Рис.1.2 – Математическая модель нейрона

В математической модели входами являются x0-xn, которых может быть любое конечное количество. В качестве синаптической связи выступают веса w0-wn, которые определяют на сколько тот или иной вход информативен для данного нейрона. В качестве тела нейрона представлен сумматор, который складывает все поступающие на него входы, а также учитывает отклонение b. Сигнал с выхода сумматора передается на некоторую функцию, которая называется функцией активации и определяет будет ли в этот момент времени выход y находится в возбужденном состоянии.

Математическая модель нейрона описывается следующим выражением:

Формула 1

Параметры w0-wn и b являются настраиваемыми, которые изменяются в процессе обучения нейронной сети. Именно в подборе оптимальных значений данных параметров и заключается процесс обучения нейронной сети. F(z) – это функция активации (передаточная функция) нейрона, которая на основании входных сигналов определяет активен ли выход нейрона в данный момент.

Простейшей функцией активации является пороговая функция, которая выглядит так, как показано на рис. 1.3.

Пороговая функция активации нейрона

Рис. 1.3 – Пороговая функция активации нейрона

Также на практике часто применяются:

  1. линейная функция активации:
    Линейная функция активации нейрона

    Рис 1.4 – Линейная функция активации нейрона

  2. сигмоидальная функция активации:
    Сигмоидальная функция активации нейрона

    Рис 1.5 – Сигмоидальная функция активации нейрона

  3. гиперболический тангенс:
    Функция активации – гиперболический тангенс

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

1.3 Основные типы архитектур нейронных сетей

При проектировании НС важным моментом является выбор ее архитектуры. Выбор архитектуры влияет на обучаемость сети, выбирая различные архитектуры НС может как обучаться с различной скоростью, так и с различной точностью. Таким образом при выборе неверной архитектуры сети сеть не сможет правильно обучиться поставленной задаче.

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

Основными типами архитектур НС являются:

  1. Сети прямого распространения. В таких НС сигнал идет от входа только в сторону выхода НС. Такие нейронные сети могут иметь как один слой нейронов, так и сразу несколько слоев. Пример однослойной нейронной сети прямого распространения представлен на рис. 1.7.
    Однослойная нейронная сеть прямого распространения.

    Рис. 1.7 – Однослойная нейронная сеть прямого распространения.

    Пример многослойной нейронной сети прямого распространения представлен на рис 1.8.

    Многослойная нейронная сеть прямого распространения.

    Рис. 1.8 – Многослойная нейронная сеть прямого распространения.

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

    Рис 1.9 – Нейронная сеть с обратными связями

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

    Сеть Хопфилда

    Рис. 1.10 – Сеть Хопфилда

  3. Регулярные или конкурирующие сети. В таких НС нейроны располагаются в основных узлах некоторой регуляризационной решетки. Каждый нейрон такой НС определенным образом связан со своими соседями. Соседство нейронов определяется типом используемой регуляризационной решетки. Пример конкурирующей нейронной сети представлен на рис. 1.11.
    Конкурирующая нейронная сеть Кохонена

    Рис 1.11 – Конкурирующая нейронная сеть Кохонена

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

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

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

1.4 Основные представления о нейронных сетях

При помощи одного нейрона можно классифицировать объекты линейно разделимые на классифицирующей поверхности. Пример такой поверхности представлен на рис. 1.12.

Два линейно разделяемых класса

Рис. 1.12 – Два линейно разделяемых класса

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

Нелинейная зависимость

Рис. 1.13 – Нелинейная зависимость

Для построения нейронной сети необходимо определиться с:

  1. архитектурой НС;
  2. функцией потерь;
  3. методом оптимизации;
  4. метриками.

Функция потерь помогает определить точность работы нейронной сети. Самой простой функцией потерь является среднеквадратичная ошибка, которая вычисляется по формуле:

Cреднеквадратичная ошибка

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

  1. Кросс-энтропия, которая вычисляется по формуле:
  2. Кросс-энтропия
  3. Экспоненциальная функция потерь:
  4. Экспоненциальная функция потерь

Под каждую конкретную задачу необходимо разумно выбирать свою функцию потерь.

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

Графическое представление метода градиентного спуска

Рис 1.14 – Графическое представление метода градиентного спуска

X0 является результатом работы первой итерации НС, а X* - локальным минимумом функции потерь, к которому необходимо стремиться. На скорость сходимости влияет шаг градиентного спуска, который выбирается для каждой НС индивидуально, однако если подобрать неправильный шаг, то результаты работы НС могут не попасть в точку минимума функции потерь.

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

1.5 Сверточные нейронные сети

Для работы с такими данными как изображения на практике применяются сверточные нейронные сети. Такие сети с большой точностью решили задачу распознавания рукописных цифр, которые содержатся в библиотеке MNIST. Также появилось множество архитектур сверточных нейронных сетей, которые смогли решить задачу ImageNet Challenge, который заключается в том, чтоб обучить НС распознавать 1000 различных классов на датасете размером в 150 000 примеров. Суть сверточных НС заключается в том, чтоб при помощи свертки (фильтрации) отсеивать не несущую никакую полезную для нейронной сети информацию, а также для того, чтоб распознавать различные классы вне зависимости от их расположения и размера на изображении.

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

Первой сверточной нейронной сетью совершившей прорыв в распознавании стала сеть LeNet, представленная в 1998 году и архитектура данной сети представлена на рис. 1.15.

Архитектура сверточной нейронной сети LeNet

Рис. 1.15 – Архитектура сверточной нейронной сети LeNet

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

  1. AlexNet (2012 год), представлена на рис. 1.16;
  2. Архитектура сверточной нейронной сети AlexNet

    Рис. 1.16 – Архитектура сверточной нейронной сети AlexNet

  3. VGG (2014 год), представлена на рис. 1.17;
  4. Архитектура сверточной нейронной сети VGG

    Рис. 1.17 – Архитектура сверточной нейронной сети VGG

  5. GoogLeNet (2015 год), является модифицированным вариантом архитектуры LeNet от корпорации Google, представлена на рис. 1.18.
  6. Архитектура сверточной нейронной сети GoogLeNet

    Рис. 1.18 – Архитектура сверточной нейронной сети GoogLeNet

  7. ResNet, представлена на рис. 1.19.
  8. Архитектура сверточной нейронной сети ResNet

    Рис. 1.19 – Архитектура сверточной нейронной сети ResNet

2. Нейронная сеть для распознавания цвета в пакете прикладных программ MATLAB

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


from PIL import Image
for i in range(240,256):
    for j in range(230,256):
        for k in range(0,40):
            img = Image.new("RGB", (140,140), (i,j,k))
            img.save("D:\\colors\\yellow\\" + str(i) + "_" + str(j) + "_" + str(k) + ".jpg","JPEG")

Скрипт написан на языке программирования Python и выполняет следующие действия: для определенного диапазона цветов RGB-формате генерирует рабочую плоскость размером 140 на 140 пикселей и заполняет ее пикселями текущего цвета, далее результат сохраняется в определенной папке с именем, соответствующем этому цвету. Далее при помощи вложенных циклов цвет меняется и действия повторяются. Это сделано для того, чтоб учитывать различные оттенки цветов. Данный скрипт запускается для 6 отдельных диапазонов, которые соответствуют различным цветам: белый, желтый, оранжевый, красный, зеленый, синий. В общей сложности было получено 76 021 обучающий пример, чего вполне достаточно для обучения НС.

Результат генерации обучающей выборки

Рис. 2.1 – Результат генерации обучающей выборки

Далее в пакете прикладных программ MATLAB создается m-файл, при помощи которого и будет происходить обучение НС.

clear all;
clc;
%Выборка
path = 'D:\diploma\colors';
imds =imageDatastore(path,"IncludeSubfolders",true,"LabelSource","foldernames");
train = imds.splitEachLabel(1000,'randomize');
validation = imds.splitEachLabel(500,'randomize');

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

Для проектирования и использования НС в пакете прикладных программ необходим пакет Deep Learning Toolbox, который позволяет в графическом редакторе спроектировать нейронную сеть, после чего по созданной архитектуре можно создать код MATLAB, который и используется для обучения НС.

Далее создается НС с архитектурой, представленной на рис. 2.2.

Архитектура созданной НС

Рис 2.2 – Архитектура созданной НС

Далее задаются параметры самой нейронной сети и происходит обучение, что и было сделано при помощи следующего кода:

options = trainingOptions('sgdm','InitialLearnRate',0.001,'ValidationData',validation,'ValidationFrequency',20,'MaxEpochs',3,'MiniBatchSize',100,'Shuffle','every-epoch','Plots','training-progress');
net = trainNetwork(train,lgraph,options)

Процесс обучения нейронной сети будет выводиться на графиках, а также каждые 50 итераций результаты будет выводиться в командную строку. Результаты обучения НС представлены на рис. 2.3 и рис. 2.4.

График процесса обучения НС.

Рис. 2.3 – График процесса обучения НС.

Результаты обучения НС, выводимые в командную строку MATLAB

Рис. 2.4 – Результаты обучения НС, выводимые в командную строку MATLAB

В итоге на финальной итерации обучения НС точность предсказания на валидационных данных составляет 99.6%, что является достаточно для решения поставленной задачи.

При помощи команды save(net,’net’), можно сохранить обученную нейронную сеть и при запуске программы загружать ее в рабочую область при помощи команды load(net).

Для проверки возможности использования обученной НС для реальных задач была сделана фотография кубика Рубика, представленная на рис. 2.5 и загружена в MATLAB.

Фотография кубика Рубика.

Рис. 2.5 – Фотография кубика Рубика.

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

Область первого элемента кубика Рубика, подаваемая на вход НС

Рис. 2.6 – Область первого элемента кубика Рубика, подаваемая на вход НС

Далее на вход НС были поданы области, представленные на рис. 2.7 и рис. 2.8. Для данных областей на выходе были получены следующие результаты: на рис. 2.7 с вероятностью 0.9998 – область оранжевого цвета, а на рис. 2.8 с вероятностью 0.9999 – область синего цвета.

Вторая область, подаваемая на вход НС

Рис. 2.7 – Вторая область, подаваемая на вход НС

Третья область, подаваемая на вход НС

Рис. 2.8 – Третья область, подаваемая на вход НС

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

Выводы

Была спроектирована система технического зрения робота-манипулятора с ортогональными захватами.

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

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

Список источников

  1. Ф. Уоссерман. Нейрокомпьютерная техника: теория и практика/ под ред. А.И. Галушкина. М.: Мир. 1986.
  2. В.В.Круглов,В.В.Борисов.Искусственные нейронные сети.-М:Горячая линия.-Телеком,2001.-382с.
  3. Л.Г.Комарцова,А.В.Максимов.Нейрокомпьютеры.-Москва:МГТУ им.Баумана.2002.-320с.
  4. О.Г.Руденко, Е.В.Бодянский. Основы терии искусственных нейронних сетей.-Харьков:2002.-2002.-317с.
  5. В.Дьяконов,В.В.Круглов. Математические пакеты расширения МАТЛАБ.Специальный справочник.Спб:Питер.-2001.-480с.
  6. В.С.Медведев, В.Г.Потемкин. Нейронные сети.МАТЛАБ.-М:Диалог.-МИФИ.-2002.-496с.
  7. С.Осовский. Нейронные сети для обработки информации.Москва: Финансы и статистика .-2002.-344с.