Разработка системы распределенного обучения нейронной сети с использованием Windows Azure
Изучение и реализация системы, использующей возможности Microsoft Azure для распределенного обучения нейронной сети. Рассмотрение функционирования распределенных вычислений. Выбор задачи для исследования; тестирование данного программного ресурса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 20.07.2015 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
14
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное учреждение
высшего профессионального образования
"Кубанский государственный университет" (ФГБОУ ВПО "КубГУ")
Кафедра информационных технологий
Выпускная квалификационная работа бакалавра
Разработка системы распределенного обучения нейронной сети с использованием Windows Azure
Работу выполнил
П.А. Борисов
Научный руководитель
доц., канд.физ.-мат. наук.
В.В. Гарнага
Нормоконтролер
ст. преп. А.В. Харченко
Краснодар 2014
Реферат
Выпускная квалификационная работа 39 с., 2 ч., 5 источников, 11 иллюстраций.
Распределенное приложение, облачные службы, аппроксимация, MICROSOFT AZURE, VISUAL STUDIO.
Цель работы - изучение и реализация системы, использующей возможности Microsoft Azure для распределенного обучения нейронной сети.
В работе изучены возможности языка программирования F#, C#, среды разработки VISIUAL STUDIO, возможности облачной платформы Microsoft Azure.
Содержание
- Введение
- 1. Постановка задачи
- 1.1 Реферативно-обзорная часть
- 1.2 Проекты распределенных вычислений
- 1.3 Критерии выбора платформы для распределенных вычислений
- 2. Microsoft Windows Azure
- 2.1 Platform as a Service
- 2.2 Infrastructure as a Service
- 2.3 Windows Azure изнутри
- 2.4 Производительность
- 2.5 Сервисы
- 2.6 Проекты на Azure
- 2.7 "Хочу" Azure
- 3. Нейронные сети
- 3.1 Искусственная нейронная сеть
- 3.2 Применения нейронных сетей
- 3.2.1 Распознавание образов и классификация
- 3.2.2 Принятие решений и управление
3.2.3 Кластеризация
- 3.2.4 Прогнозирование
- 3.2.5 Аппроксимация
- 3.2.6 Сжатие данных и Ассоциативная память
- 3.3 Этапы решения задач
- 3.3.1 Сбор данных для обучения
- 3.3.2 Выбор топологии сети
- 3.3.3 Экспериментальный подбор характеристик сети
- 3.3.4 Собственно обучение сети
- 3.3.5 Проверка адекватности обучения
- 4. Реализация
- 4.1 Нейронная сеть
- Заключение
- Список используемой литературы
Введение
В настоящее время технология распределенных вычислений занимает первое место среди технологий по работе с огромным количеством информации. Что же это за технология? Что лежит в её основе?
Формального определения распределенной вычислительной системы в настоящее время не существует. Из множества различных определений, можно выделить ироничное определение Лесли Лампорта:
"Распределенной вычислительной системой можно назвать такую систему, в которой отказ компьютера, о существовании которого вы даже не подозревали, может сделать ваш собственный компьютер непригодным к использованию".
Это определение он дал в мае 1987 года, в своем письме коллегам по поводу очередного отключения электроэнергии в машинном зале.
Профессор Эндрю Таненбаум предлагает более строгое определение: "Распределенная вычислительная система (РВС) - это набор соединенных каналами связи независимых компьютеров, которые с точки зрения пользователя некоторого программного обеспечения выглядят единым целым".
В этом определении фиксируются два существенных момента: автономность узлов РВС и представление системы пользователем, как единой структуры. При этом основным связующим звеном распределенных вычислительных систем является программное обеспечение.
Распределенная вычислительная система представляет собой программно-аппаратный комплекс, ориентированный на решение определенных задач. С одной стороны, каждый вычислительный узел является автономным элементом. С другой стороны, программная составляющая РВС должна обеспечивать пользователям видимость работы с единой вычислительной системой. В связи с этим выделяют следующие важные характеристики РВС:
- возможность работы с различными типами устройств:
- с различными поставщиками устройств;
- с различными операционными системами,
- с различными аппаратными платформами.
- возможность простого расширения и масштабирования;
- перманентная (постоянная) доступность ресурсов (даже если некоторые элементы РВС некоторое время могут находиться вне доступа);
- сокрытие особенностей коммуникации от пользователей.
Вычислительные среды, состоящие из множества вычислительных систем на базе разных программно-аппаратных платформ, называются гетерогенными. Для обеспечения работы гетерогенного оборудования РВС в виде единого целого, стек программного обеспечения (ПО) обычно разбивают на два слоя.
На верхнем слое располагаются распределенные приложения, отвечающие за решение определенных прикладных задач средствами РВС. Их функциональные возможности базируются на нижнем слое - промежуточном программном обеспечении (ППО). ППО взаимодействует с системным ПО и сетевым уровнем, для обеспечения прозрачности работы приложений в РВС.
Для того чтобы РВС могла быть представлена пользователю как единая система, применяют следующие типы прозрачности в РВС:
- прозрачный доступ к ресурсам - от пользователей должна быть скрыта разница в представлении данных и в способах доступа к ресурсам РВС;
- прозрачное местоположение ресурсов - место физического расположения требуемого ресурса должно быть несущественно для пользователя;
- репликация - сокрытие от пользователя того, что в реальности существует более одной копии используемых ресурсов;
- параллельный доступ - возможность совместного (одновременного) использования одного и того же ресурса различными пользователями независимо друг от друга. При этом факт совместного использования ресурса должен оставаться скрытым от пользователя;
- прозрачность отказов - отказ (отключение) каких-либо ресурсов РВС не должен оказывать влияния на работу пользователя и его приложения.
1. Постановка задачи
Распределенные вычисления в связи с повсеместным проникновением глобальных сетей и укрупнения бизнеса, становится все более и более популярным. Снижение стоимости сетевой инфраструктуры с одновременным повышением ее производительности, дают мощный стимул к увеличению количества распределенных систем, которые призваны объединить в одно целое разнесенные в пространстве филиалы, либо клиентов, разбросанных по всему миру.
Целью данной работы является изучение возможностей Windows Azure, с целью их дальнейшего применения для написания системы, обучающей нейронную сеть распределено.
Выделим некоторые пункты для нашей работы:
- Рассмотрим функционирование распределенных вычислений;
- Выберем задачу для исследования;
- Реализуем данную задачу.
1.1 Реферативно-обзорная часть
Современные системы давно перестали быть похожими на фантазии ученых и писателей прошлых столетий. Многие из них были правы относительно общих принципов и возможностей, но мало кто мог представить возможности современных суперкомпьютеров и распределенных систем, и еще меньше кто мог представить массивы данных, с которыми такие системы работают.
На сегодняшний день самыми перспективными считаются две основные технологии, которые имеют много общего: параллельные и распределенные вычисления. В параллельных вычислениях участвует оборудование, находящееся, как правило, в одном физическом месте, они тесно соединены между собой и все параметры их работы известны программисту. В распределенных вычислениях нет тесной постоянной связи между узлами, соответственно названию, они распределены по некоторой территории и параметры работы этой системы динамичны и не всегда известны.
1.2 Проекты распределенных вычислений
В последнее время появилось много проектов распределённых вычислений зазывающих всех желающих занять время простоя компьютера полезными и не очень вычислениями. Наиболее известным подобным проектом являлся взлом RC5, проводимый distributed.net, который в то же время относился к наиболее бессмысленным.
Общая схема участия в том или ином проекте выглядит так: вы скачиваете клиента под свою платформу/операционную систему, настраиваете и запускаете его в фоне. Клиент периодически общается с сервером - запрашивает у него данные на обработку и отсылает результаты. При этом клиент выполняется в idle приоритете и не мешает основной работе. Таким образом, компьютер работает, как и прежде, но уже никогда не простаивает.
Проекты, нуждающиеся в быстрых и точных вычислениях, казалось бы не могут быть решены таким методом. Далеко не каждый предпочтет отдать своё процессорное время, простому отключению. Пользователям ноутбуков, планшетов такие проекты никак не могут понравиться. Но такие проекты существуют и пользуются популярностью. И в чем же секрет?
Проект, требующий быстрой работы с громадным количеством информации, как правило, имеет хорошее финансирование, вот и вся разгадка. Процессорное время - товар на рынке распределенного вычисления. Множество фирм покупает процессорное время, причем сама программа уже имеет самый высокий приоритет. Примером таких компаний является: MQL5 Cloud Network.
Существует ряд других компаний, которые предлагают аналогичные сервисы, но уже без привлечения чужого процессорного время. Технология та же, только вместо включенных в сеть компьютеров пользователей, используются свои вычислительные машины, собранные в одном месте. Пользователь может выбрать характеристики машин, которые будут участвовать в его проекте. Примером такой реализации распределенных вычислений является облачная платформа Windows Azure.
1.3 Критерии выбора платформы для распределенных вычислений
Существуют множество критериев для выбора платформы. От скорости вычислений до поддержки известных технологий. Наиболее общими являются:
· Производительность
· Безопасность
· Масштабируемость
· Цена
Для реализации данной задачи была выбрана: Microsoft Azure.
2. Microsoft Windows Azure
Microsoft Windows Azure - облачная платформа от Microsoft.
Платформа Windows Azure предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных дата-центрах.
Microsoft Azure полностью реализует две облачные модели -- платформы как сервиса (Platform as a Service, PaaS) и инфраструктуры как сервиса (Infrastructure as a Service, IaaS). Работоспособность платформы Windows Azure обеспечивает сеть глобальных дата-центров Microsoft.
Основные особенности данной модели:
· оплата только потребленных ресурсов;
· общая, многопоточная структура вычислений;
· абстракция от инфраструктуры.
В основе работы Microsoft Azure лежит запуск виртуальной машины для каждого экземпляра приложения.
Разработчик определяет необходимый объем для хранения данных и требуемые вычислительные мощности (количество виртуальных машин), после чего платформа предоставляет соответствующие ресурсы.
Когда первоначальные потребности в ресурсах изменяются, в соответствии с новым запросом заказчика платформа выделяет под приложение дополнительные или сокращает неиспользуемые ресурсы дата-центра.
2.1 Platform as a Service
Microsoft Azure как PaaS обеспечит не только все базовые функции операционной системы, но и дополнительные: выделение ресурсов по требованию для неограниченного масштабирования, автоматическую синхронную репликацию данных для повышения отказоустойчивости, обработку отказов инфраструктуры для обеспечения постоянной доступности и многое другое.
2.2 Infrastructure as a Service
Microsoft Azure также реализует другой тип сервиса -- инфраструктуру как сервис. Модель предоставления инфраструктуры (аппаратных ресурсов) реализует возможность аренды таких ресурсов, как серверы, устройства хранения данных и сетевое оборудование. Управление всей инфраструктурой осуществляется поставщиком, потребитель управляет только операционной системой и установленными приложениями. Такие сервисы оплачиваются по фактическому использованию и позволяют увеличивать или уменьшать объем инфраструктуры через специальный портал, предоставляемый поставщиками. В данной сервисной модели могут быть запущены практически любые приложения, установленные на стандартные образы ОС.
2.3 Windows Azure изнутри
Azure состоит из трех компонентов:
ѕ Compute -- компонент, реализующий вычисления на платформе Windows Azure.
ѕ Storage -- компонент хранилища предоставляет масштабируемое хранилище. Хранилища не имеет возможности использовать реляционную модель и является альтернативной, "облачной" версией SQL Server.
ѕ Fabric -- Windows Azure Fabric по своему назначению является "контролёром" и ядром платформы, выполняя функции мониторинга в реальном времени, обеспечения отказоустойчивости, выделении мощностей, развертывания серверов, виртуальных машин и приложений, балансировки нагрузки и управления оборудованием.
Рисунок 1- Архитектура приложения на Azure
Рисунок 2 - Общая структура приложений на Azure
2.4 Производительность
Microsoft Azure была признана Compuware самой быстрой "облачной" платформой.
Также бенчмарк Microsoft Azure показал высокую производительность для масштабных вычислений c результатами в 151,3 TФлопс на 8064 ядрах с 90,2 процентной эффективностью.
Аналитическая компания Nasuni представила очередное исследование провайдеров облачных сервисов хранения данных. Согласно этому отчету, платформа Microsoft Azure является лидером в тестах производительности при записи и чтении данных из облака, доступности данных и минимальному числу ошибок (0%). В 2014 году Nasuni выпускает очередной отчет с результатами тестирования облачных хранилищ Amazon, Google, HP, Microsoft и Rackspace.
2.5 Сервисы
Microsoft Azure предоставляет набор сервисов, покрывающих широкий спектр сценариев. Ниже приведены наиболее подходящие для реализации поставленной задачи.
Cloud Services:
ѕ Web-роль -- веб-роли в Microsoft Azure имеют особое назначение: предоставление выделенного веб-сервера служб IIS для размещения интерфейсных веб-приложений. Веб-роли позволяют развертывать веб-приложения с последующим масштабированием вычислительных ресурсов.
ѕ Worker-роль -- приложения, размещенные в рабочих ролях, могут выполнять асинхронные, продолжительные или непрерывные задачи независимо от действий пользователей. Изоляция фоновых процессов приложения в рабочей роли и размещение интерфейсной части в веб-роли позволяет распределить логику приложения и управлять масштабированием приложения
ѕ Web Sites - веб-сайты поддерживают ASP.NET, Java, Node.js или PHP (либо CMS -- WebMatrix, Joomla, Drupal, WordPress, DotNetNuke, Umbraco и др.) и разворачивать за секунды с использованием FTP, Git, TFS, Mercurial и Dropbox. Использование в режиме Free бесплатно (однако накладываются серьезные ограничения). По умолчанию веб-сайты находятся в состоянии Free, то есть мощности делятся между веб-сайтами, но при необходимости можно увеличить количество экземпляров и перевести веб-сайт в режим резервирования ресурсов. С июня 2013 года сервис Web Sites официально поддерживает пользовательские сертификаты SSL (ранее поддерживались только сертификаты, предлагаемые Microsoft) как по IP-адресу, так и на базе SNI,
Data Management -- нереляционные хранилища данных: таблицы, диски, очереди, хранение двоичных объектов + реляционное хранилище данных в виде SQL Database.
Networking:
ѕ Virtual Network -- сервис для соединения облачных инфраструктур с локальными методом Site-To-Site VPN и Point-To-Site VPN.
ѕ Connect -- сервис более не поддерживается (заменен Virtual Network).
ѕ Traffic -- диспетчер трафика обеспечивает балансировку нагрузки по входящему трафику между несколькими размещенными службами Windows Azure независимо от того, работают ли они в одном центре обработки данных или распределены по всему миру.
2.6 Проекты на Azure
Одним из самых громких проектов стало использование платформы Microsoft Azure для Олимпийских Игр в Сочи 2014. Она обеспечила доступность необходимых вычислительных ресурсов во время пиковых нагрузок, объем которых было практически невозможно предсказать заранее.В течение всего периода проведения спортивных соревнований была собрана следующая статистика бесперебойной работы сайта sochi2014.com, обеспеченной Microsoft Azure:
ѕ За время проведения Олимпийских игр в Сочи официальный сайт имел свыше 100 млн. посещений.
ѕ Максимальное количество пользователей пришло из России, США, Канады, Украины и Франции.
ѕ Соревнования по фигурному катанию и неофициальный медальный зачёт привлекли наибольшее внимание.
ѕ В момент пиковой нагрузки на сайте одновременно присутствовало свыше 175 тысяч посетителей, что в 15 раз превышало количество пользователей в периоды минимального потребления. Они просматривали страницы с онлайн-результатами, совершая более 90 тысяч запросов в секунду.
ѕ Ежедневно сайт посещали свыше 5 миллионов пользователей. Они просматривали более 30 миллионов страниц.
ѕ Windows Azure использовалась для предоставления информации для мобильных устройств на любых платформах (на сегодняшний день установлено более 6 миллионов копий официальных приложений Сочи 2014).
ѕ Количество просмотров сайта за время Игр превысило 500 миллионов, а количество запросов к виртуальным машинам Azure составило более 25 миллиардов.
Департамент консалтинга и технической поддержки корпоративных заказчиков, под чьим руководством велось проектирование и внедрение официального сайта, также осуществлял техническую поддержку. Команда численностью 23 эксперта, работала на месте в течение всего периода проведения игр в режиме 24/7.
Еще одним интересным проектом является перенос логики расчетов мультиплейерной игры Titanfall на облачные ресурсы. В Titanfall искусственный интеллект и сетевые функции полностью реализованы на базе облака Azure. По данным Microsoft на запуске игры был использован пул из 100000 виртуальных машин, которые обеспечили гладкий старт игры и беспроблемную обработку пикового интереса со стороны игроков.
2.7 "Хочу" Azure
К сожалению Windows Azure не является бесплатной, но существуют способы получения полноценной версии для ознакомления и не только. В этом пункте речь пойдет именно о них.
Вы можете получить доступ к Windows Azure, активировав подписку или триал, которые предоставляются бесплатно:
Рисунок 3 - Способы бесплатного получения Azure
ѕ Стартапам - программа Microsoft BizSpark
Стартапы-участники программы BizSpark получают бесплатно ежемесячно в течении 3 лет участия в программе ресурсы Windows Azure на 150$ в месяц для разработки, тестирования и размещения в интернете своих сервисов, а также имеют возможность получить еще больше ресурсов по программе для успешных стартапов BizSpark+. Подробнее.
ѕ Подписка MSDN
Подписчики MSDN получают ежемесячно до 5 000 рублей в месяц на использование ресурсов Windows Azure, а также специальные льготные низкие цены на вычислительные мощности для целей разработки и тестирования ПО. Подробнее.
ѕ Партнерам Microsoft - Пакет Cloud Essentials Pack
Партнёры, участвующие в программе Microsoft Partner Network, могут получить бесплатные ресурсы Windows Azure, входящие в пакет Cloud Essentials Pack.
ѕ Преподавателям и студентам - Educator Grant
Преподаватели могут получить ресурсы Windows Azure в виде гранта в рамках курсов или научных работ ВУЗа или подписки DreamSpark Premium для учебного заведения.
ѕ Бесплатный триал Windows Azure
Каждый из вас может активировать триальную подписку Windows Azure. В качестве пробного периода пользователям предлагается бесплатный кредит на сумму $200. Его можно потратить на любые сервисы Windows Azure в рамках стандартной тарификации.
Так же стоит отметить, что для получения триал версии понадобится банковская карта Visa или MasterCard со счета которой снимут и пообещают вернуть 30 рублей.
Самый быстрый и в то же время единственный способ для меня получения Windows Azure: триальная подписка.
3. Нейронные сети
История нейронных сетей начинается в 1950-х гг., когда была представлена архитектура простейших нейронных сетей. После начальной работы в области идея нейронных сетей стала весьма популярной. Но затем область угасла, когда обнаружилось, что нейронные сети тех времен годились для крайне ограниченного числа задач. В 1970-х гг. область снова расцвела, когда была представлена идея многослойных нейронных сетей с алгоритмом обучения с обратным распространением. С тех пор много разных исследователей изучало область нейронных сетей, что привело к появлению широкого диапазона разных нейронных архитектур, применявшихся к множеству разных задач.
3.1 Искусственная нейронная сеть
Искумсственная нейромнная семть (ИНС) -- математическая модель, а также её программная или аппаратная реализация, построенная по принципу организации и функционирования биологических нейронных сетей -- сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса. После разработки алгоритмов обучения, получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др. [1].
ИНС представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты (особенно в сравнении с процессорами, используемыми в персональных компьютерах). Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам. И, тем не менее, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, такие локально простые процессоры вместе способны выполнять довольно сложные задачи.
С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т.п. С математической точки зрения, обучение нейронных сетей -- это многопараметрическая задача нелинейной оптимизации. С точки зрения кибернетики, нейронная сеть используется в задачах адаптивного управления и как алгоритмы для робототехники. С точки зрения развития вычислительной техники и программирования, нейронная сеть -- способ решения проблемы эффективного параллелизма. А с точки зрения искусственного интеллекта, ИНС является основой философского течения коннективизма и основным направлением в структурном подходе по изучению возможности построения (моделирования) естественного интеллекта с помощью компьютерных алгоритмов.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения -- одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами.
В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение.
Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или "зашумленных", частично искаженных данных.
3.2 Применения нейронных сетей
В нынешнее время нейронные сети применяются к таким задачам, как классификация, распознавание, приближение, предсказание, кластеризация, моделирование памяти и множество других разных задач, число которых растет.
3.2.1 Распознавание образов и классификация
В качестве образов могут выступать различные по своей природе объекты: символы текста, изображения, образцы звуков и т.д. При обучении сети предлагаются различные образцы образов с указанием того, к какому классу они относятся. Образец, как правило, представляется как вектор значений признаков. При этом совокупность всех признаков должна однозначно определять класс, к которому относится образец. В случае, если признаков недостаточно, сеть может соотнести один и тот же образец с несколькими классами, что неверно. По окончании обучения сети ей можно предъявлять неизвестные ранее образы и получать ответ о принадлежности к определённому классу.
Топология такой сети характеризуется тем, что количество нейронов в выходном слое, как правило, равно количеству определяемых классов. При этом устанавливается соответствие между выходом нейронной сети и классом, который он представляет. Когда сети предъявляется некий образ, на одном из её выходов должен появиться признак того, что образ принадлежит этому классу. В то же время на других выходах должен быть признак того, что образ данному классу не принадлежит. Если на двух или более выходах есть признак принадлежности к классу, считается, что сеть "не уверена" в своём ответе.
3.2.2 Принятие решений и управление
Эта задача близка к задаче классификации. Классификации подлежат ситуации, характеристики которых поступают на вход нейронной сети. На выходе сети при этом должен появиться признак решения, которое она приняла. При этом в качестве входных сигналов используются различные критерии описания состояния управляемой системы
3.2.3 Кластеризация
Под кластеризацией понимается разбиение множества входных сигналов на классы, при том, что ни количество, ни признаки классов заранее не известны. После обучения такая сеть способна определять, к какому классу относится входной сигнал.
Сеть также может сигнализировать о том, что входной сигнал не относится ни к одному из выделенных классов -- это является признаком новых, отсутствующих в обучающей выборке, данных.
Таким образом, подобная сеть может выявлять новые, неизвестные ранее классы сигналов. Соответствие между классами, выделенными сетью, и классами, существующими в предметной области, устанавливается человеком. Кластеризацию осуществляют, например, нейронные сети Кохонена.
Нейронные сети в простом варианте Кохонена не могут быть огромными, поэтому их делят на гиперслои (гиперколонки) и ядра (микроколонки).
Если сравнивать с мозгом человека, то идеальное количество параллельных слоёв не должно быть более 112.
Эти слои в свою очередь составляют гиперслои (гиперколонку), в которой от 500 до 2000 микроколонок (ядер). При этом каждый слой делится на множество гиперколонок, пронизывающих насквозь эти слои. Микроколонки кодируются цифрами и единицами с получением результата на выходе. Если требуется, то лишние слои и нейроны удаляются или добавляются. Идеально для подбора числа нейронов и слоёв использовать суперкомпьютер.
Такая система позволяет нейронным сетям быть пластичными.
3.2.4 Прогнозирование
Способности нейронной сети к прогнозированию напрямую следуют из её способности к обобщению и выделению скрытых зависимостей между входными и выходными данными. После обучения сеть способна предсказать будущее значение некой последовательности на основе нескольких предыдущих значений и (или) каких-то существующих в настоящий момент факторов.
Следует отметить, что прогнозирование возможно только тогда, когда предыдущие изменения действительно в какой-то степени предопределяют будущие.
Например, прогнозирование котировок акций на основе котировок за прошлую неделю может оказаться успешным (а может и не оказаться), тогда как прогнозирование результатов завтрашней лотереи на основе данных за последние 50 лет почти наверняка не даст никаких результатов.
3.2.5 Аппроксимация
Нейронные сети могут аппроксимировать непрерывные функции. Доказана обобщённая аппроксимационная теорема: с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с некоторой наперёд заданной точностью.
Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета или вейвлета, синуса или многочлена.
От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может достаточно точно аппроксимировать функционирование любого непрерывного автомата.
3.2.6 Сжатие данных и Ассоциативная память
Способность нейросетей к выявлению взаимосвязей между различными параметрами дает возможность выразить данные большой размерности более компактно, если данные тесно взаимосвязаны друг с другом. Обратный процесс -- восстановление исходного набора данных из части информации -- называется (авто)ассоциативной памятью. Ассоциативная память позволяет также восстанавливать исходный сигнал/образ из зашумленных/поврежденных входных данных. Решение задачи гетероассоциативной памяти позволяет реализовать память, адресуемую по содержимому.
3.3 Этапы решения задач
ѕ Сбор данных для обучения;
ѕ Подготовка и нормализация данных;
ѕ Выбор топологии сети;
ѕ Экспериментальный подбор характеристик сети;
ѕ Экспериментальный подбор параметров обучения;
ѕ Собственно обучение;
ѕ Проверка адекватности обучения;
3.3.1 Сбор данных для обучения
Выбор данных для обучения сети и их обработка является самым сложным этапом решения задачи. Набор данных для обучения должен удовлетворять нескольким критериям:
· Репрезентативность -- данные должны иллюстрировать истинное положение вещей в предметной области;
· Непротиворечивость -- противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети.
Исходные данные преобразуются к виду, в котором их можно подать на входы сети. Каждая запись в файле данных называется обучающей парой или обучающим вектором. Обучающий вектор содержит по одному значению на каждый вход сети и, в зависимости от типа обучения (с учителем или без), по одному значению для каждого выхода сети. Обучение сети на "сыром" наборе, как правило, не даёт качественных результатов. Существует ряд способов улучшить "восприятие" сети.
Нормировка выполняется, когда на различные входы подаются данные разной размерности. Например, на первый вход сети подаются величины со значениями от нуля до единицы, а на второй -- от ста до тысячи. При отсутствии нормировки значения на втором входе будут всегда оказывать существенно большее влияние на выход сети, чем значения на первом входе. При нормировке размерности всех входных и выходных данных сводятся воедино.
Квантование выполняется над непрерывными величинами, для которых выделяется конечный набор дискретных значений. Например, квантование используют для задания частот звуковых сигналов при распознавании речи; Фильтрация выполняется для "зашумленных" данных.
Кроме того, большую роль играет само представление как входных, так и выходных данных. Предположим, сеть обучается распознаванию букв на изображениях и имеет один числовой выход -- номер буквы в алфавите. В этом случае сеть получит ложное представление о том, что буквы с номерами 1 и 2 более похожи, чем буквы с номерами 1 и 3, что, в общем, неверно. Для того, чтобы избежать такой ситуации, используют топологию сети с большим числом выходов, когда каждый выход имеет свой смысл. Чем больше выходов в сети, тем большее расстояние между классами и тем сложнее их спутать.
3.3.2 Выбор топологии сети
Выбирать тип сети следует, исходя из постановки задачи и имеющихся данных для обучения. Для обучения с учителем требуется наличие для каждого элемента выборки "экспертной" оценки. Иногда получение такой оценки для большого массива данных просто невозможно. В этих случаях естественным выбором является сеть, обучающаяся без учителя (например, самоорганизующаяся карта Кохонена или нейронная сеть Хопфилда). При решении других задач (таких, как прогнозирование временных рядов) экспертная оценка уже содержится в исходных данных и может быть выделена при их обработке. В этом случае можно использовать многослойный перцептрон или сеть Ворда.
3.3.3 Экспериментальный подбор характеристик сети
После выбора конкретной топологии необходимо выбрать параметры обучения нейронной сети. Этот этап особенно важен для сетей, обучающихся с учителем. От правильного выбора параметров зависит не только то, насколько быстро ответы сети будут сходиться к правильным ответам. Например, выбор низкой скорости обучения увеличит время схождения, однако иногда позволяет избежать паралича сети. Увеличение момента обучения может привести как к увеличению, так и к уменьшению времени сходимости, в зависимости от формы поверхности ошибки. Исходя из такого противоречивого влияния параметров, можно сделать вывод, что их значения нужно выбирать экспериментально, руководствуясь при этом критерием завершения обучения (например, минимизация ошибки или ограничение по времени обучения).
3.3.4 Собственно обучение сети
В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя (например, сети Хопфилда), просматривают выборку только один раз. Другие (например, сети Кохонена), а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части -- собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто "запоминает" обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.
Все выше сказанное относится только к итерационным алгоритмам поиска нейросетевых решений. Для них действительно нельзя ничего гарантировать и нельзя полностью автоматизировать обучение нейронных сетей. [источник не указан 330 дней] Однако, наряду с итерационными алгоритмами обучения, существуют не итерационные алгоритмы, обладающие очень высокой устойчивостью и позволяющие полностью автоматизировать процесс обучения.
3.3.5 Проверка адекватности обучения
Даже в случае успешного, на первый взгляд, обучения сеть не всегда обучается именно тому, чего от неё хотел создатель. Известен случай, когда сеть обучалась распознаванию изображений танков по фотографиям, однако позднее выяснилось, что все танки были сфотографированы на одном и том же фоне. В результате сеть "научилась" распознавать этот тип ландшафта, вместо того, чтобы "научиться" распознавать танки [18]. Таким образом, сеть "понимает" не то, что от неё требовалось, а то, что проще всего обобщить.
Тестирование качества обучения нейросети необходимо проводить на примерах, которые не участвовали в её обучении. При этом число тестовых примеров должно быть тем больше, чем выше качество обучения. Если ошибки нейронной сети имеют вероятность близкую к одной миллиардной, то и для подтверждения этой вероятности нужен миллиард тестовых примеров. Получается, что тестирование хорошо обученных нейронных сетей становится очень трудной задачей.
4. Реализация
Проект полноценно реализован на Visual Studio 2013 Ultimate. Для начала создадим облачную службу в Visual Studio подключим её к уже имеющейся службе в Azure. Для создания облачной службы необходимо установить SDK пакеты на Visual Studio. После чего подключить VS к Azure. Только после этих операций появится возможность создания облачной службы в VS, результат показан на рисунке 4.
Рисунок 4 - Создание облачной службы
Следующим нашим этапом будет создание сайта и базы. Этот этап реализуется уже в самом облаке. Для создания базы можно воспользоваться конструктором или написать код вручную. Необходима база для хранения информации для обучения нейронной сети. База представлена на рисунке 5.
Рисунок 5- База данных в Azure
После создания сайта и базы данных необходимо их связать. Это операция тоже реализуется через возможности Azure.
microsoft azure нейронный сеть
Рисунок 6 -Создание сайта
Аналогично создаем облачную службу в Azure и привязываем ее к нашему проекту в Visual Studio.
Настраиваем конфигурации сайта и мы можем опубликовывать наш пустой. Одна из интересных особенностей - возможность предоставление доступа к сайту.
Рисунок 7 - Проверка подлинности
После написания дизайна переходим к начинке сайта приложениями.
Для загрузки данных на сайт создадим отдельный класс. Используя этот класс, мы будем загружать данные на сайт, а уже потом их отображать.
После прохождения данных этапов у нас есть система, изображенная на рисунке 8.
Рисунок 8 - Структура приложения
4.1 Нейронная сеть
Для реализации нейронной сети буду использовать свободно распространяемую библиотеку C#: Neuro.
Библиотека содержит шесть основных сущностей:
ѕ Neuron - базовый абстрактный класс для всех нейронов, инкапсулирующих такие общие сущности, как вес нейрона, выходное значение и входное значение. Другие классы нейрона наследуются от базового класса, чтобы расширить его дополнительными свойствами и специализировать его.
ѕ Layer - представляет коллекцию нейронов. Это базовый абстрактный класс, инкапсулирующий общий функционал всех слоев нейронов.
ѕ Network - представляет нейронную сеть, является коллекцией слоев нейронов. Это базовый абстрактный класс, предоставляющий общий функционал типовой нейронной сети. Для реализации конкретной архитектуры нейронной сети требуется унаследовать класс, расширив его специфичным функционалом любой архитектуры нейронной сети.
ѕ IActivationFunction - интерфейс функции активации. Функции активации используются в нейронах активации - типе нейрона, где вычисляется взвешенная сумма его входов, и затем значение передается на вход функции активации, и выходное значение становится выходным значением нейрона.
ѕ IUnsupervisedLearning - интерфейс для алгоритмов неуправляемого обучения - типа алгоритмов обучения, где системе даются образцы входов только на этапе обучения, но без желаемых выходов. Задача системы - организоваться так, чтобы найти взаимосвязь и сходства между выборками данных.
ѕ ISupervisedLearning - интерфейс для алгоритмов управляемого обучения - типа алгоритмов обучения, где системе на этапе обучения даются образцы входов вместе с желаемыми выходными значениями. Задача системы - обобщить учебные данные и научиться предоставлять правильное выходное значение, когда ей предъявляется только входное значение.
Рисунок 9 - Библиотека Neuro
ѕ Сеть активации - нейронная сеть, где каждый нейрон вычисляет свой выход как выход функции активации, и аргумент является взвешенной суммой его входов в сочетании с пороговым значением. Сеть может состоять из одного слоя или из нескольких слоев. Обученная по алгоритму управляемого обучения, сеть позволяет решать такие задачи, как приближение, предсказание, классификация и распознавание.
ѕ Сеть дистанции - нейронная сеть, где каждый нейрон вычисляет свой выход как дистанцию между своими весовыми значениями и входными значениями. Сеть состоит из одного слоя и может служить основой для таких сетей, как самоорганизующаяся карта Кохонена, эластичная сеть и сеть Хемминга.
Для написания приложения был использован алгоритм обратного распространения, задача: аппроксимация. Так как сам процесс обучения нейронной сети нельзя разбить на несколько параллельных процессов, то была принята идея обучать сеть на одних и тех же входных данных но с разными параметрами одновременно. Используя библиотеку Neoro было написал 3 программы, каждая из которых обучает нейронную сеть методом обратного распространения, но с разными весами: рисунок 10,11.
Рисунок 10- Аппроксимация с весом 0.1
Рисунок 11 - Аппроксимация с весом 0.2
Заключение
При исследовании задачи разработки системы распределенного обучения нейронной сети были изучены возможности облачной платформы Microsoft Azure: создание и размещение облачных служб, баз данных и публикация сайтов; среды программирования Ultimate Visual Studio 2013: создание веб-приложений, подключение облачных служб.
Разработана система, использующая облачные службы для распределенной аппроксимации, с помощью нейронных сетей и имеющая веб-интерфейс.
Список используемой литературы
1. Windows Azure. URL: http://azure.microsoft.com/en-us/documentation/articles (дата обращения 24.05.2014)
2. Visual Studio http://www.visualstudio.com/get-started/create-your-app-vs
3. SQL Server http://msdn.microsoft.com/en-us/data/tools.aspx
4. Обучение нейронных сетей http://life-prog.ru/1_7556_obuchenie-neyronnih-setey
4. Библиотека Neuro http://www.cyberguru.ru/algorithms/algorithms-theory
5. Распределенные вычисления
http://ru.wikipedia.org/wiki/Распределенные_вычисления
Размещено на Allbest.ru
Подобные документы
Разработка алгоритма и программы для распознавания пола по фотографии с использованием искусственной нейронной сети. Создание алгоритмов: математического, работы с приложением, установки весов, реализации функции активации и обучения нейронной сети.
курсовая работа [1,0 M], добавлен 05.01.2013Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Разработка системы распределенного доступа к текстовому документу, состоящей из сервера и клиентов, которые взаимодействуют между собой по сети. Проектирование структуры системы, протокола взаимодействия, серверной и клиентской части; тестирование.
курсовая работа [1,4 M], добавлен 23.04.2014Выявление закономерностей и свойств, применимых в искусственной нейронной сети. Построение графиков и диаграмм, определяющих степень удаленности между объектами. Моделирование, тестирование и отладка программной модели, использующей клеточный автомат.
дипломная работа [4,1 M], добавлен 25.02.2015Обучение простейшей и многослойной искусственной нейронной сети. Метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки. Реализация в программном продукте NeuroPro 0.25. Использование алгоритма обратного распространения ошибки.
курсовая работа [1019,5 K], добавлен 05.05.2015Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.
презентация [387,5 K], добавлен 11.12.2015Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.
дипломная работа [2,6 M], добавлен 23.09.2013Математические модели, построенные по принципу организации и функционирования биологических нейронных сетей, их программные или аппаратные реализации. Разработка нейронной сети типа "многослойный персептрон" для прогнозирования выбора токарного станка.
курсовая работа [549,7 K], добавлен 03.03.2015Нейронные сети и оценка возможности их применения к распознаванию подвижных объектов. Обучение нейронной сети распознаванию вращающегося трехмерного объекта. Задача управления огнем самолета по самолету. Оценка экономической эффективности программы.
дипломная работа [2,4 M], добавлен 07.02.2013Модель и задачи искусственного нейрона. Проектирование двуслойной нейронной сети прямого распространения с обратным распространением ошибки, способной подбирать коэффициенты ПИД-регулятора, для управления движения робота. Комплект “LEGO Mindstorms NXT.
отчет по практике [797,8 K], добавлен 13.04.2015