8124
.pdf▪Данные. Эта фигура указывает, что данные поступают в процесс или покидают его. Также эта фигура может представлять материалы. Иногда ее называют фигурой "Ввод/Вывод".
▪Ссылка на текущую страницу. Маленький круг показывает, что следующий (предыдущий) этап находится в другом месте документа. Эта фигура особенно полезна на больших блок-схемах, где в противном случае пришлось бы использовать длинный соединитель, который сложно отследить.
▪Ссылка на другую страницу. При размещении этой фигуры на странице открывается диалоговое окно, в котором можно создать набор гиперссылок между двумя страницами блок-схемы или между фигурой "Подпроцесс" и отдельной страницей блок-схемы, на которой показаны этапы этого подпроцесса.
Задание на лабораторную работу.
Нарисуйте блок-схему и диаграмму классов вашего собственного
фреймворка глубокого обучения, разработанного в ходе выполнения
предыдущих лабораторных работ.
41
ЛЛАБОРАТОРНАЯРАБОТА№ .5ОРГАНИЗАЦИЯ КОЛЛЕКТИВНОЙ РАБОТЫ, УПРАВЛЕНИЯ И КОНТРОЛЯ ТРЕБОВАНИЙ СО СТОРОНЫ ЗАКАЗЧИКА ПРИ РАЗРАБОТКЕ СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА С ИСПОЛЬЗОВАНИЕМ ОТЕЧЕСТВЕННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (YANDEX TRACKER, БИТРИКС 24)
Задания на лабораторную работу:
1.Выложите ваш проект с собственным фреймворком глубокого обучения в открытый доступ с использованием GitHub
2.Попробуйте использовать бесплатно использовать сервис для совместной работы и организации процессов в компании Yandex Tracker (https://cloud.yandex.ru/services/tracker) в интересах контроля качества вашего проекта со стороны заказчика. В роли заказчика может выступать ваш преподаватель или одногруппник.
3.Попробуйте бесплатно использовать сервис Битрикс24
(https://www.bitrix24.ru/) для организации управления проектом по методике Scrum. Делегируйте, управляйте сроками, назначайте ответственных, создавайте шаблоны задач.
42
ЛАБОРАТОРНАЯ1 РАБОТА № 6 ЛАБОРАТОРНАЯ РАБОТА № 6
Реализация системы классификации
сигналов на базе последовательной
нейронной сети с использованием
Python и его библиотек глубокого обучения, таких как TensorFlow и
PyTorch
Последовательные нейронные сети
Последовательные искусственные нейронные сети представляют собой устройства параллельных вычислений, состоящие из множества взаимодействующих простых искусственных нейронов. Искусственный нейрон является упрощенной моделью естественного нейрона и с математической точки зрения представляет некоторую нелинейную функцию от единственного аргумента - линейной комбинации всех входных сигналов.
Данную функцию называют функцией активации или функцией срабатывания,
передаточной функцией. Полученный результат посылается на единственный выход (рисунок 1).
43
2
f (net) f
Рисунок 1 – Структурная схема искусственного нейрона
Линейная комбинация входных сигналов (значение комбинированного входа) определяется выражением:
|
n |
i |
|
i |
|
net = |
x |
. |
|
i=1 |
|
(0.1)
где |
|
- весовой коэффициент. Полученное значение подвергается |
нелинейному преобразованию с помощью функции активации f . В
большинстве случаев она является монотонно возрастающей и имеет область значений [−1, 1] или [0, 1]. Примеры функций активации нейронов:
Линейная передаточная функция
Сигнал на выходе нейрона линейно связан с взвешенной суммой сигналов на его входе:
f (x) = t net,
где
t
- параметр функции.
44
3
Рисунок 2 – Линейная передаточная функция
Пороговая передаточная функция
Другое название — функция Хевисайда. Представляет собой перепад.
До тех пор, пока взвешенный сигнал на входе нейрона не достигает некоторого уровня T , сигнал на выходе равен нулю. Как только сигнал на входе нейрона превышает указанный уровень — выходной сигнал скачкообразно изменяется на единицу. Математическая запись этой функции выглядит так:
1 |
if |
net T |
|
f (net ) = |
|
else |
. |
0 |
|
|
45
4
Рисунок 3 – Пороговая функция активации
Сигмоидальная передаточная функция
Один из самых часто используемых на данный момент типов передаточных функций. Введение функций сигмоидального типа было обусловлено ограниченностью нейронных сетей с пороговой функцией активации нейронов — при такой функции активации любой из выходов сети равен либо нулю, либо единице, что ограничивает использование сетей не в задачах классификации. Математически сигмоидальную функцию можно выразить так
|
|
f (net ) = |
|
1 |
. |
|
|
|
+ exp(−t net ) |
|
|||
|
|
1 |
|
|
||
Здесь |
t |
— это параметр функции, |
определяющий её крутизну. Когда |
t |
стремится к бесконечности, функция вырождается в пороговую. При t = 0
сигмоида вырождается в постоянную функцию со значением 0,5. Область значений данной функции находится в интервале (0,1). Изображение функции активации представлено на рисунке 4.
46
5
Рисунок 4 – Сигмоидальная функция активации
Существует множество функций активации нейронов. Выше были рассмотрены самые распространённые. Благодаря использованию нелинейных функций активации значения на выходе всех нейронов нейронной сети имеют один и тот же динамический диапазон. Кроме-того,
использование нелинейных функций активации расширяет возможности многослойных нейронных сетей.
При использовании многослойных нейронных сетей в случае линейных функций активности можно найти один слой весов, дающий тот же результат,
что и сеть с несколькими слоями. Другими словами, многослойная сеть с линейными функциями активности сможет решать только те проблемы,
которые могут быть решены однослойной сетью (т.е. сетью, имеющей только входные и выходные элементы) [1].
Изображение многослойной нейронной сети представлено на рисунке
5.
47
6
0
|
0, 4 |
|
0, 5
1 1, 4
|
|
|
1, 5 |
|
2, 4 |
|
2 2, 5
3
|
|
|
|
|
|
|
3, 6 |
|
|
|
|
|
|
3, 7 |
|
|
3, 8 |
|
|
4 |
|
|
|
|
4, 6 |
||
|
|
||
f (net4) |
|
|
|
|
|
|
4, 7 |
|
4, 8 |
||
5 |
|
|
|
|
5, 6 |
|
|
f (net ) |
|
5, 7 |
|
|
5 |
|
|
|
5, 8 |
6
O6
f (net6)
7
O7
f (net7)
8
O8
f (net8)
Рисунок 5 – Многослойная нейронная сеть
Данная нейронная сеть состоит из трех слоев. Как правило многослойные нейронные сети в каждом слое содержат еще и элемент смещения. На рисунке 5 он обозначен белым кружком. Элемент смещения не связан с нейронами из предыдущего слоя и всегда имеет единичное значение на выходе. Нулевой слой представленной нейронной сети содержит два входных нейрона и один элемент смещения, таким образом, данная нейронная сеть принимает на вход вектор, содержащий две компоненты.
Нейроны входного слоя нейронной сети никак не модифицируют сигнал, а
лишь передают его нейронам следующих слоев, называемых скрытыми.
На рисунке 5 каждый искусственный нейрон имеет свой порядковый номер j = 0...8. В соответствии с такой нумерацией сигнал на выходе j -го нейрона скрытого слоя будет равен
о |
|
= f |
|
x |
|
|
, |
j |
|
|
|||||
|
|
i |
i, j |
|
|||
|
|
|
|
i |
|
|
|
где i - порядковый номер нейрона из предыдущего слоя нейронной сети,
функция активации, которая чаще всего является сигмоидной (t = 0),
входной сигнал, который в зависимости от расположения нейрона
f |
- |
xi |
- |
|
в |
48
7
нейронной сети может быть равен либо входному отсчету, либо значению с выхода нейрона предыдущего слоя.
Чаще всего с помощью последовательных нейронных сетей решают три задачи: задачу классификации (распознавания), задачу предсказания и задачу
аппроксимации данных.
Изображенная на рисунке 5 нейронная сеть может подразделять входные образцы данных на три класса, поскольку содержит три нейрона в последнем слое. В случае решения задачи классификации с помощью нейронной сети вектор, полученный на ее выходе, требуется преобразовать с помощью функции softmax. Эта функция преобразует вектор o с выхода нейронной сети к вектору σ той же размерности, где каждая координата полученного вектора i представлена вещественным числом в интервале
[0,1] и сумма координат равна 1. Т.е. каждая координата i , полученного вектора, является вероятностью, с которой объект принадлежит к классу с
порядковым номером i. |
Функция softmax определяется выражением: |
|||
|
(o)i |
= |
eoi |
, |
|
K −1 |
|||
|
|
|
eok |
|
|
|
|
k =0 |
|
где |
K - количество нейронов в последнем слое нейронной сети (количество |
распознаваемых образов). Номер класса, к которому относится входной образец, определяется индексом максимального элемента вектора σ.
1 Обучение последовательной нейронной сети
Наиболее часто нейронные сети реализуют программно с помощью языков программирования Python и С++. При инициализации нейронной сети указывают количество ее слоев, количество нейронов в каждом слое нейронной сети, функцию активации нейронов. Чаще всего все нейроны имеют одинаковую функцию активации. Весовые коэффициенты нейронов
49
8
принимают случайные значения в диапазоне [-0,3; 0,3] и корректируются в процессе обучения нейронной сети.
Для обучения нейронных сетей требуются значительные объемы
обучающих данных, содержащие от тысячи до десятков тысяч образцов.
Задача обучения нейронной сети сводится к поиску значений весовых коэффициентов ее нейронов, при которых она успешно решает требуемые задачи. Последовательные нейронные сети обучаются в соответствии с алгоритмом обратного распространения ошибки [1]. Подробный анализ алгоритма обратного распространения ошибки будет дан в следующей лабораторной работе, здесь ограничимся лишь кратким обзором процесса
обучения нейронной сети.
При обучении нейронной сети каждому вектору X = xl , подаваемому на ее вход, ставится в соответствие целевой вектор T = t j , который должен быть поучен на ее выходе. При этом на выходе нейронной сети получаем вектор O = oj , значения которого отличаются от требуемого вектора T .
Тогда ошибка (потеря) нейронной сети для образца |
p |
может быть |
|||
определена по формуле |
|
|
|
||
Ep = |
1 |
j |
(t j − oj )2 , |
|
(1.1) |
2 |
|
а полная ошибка будет равна
(1.2)
Алгоритм обратного распространения ошибки корректирует веса нейронной сети каждый раз при подаче на ее вход какого-либо вектора входных отчетов из множества обучающих данных, минимизируя ошибку Ep .
При этом в результате обучения нейронной сети может возникнуть ситуация
50