- Проблемы и перспективы нейронных сетей
- Пилюгина К.Н. Применение нейронных сетей с целью обнаружения вторжений
- Нейронные сети: их применение, работа
- Реализация искусственных нейронных сетей в Линукс
- Принятие решений и управление
- Кластеризация
- Прогнозирование
- Фильтрация выполняется для «зашумленных» данных
- Выбор топологии сети
- Экспериментальный подбор характеристик сети
- Экспериментальный подбор параметров обучения
- Собственно обучение сети
- Установка нейронной сети FANN в Linux recovery mode
- Начало установки
- 2.3 Классификация искусственных нейронных сетей
Проблемы и перспективы нейронных сетей
45342
Проблемы и перспективы нейронных сетей
Доклад
Информатика, кибернетика и программирование
Проблемы интерпретируемости приводят к снижению ценности полученных результатов работы сети а проблема размерности к очень жестким ограничениям на количество выходных нейронов в сети на количество рецепторов и на сложность структуры взаимосвязей нейронов с сети.
уже сегодня искусственные нейронные сети используются во многих областях но прежде чем их можно будет применять там где на карту поставлены человеческие жизни или значительные материальные ресурсы должны быть решены важные вопросы касающиеся надежности их работы.
Некоторые…
Русский
2013-11-16
48 KB
40 чел.
17 Проблемы и перспективы нейронных сетей
На наш взгляд к основным проблемам нейронных сетей можно отнести:
1. Сложность содержательной интерпретации смысла интенсивности входных сигналов и весовых коэффициентов (“проблема интерпретируемости весовых коэффициентов”).
Обратите внимание
2. Сложность содержательной интерпретации и обоснования аддитивности аргумента и вида активационной (передаточной) функции нейрона (“проблема интерпретируемости передаточной функции”).
3. “Комбинаторный взрыв”, возникающий при определении структуры связей нейронов, подборе весовых коэффициентов и передаточных функций (“проблема размерности”).
4. “Проблема линейной разделимости”, возникающая потому, что возбуждение нейронов принимают лишь булевы значения 0 или 1.
Проблемы интерпретируемости приводят к снижению ценности полученных результатов работы сети, а проблема размерности – к очень жестким ограничениям на количество выходных нейронов в сети, на количество рецепторов и на сложность структуры взаимосвязей нейронов с сети. Достаточно сказать, что количество выходных нейронов в реальных нейронных сетях, реализуемых на базе известных программных пакетов, обычно не превышает несколько сотен, а чаще всего составляет единицы и десятки.
Проблема линейной разделимости приводит к необходимости применения многослойных нейронных сетей для реализации тех приложений, которые вполне могли бы поддерживаться сетями с значительно меньшим количеством слоев (вплоть до однослойных), если бы значения возбуждения нейронов были не дискретными булевыми значениями, а континуальными значениями, нормированными в определенном диапазоне.
Перечисленные проблемы предлагается решить путем использования модели нелокального нейрона, обеспечивающего построение нейронных сетей прямого счета.
уже сегодня искусственные нейронные сети используются во многих областях, но прежде чем их можно будет применять там, где на карту поставлены человеческие жизни или значительные материальные ресурсы, должны быть решены важные вопросы, касающиеся надежности их работы. Поэтому уровень допустимых ошибок следует определять исходя из природы самой задачи.
Некоторые проблемы с анализом вопросов надежности возникают из-за допущения полной безошибочности компьютеров, тогда как искусственные нейронные сети могут быть неточны даже при их правильном функционировании. На самом же деле компьютеры, как и люди, тоже могут ошибаться.
Важно
Первые — в силу различных технических проблем или ошибок в программах, вторые — из-за невнимательности, усталости или непрофессионализма. Следовательно, для особо критических задач необходимо, чтобы эти системы дублировали и страховали друг друга.
А это значит, при решении таких задач нейронные сети должны выступать не в качестве единственных средств, а в качестве дополнительных, предупреждающих особые ситуации или берущих на себя управление, когда проблема не решается стандартным образом и какие-либо задержки могут привести к катастрофе.
Другая трудность использования нейронных сетей состоит в том, что традиционные нейронные сети неспособны объяснить, каким образом они решают задачу. Внутреннее представление результатов обучения зачастую настолько сложно, что его невозможно проанализировать, за исключением некоторых простейших случаев, обычно не представляющих интереса.
В последнее время предпринимаются активные попытки объединения искусственных нейронных сетей и экспертных систем.
В такой системе искусственная нейронная сеть может реагировать на большинство относительно простых случаев, а все остальные передаются для рассмотрения экспертной системе.
В результате сложные случаи принимаются на более высоком уровне, при этом, возможно, со сбором дополнительных данных или даже с привлечением экспертов.
Нейросетевые прикладные пакеты, разрабатываемые рядом компаний, позволяют пользователям работать с разными видами нейронных сетей и с различными способами их обучения. Они могут быть как специализированными (например, для предсказания курса акций), так и достаточно универсальными.
Области применения нейронных сетей весьма разнообразны — это распознавание текста и речи, семантический поиск, экспертные системы и системы поддержки принятия решений, предсказание курсов акций, системы безопасности, анализ текстов.
Совет
Рассмотрим несколько особенно ярких и интересных примеров использования нейронных сетей в разных областях.
Необходимо отметить, что мы старались по возможности выбирать наиболее ранние случаи применения нейронных сетей при решении соответствующей задачи.
Техника и телекоммуникации
В 1996 году фирмой Accurate Automation Corp (http://www.accurate-automation.com), Chattanooga, TN по заказу NASA и Air Force был разработан экспериментальный автопилотируемый гиперзвуковой самолет-разведчик LoFLYTE (Low-Observable Flight Test Experiment — рис. 4).
Самолет имел длину всего 2,5 м и вес 32 кг и был предназначен для исследования новых принципов пилотирования. LoFLYTE использовал нейронные сети, позволяющие автопилоту обучаться, копируя приемы пилотирования летчика.
Поскольку самолет был предназначен для полетов со скоростью 4-5 махов, то быстрота реакции пилота-человека могла быть недостаточной для адекватного отклика на изменение режима полета.
В этом случае на помощь приходили нейронные сети, которые перенимали опыт управления у летчика и за счет высокой скорости обработки информации позволяли быстро находить выход в аварийных и экстремальных ситуациях
Одна из важнейших задач в области телекоммуникаций, которая заключается в нахождении оптимального пути пересылки трафика между узлами, может быть успешно решена с помощью нейронных сетей.
В данном случае необходимо принимать во внимание то, что, во-первых, предложенное решение должно учитывать текущее состояние сети, качество связи и наличие сбойных участков, а во-вторых, поиск оптимального решения должен осуществляться в реальном времени. Нейронные сети хорошо подходят для решения задач такого рода.
Кроме управления маршрутизацией потоков, нейронные сети могут использоваться и при проектировании новых телекоммуникационных сетей, позволяя получать весьма эффективные решения.
Перспективы нейронных сетей
Обратите внимание
настоящее время искусственные нейронные сети являются важным расширением понятия вычисления. Они уже позволили справиться с рядом непростых проблем и обещают создание новых программ и устройств, способных решать задачи, которые пока под силу только человеку.
Современные нейрокомпьютеры используются в основном в программных продуктах и поэтому редко задействуют свой потенциал «параллелизма».
Эпоха настоящих параллельных нейровычислений начнется с появлением на рынке большого числа аппаратных реализаций — специализированных нейрочипов и плат расширений, предназначенных для обработки речи, видео, статических изображений и других типов образной информации.
Со временем должна появиться и бытовая техника, подстраивающаяся под своего владельца, предвестником которой можно считать нейросетевой блок адаптивного управления в новом пылесосе фирмы Samsung. Системы безопасности будут узнавать своих хозяев по голосу, внешнему виду и ряду других уникальных характеристик.
Получат развитие и системы жизнеобеспечения «умных» электронных домов, которые станут еще более адаптивными и обучаемыми. На производстве и в различных промышленных системах интеллектуальные нейросетевые контроллеры смогут распознавать потенциально опасные ситуации, уведомлять о них людей и принимать адекватные и, что самое главное, своевременные меры.
Потоки данных в вычислительных сетях и сетях сотовой связи тоже будут оптимизироваться с помощью нейротехнологий.
Множество надежд в отношении нейронных сетей сегодня связывают именно с аппаратными реализациями, но пока время их массового выхода на рынок, видимо, еще не пришло.
Они или выпускаются в составе специализированных устройств, или достаточно дороги, а зачастую и то и другое.
Важно
На их разработку тратится значительное время, за которое программные реализации на самых последних компьютерах оказываются лишь на порядок менее производительными, что делает использование нейропроцессоров нерентабельным.
Но все это только вопрос времени — нейронным сетям предстоит пройти тот же путь, по которому еще совсем недавно развивались компьютеры, увеличивая свои возможности и производительность, захватывая новые сферы применения по мере возникновения новых задач и развития технической основы для их разработки.
Это и понятно, так как предпосылки для появления компьютеров тоже накапливались постепенно: механические калькуляторы были созданы еще во времена Паскаля, теория универсальных вычислений была разработана в 30-х годах Аланом Тьюрингом, а лампы и развитие радиоэлектроники подготовили создание элементной базы для первых ЭВМ. Вторая мировая война поставила задачу расчета баллистических траекторий, для решения которой понадобились мощные калькуляторы, роль которых сыграли ЭВМ 40-х годов, производящие вычисления по разработанному алгоритму, много раз повторяющему одну и ту же последовательность операций.
Переход к транзисторам, а затем к интегральным схемам делал компьютеры все более дешевыми и доступными. Они перестали использоваться как простые вычислители, им стали поручать более интеллектуальные задачи: работу с документами, обработку и анализ данных.
Соответственно развивался и интерфейс взаимодействия пользователей и компьютеров, который с момента появления первых ЭВМ был узким местом этих устройств, существенно снижающим эффективность работы с ними.
Компьютеры не могли читать, понимать речь, распознавать другую образную информацию: их основным языком были буквы и цифры. Поэтому сначала человеку пришлось учить язык компьютера и программировать в двоичных и машинных кодах, но впоследствии компьютер начал учить язык человека.
Тумблеры-переключатели, а затем командная строка превратились в графические интуитивно понятные интерфейсы, а теперь уже речь идет о системах, которые будут в состоянии общаться с человеком на одном языке.
Скорее всего, эта задача будет возложена на будущие операционные системы, которые станут заниматься не только распознаванием образов, но и интеллектуальной фильтрацией и поиском информации с учетом интересов пользователя. И, конечно, для решения этих задач будут использоваться нейронные сети, реализованные программно или аппаратно.
Совет
Другой областью применения нейронных сетей является их использование в специализированных программных агентах — в роботах, предназначенных для обработки информации, а не для физической работы. Интеллектуальные помощники должны облегчать пользователям работу с информацией и общение с компьютером.
Их отличительной чертой будет стремление как можно лучше понять, что от них требуется, за счет наблюдения и анализа поведения своего хозяина, стараясь обнаружить в этом поведении некоторые закономерности и своевременно предложить свои услуги для выполнения определенных операций, например для фильтрации новостных сообщений, с советами по разрешению возникшей проблемы или для резервного копирования документов, над которыми пользователь работает. Именно поэтому нейронные сети, способные обобщать данные и находить в них закономерности, являются естественным компонентом подобных программных агентов.
Должен измениться и интерфейс взаимодействия пользователя с сетью, который будет основываться на интеллектуальных агентах (см. статью «Интеллектуальные агенты семантического Web’а» в № 10 за прошлый год) — новом виде программного обеспечения, получившем название agentware.
Агенты будут взаимодействовать не только со своим пользователем, но и с другими такими же агентами и со специальными сервисами.
Вследствие этого в сети появится своего рода новый социум с самообучающимися агентами, которые будут принимать решения от имени пользователя, и пока еще трудно сказать, к чему это приведет.
Но все это, естественно, дело отдаленного будущего. Сегодня же нейронные сети используются для работы в относительно узких областях, и неизвестно, доверят ли им когда-нибудь решение вопросов, которые требуют понимания социального контекста.
Между тем нейронные сети уверенно продолжают проникать в нашу жизнь, и примеров тому немало. Чего только стоит развлекательный робот AIBO (рис. 7) — электронная самообучающаяся собака с элементами искусственного интеллекта, выпускаемая Sony.
Пилюгина К.Н. Применение нейронных сетей с целью обнаружения вторжений
Библиографическая ссылка на статью:
Пилюгина К.Н. Применение нейронных сетей с целью обнаружения вторжений // Современные научные исследования и инновации. 2016. № 2 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2016/02/63248 (дата обращения: 07.02.2019).
Что же такое нейронные сети? Искусственные нейронные сети (ИНС) – программная или аппаратная реализация математических моделей, которые построены по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Понятие возникло при изучении процессов, протекающих в мозге, и при попытках смоделировать эти процессы. Единицей измерения является искусственный нейрон.
Нейроны представляют собой однотипные, сравнительно простые элементы, имитирующие работу нейронов мозга. Каждый нейрон имеет два состояния (возбужден или заторможен) по аналогии с нервными клетками головного мозга.
Искусственный нейрон также, как и его естественный прототип, имеет группу синапсов (входов), которые соединены с выходами других нейронов, а также аксон – выходную связь данного нейрона – откуда сигнал возбуждения или торможения поступает на синапсы других нейронов.
Рис. 1 Общий вид нейрона
Обратите внимание
Нейронную сеть можно представить в виде направленного графа, в узлах которого расположены искусственные нейроны, связи же между ними определяются весовыми коэффициентами.
Классифицируя по архитектуре связей ИНС можно разделись на два класса (рис. 1): сети прямого действия, в которых граф не имеет петель, и сети с обратными связями (или же рекуррентные). [1]
Рис. 2 Архитектура связей ИНС
Типичная искусственная нейронная сеть (ANN – artificial neural network) состоит из входного, скрытого и выходного слоев (рис 2).
Рис 2. Прямонаправленная нейронная сеть
Входной слой – служит для распределения данных по сети и не производит никаких вычислений. Выходы этого слоя передают сигналы на входы следующего слоя (скрытого или выходного);
Выходной слой – обычно содержит один нейрон (может и больше), который выдает результат расчетов всей нейронной сети. На основании это сигнала строится дальнейшая логика управления советника;
Скрытые слои – слои обычных нейронов, которые передают сигналы от входа к выходу. Их входом служит выход предыдущего слоя, а выход – входом следующего слоя.
Как правило, обязательным перед применением сети является её обучение. Стоит отметить, что самым эффективным является обучение с учителем (рис.3).
Рис. 3 Схема обучения сети с учителем
Участие учителя можно рассматривать как наличие знаний об окружающей среде, представленных в виде пар вход-выход. Сама среда неизвестна обучаемой нейронной сети.
Важно
Теперь предположим, что учителю и обучаемой сети подается обучающий вектор из окружающей среды.
На основе встроенных знаний учитель может сформировать и передать обучаемой нейронной сети желаемый отклик, соответствующий данному входному вектору.
Этот желаемый результат представляет собой совокупность оптимальных действий, которые должна выполнить нейронная сеть. Параметры сети корректируются с учетом обучающего вектора и сигнала ошибки. Сигнал ошибки – это разность между желаемым сигналом и текущим откликом нейронной сети.
Корректировка параметров выполняется пошагово с целью имитации нейронной сетью поведения учителя. Таким образом, в процессе обучения знания учителя передаются в сеть в максимально полном объеме.
После окончания обучения учителя можно отключить и позволить нейронной сети работать со средой самостоятельно. [2]
DDoS атака
DDoS (Distributed Denial of Service) – это осуществленная с нескольких машин атака на определенный сервер или систему с целью доведения до отказа оборудования, то есть создания таких условий, при которых легитимные пользователи не смогут получить доступ к ресурсам системы, данному серверу. Такие атаки осуществляются Ботнетами (Botnet), представляющими собой компьютерную сеть с запущенным вредоносным ПО (ботами). Запущенные боты позволяют злоумышленнику удаленно осуществлять атаку, использую эту пораженную сеть. [3]
Применение нейронной сети для защиты от DDoS атак.
Воссоздадим с помощью нейронной сети метод, основанный на использовании матрицы смежности. При построении нейронной сети необходимо решить вопрос о представлении данных. В нашем случае каждый нейрон будет описывать страницу, а вероятность перехода будет соответствовать весу связи. Для получения результата будем использовать персептрон (рис. 4).
На вход нейронная сеть получает сигнал от предыдущей работы либо «1» в случае первого запуска, индекс страницы, с которой осуществляется переход и индекс страницы, на которую совершен переход.
Совет
На выходе имеем результирующий сигнал, уровень которого можно интерпретировать как «рейтинг» пользователя.
Сигнал активации равный «1» необходим для того, чтобы выбрать страницу, на которую в данный момент переходит пользователь.
Рис. 4
Чтобы использовать больше параметров при анализе, усложним нейронную сеть. Добавим интервал между запросами в качестве критерия оценки.
Слишком частые запросы не свойственны реальному пользователю, поэтому в качестве сигнала будем использовать.
Чем меньше интервал между запросами – тем более вероятно, что данный запрос сгенерирован атакующей машиной. Тогда нейронная сеть примет вид, представленный на рис. 5.
Рис. 5
Как видно из рисунка ввод новых критериев оценки потребует добавления новых связей, нового слоя при неизменности структуры сети в целом.
Таким образом нейронные сети возможно использовать при многокритериальной оценке процесса в силу простоты их структуры и наличия возможности адаптации к новым наборам данных. Поэтому будем их использовать в качестве математического аппарата для выявления DDoS атак на основе поведения пользователя. [5]
Преимущества и недостатки применения нейронных сетей
Основные преимущества систем обнаружения атак на основе нейронных сетей:
– гибкость и адаптивность алгоритмов, способность анализировать данные из сети, даже если данные являются неполнымиискаженными; высокая скорость обработки данных, обеспечивающая работу системы в режиме реального времени;
– способность «изучения» характеристик атак и выделение элементов, отличающихся от наблюдаемых ранее.
Существующие в настоящее время недостатки систем обнаружения атак на основе нейронных сетей являются продолжением их достоинств, следовательно, их можно рассматривать как источник для дальнейшего совершенствования. К этим недостаткам относится существование проблем обучения системы, поскольку на этом этапе необходимо сформировать большое количество атак, особенно на первоначальном уровне.
Подводя итог можно сказать, что применение искусственных нейронных сетей в системах обнаружения вторжений является очень перспективным и интересным, поскольку работа таких сетей обладает большей гибкостью в сравнении с заранее запрограммированными алгоритмами обнаружения вторжений. Некоторые из них способны обучаться не только при помощи специально подобранных наборов данных, но и в процессе работы в режиме реального времени, что увеличивает вероятность правильного срабатывания при обнаружении атаки. Конечно не стоит забывать и о недостатках, например, при недостаточном обучении нейронной сети вероятность ложного срабатывания будет чуть выше, чем у хорошо настроенных перцептронов. Однако, множество достоинств искусственных нейронных сетей, перед другими методами обнаружения атак не исключает их повсеместное распространение в будущем.
Библиографический список
Количество просмотров публикации: Please wait
Нейронные сети: их применение, работа
Содержание:
В последнее время все чаще и чаще говорят про так званные нейронные сети, дескать вскоре они будут активно применятся и в роботехнике, и в машиностроении, и во многих других сферах человеческой деятельности, ну а алгоритмы поисковых систем, того же Гугла уже потихоньку начинают на них работать. Что же представляют собой эти нейронные сети, как они работают, какое у них применение и чем они могут стать полезными для нас, обо всем этом читайте дальше.
Нейронные сети – это одно из направлений научных исследований в области создания искусственного интеллекта (ИИ) в основе которого лежит стремление имитировать нервную систему человека. В том числе ее (нервной системы) способность исправлять ошибки и самообучаться. Все это, хотя и несколько грубо должно позволить смоделировать работу человеческого мозга.
Но это определение абзацем выше чисто техническое, если же говорить языком биологии, то нейронная сеть представляет собой нервную систему человека, ту совокупность нейронов в нашем мозге, благодаря которым мы думаем, принимаем те или иные решения, воспринимаем мир вокруг нас.
Биологический нейрон – это специальная клетка, состоящая из ядра, тела и отростков, к тому же имеющая тесную связь с тысячами других нейронов. Через эту связь то и дело передаются электрохимические импульсы, приводящие всю нейронную сеть в состояние возбуждение или наоборот спокойствия.
Обратите внимание
Например, какое-то приятное и одновременно волнующее событие (встреча любимого человека, победа в соревновании и т. д.) породит электрохимический импульс в нейронной сети, которая располагается в нашей голове, что приведет к ее возбуждению.
Как следствие, нейронная сеть в нашем мозге свое возбуждение передаст и другим органам нашего тела и приведет к повышенному сердцебиению, более частому морганию глаз и т. д.
Тут на картинке приведена сильно упрощенная модель биологической нейронной сети мозга. Мы видим, что нейрон состоит из тела клетки и ядра, тело клетки, в свою очередь, имеет множество ответвленных волокон, названых дендритами.
Длинные дендриты называются аксонами и имеют протяженность много большую, нежели показано на этом рисунке, посредством аксонов осуществляется связь между нейронами, благодаря ним и работает биологическая нейронная сеть в наших с вами головах.
Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».
Дальнейшая хронология событий была следующей:
- В 1954 году происходит первое практическое использование нейронных сетей в работе ЭВМ.
- В 1958 году Франком Розенблатом разработан алгоритм распознавания образов и математическая аннотация к нему.
- В 1960-х годах интерес к разработке нейронных сетей несколько угас из-за слабых мощностей компьютеров того времени.
- И снова возродился уже в 1980-х годах, именно в этот период появляется система с механизмом обратной связи, разрабатываются алгоритмы самообучения.
- К 2000 году мощности компьютеров выросли настолько, что смогли воплотить самые смелые мечты ученых прошлого. В это время появляются программы распознавания голоса, компьютерного зрения и многое другое.
Под искусственными нейронными сетями принято понимать вычислительные системы, имеющие способности к самообучению, постепенному повышению своей производительности. Основными элементами структуры нейронной сети являются:
- Искусственные нейроны, представляющие собой элементарные, связанные между собой единицы.
- Синапс – это соединение, которые используется для отправки-получения информации между нейронами.
- Сигнал – собственно информация, подлежащая передаче.
Область применения искусственных нейронных сетей с каждым годом все более расширяется, на сегодняшний день они используются в таких сферах как:
- Машинное обучение (machine learning), представляющее собой разновидность искусственного интеллекта. В основе его лежит обучение ИИ на примере миллионов однотипных задач. В наше время машинное обучение активно внедряют поисковые системы Гугл, Яндекс, Бинг, Байду. Так на основе миллионов поисковых запросов, которые все мы каждый день вводим в Гугле, их алгоритмы учатся показывать нам наиболее релевантную выдачу, чтобы мы могли найти именно то, что ищем.
- В роботехнике нейронные сети используются в выработке многочисленных алгоритмов для железных «мозгов» роботов.
- Архитекторы компьютерных систем пользуются нейронными сетями для решения проблемы параллельных вычислений.
- С помощью нейронных сетей математики могут разрешать разные сложные математические задачи.
В целом для разных задач применяются различные виды и типы нейронных сетей, среди которых можно выделить:
- сверточные нейронные сети,
- реккурентные нейронные сети,
- нейронную сеть Хопфилда.
Далее мы детально остановимся на некоторых из них.
Сверточные сети являются одними из самых популярных типов искусственных нейронных сетей. Так они доказали свою эффективность в распознавании визуальных образов (видео и изображения), рекомендательных системах и обработке языка.
- Сверточные нейронные сети отлично масштабируются и могут использоваться для распознавания образов, какого угодно большого разрешения.
- В этих сетях используются объемные трехмерные нейроны. Внутри одного слоя нейроны связаны лишь небольшим полем, названые рецептивным слоем.
- Нейроны соседних слоев связаны посредством механизма пространственной локализации. Работу множества таких слоев обеспечивают особые нелинейные фильтры, реагирующие на все большее число пикселей.
Рекуррентными называют такие нейронные сети, соединения между нейронами которых, образуют ориентировочный цикл. Имеет такие характеристики:
- У каждого соединения есть свой вес, он же приоритет.
- Узлы делятся на два типа, вводные узлы и узлы скрытые.
- Информация в рекуррентной нейронной сети передается не только по прямой, слой за слоем, но и между самими нейронами.
- Важной отличительной особенностью рекуррентной нейронной сети является наличие так званой «области внимания», когда машине можно задать определенные фрагменты данных, требующие усиленной обработки.
Реализация искусственных нейронных сетей в Линукс
Иску́сственные нейро́нные се́ти (ИНС) — математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма.
Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса[en].
После разработки алгоритмов обучения, получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.
Иску́сственные нейро́нные се́ти (ИНС) — математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма.
Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса[en].
После разработки алгоритмов обучения, получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.
ИНС представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты (особенно в сравнении с процессорами, используемыми в персональных компьютерах).
Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам.
И, тем не менее, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, такие локально простые процессоры вместе способны выполнять довольно сложные задачи.
Важно
С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.
С математической точки зрения, обучение нейронных сетей — это многопараметрическая задача нелинейной оптимизации. С точки зрения кибернетики, нейронная сеть используется в задачах адаптивного управления и как алгоритмы для робототехники.
С точки зрения развития вычислительной техники и программирования, нейронная сеть — способ решения проблемы эффективного параллелизма.
А с точки зрения искусственного интеллекта, ИНС является основой философского течения коннективизма и основным направлением в структурном подходе по изучению возможности построения (моделирования) естественного интеллекта с помощью компьютерных алгоритмов.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами.
В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение.
Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных.
В качестве образов могут выступать различные по своей природе объекты: символы текста, изображения, образцы звуков и т. д. При обучении сети предлагаются различные образцы образов с указанием того, к какому классу они относятся. Образец, как правило, представляется как вектор значений признаков.
Совет
При этом совокупность всех признаков должна однозначно определять класс, к которому относится образец. В случае, если признаков недостаточно, сеть может соотнести один и тот же образец с несколькими классами, что неверно.
По окончании обучения сети ей можно предъявлять неизвестные ранее образы и получать ответ о принадлежности к определённому классу.
Топология такой сети характеризуется тем, что количество нейронов в выходном слое, как правило, равно количеству определяемых классов. При этом устанавливается соответствие между выходом нейронной сети и классом, который он представляет.
Когда сети предъявляется некий образ, на одном из её выходов должен появиться признак того, что образ принадлежит этому классу. В то же время на других выходах должен быть признак того, что образ данному классу не принадлежит.
Если на двух или более выходах есть признак принадлежности к классу, считается, что сеть «не уверена» в своём ответе.
Принятие решений и управление
Эта задача близка к задаче классификации. Классификации подлежат ситуации, характеристики которых поступают на вход нейронной сети. На выходе сети при этом должен появиться признак решения, которое она приняла. При этом в качестве входных сигналов используются различные критерии описания состояния управляемой системы.
Кластеризация
Под кластеризацией понимается разбиение множества входных сигналов на классы, при том, что ни количество, ни признаки классов заранее не известны. После обучения такая сеть способна определять, к какому классу относится входной сигнал.
Сеть также может сигнализировать о том, что входной сигнал не относится ни к одному из выделенных классов — это является признаком новых, отсутствующих в обучающей выборке, данных. Таким образом, подобная сеть может выявлять новые, неизвестные ранее классы сигналов.
Соответствие между классами, выделенными сетью, и классами, существующими в предметной области, устанавливается человеком. Кластеризацию осуществляют, например, нейронные сети Кохонена.
Обратите внимание
Нейронные сети в простом варианте Кохонена не могут быть огромными, поэтому их делят на гиперслои (гиперколонки) и ядра (микроколонки). Если сравнивать с мозгом человека, то идеальное количество параллельных слоёв не должно быть более 112. Эти слои в свою очередь составляют гиперслои (гиперколонку), в которой от 500 до 2000 микроколонок (ядер).
При этом каждый слой делится на множество гиперколонок пронизывающих насквозь эти слои. Микроколонки кодируются цифрами и единицами с получением результата на выходе. Если требуется, то лишние слои и нейроны удаляются или добавляются. Идеально для подбора числа нейронов и слоёв использовать суперкомпьютер.
Такая система позволяет нейронным сетям быть пластичными.
Прогнозирование
Способности нейронной сети к прогнозированию напрямую следуют из ее способности к обобщению и выделению скрытых зависимостей между входными и выходными данными. После обучения сеть способна предсказать будущее значение некой последовательности на основе нескольких предыдущих значений и/или каких-то существующих в настоящий момент факторов.
Следует отметить, что прогнозирование возможно только тогда, когда предыдущие изменения действительно в какой-то степени предопределяют будущие.
Например, прогнозирование котировок акций на основе котировок за прошлую неделю может оказаться успешным (а может и не оказаться), тогда как прогнозирование результатов завтрашней лотереи на основе данных за последние 50 лет почти наверняка не даст никаких результатов.
Нейронные сети могут аппроксимировать непрерывные функции. Доказана обобщённая аппроксимационная теорема[16]: с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с некоторой наперёд заданной точностью.
Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета или вейвлета, синуса или многочлена.
От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может достаточно точно аппроксимировать функционирование любого непрерывного автомата.
Способность нейросетей к выявлению взаимосвязей между различными параметрами дает возможность выразить данные большой размерности более компактно, если данные тесно взаимосвязаны друг с другом.
Обратный процесс — восстановление исходного набора данных из части информации — называется (авто)ассоциативной памятью. Ассоциативная память позволяет также восстанавливать исходный сигнал/образ из зашумленных/поврежденных входных данных.
Решение задачи гетероассоциативной памяти позволяет реализовать память, адресуемую по содержимому[15].
Выбор данных для обучения сети и их обработка является самым сложным этапом решения задачи. Набор данных для обучения должен удовлетворять нескольким критериям:
Важно
Репрезентативность — данные должны иллюстрировать истинное положение вещей в предметной области;
Непротиворечивость — противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети.
Исходные данные преобразуются к виду, в котором их можно подать на входы сети. Каждая запись в файле данных называется обучающей парой или обучающим вектором.
Обучающий вектор содержит по одному значению на каждый вход сети и, в зависимости от типа обучения (с учителем или без), по одному значению для каждого выхода сети.
Обучение сети на «сыром» наборе, как правило, не даёт качественных результатов. Существует ряд способов улучшить «восприятие» сети.
Нормировка выполняется, когда на различные входы подаются данные разной размерности. Например, на первый вход сети подаются величины со значениями от нуля до единицы, а на второй — от ста до тысячи.
При отсутствии нормировки значения на втором входе будут всегда оказывать существенно большее влияние на выход сети, чем значения на первом входе.
При нормировке размерности всех входных и выходных данных сводятся воедино;
Квантование выполняется над непрерывными величинами, для которых выделяется конечный набор дискретных значений. Например, квантование используют для задания частот звуковых сигналов при распознавании речи;
Фильтрация выполняется для «зашумленных» данных
Кроме того, большую роль играет само представление как входных, так и выходных данных. Предположим, сеть обучается распознаванию букв на изображениях и имеет один числовой выход — номер буквы в алфавите.
В этом случае сеть получит ложное представление о том, что буквы с номерами 1 и 2 более похожи, чем буквы с номерами 1 и 3, что, в общем, неверно. Для того, чтобы избежать такой ситуации, используют топологию сети с большим числом выходов, когда каждый выход имеет свой смысл.
Чем больше выходов в сети, тем большее расстояние между классами и тем сложнее их спутать.
Выбор топологии сети
Выбирать тип сети следует, исходя из постановки задачи и имеющихся данных для обучения. Для обучения с учителем требуется наличие для каждого элемента выборки «экспертной» оценки. Иногда получение такой оценки для большого массива данных просто невозможно.
В этих случаях естественным выбором является сеть, обучающаяся без учителя (например, самоорганизующаяся карта Кохонена или нейронная сеть Хопфилда). При решении других задач (таких, как прогнозирование временных рядов) экспертная оценка уже содержится в исходных данных и может быть выделена при их обработке.
В этом случае можно использовать многослойный перцептрон или сеть Ворда.
Экспериментальный подбор характеристик сети
После выбора общей структуры нужно экспериментально подобрать параметры сети.
Для сетей, подобных перцептрону, это будет число слоев, число блоков в скрытых слоях (для сетей Ворда), наличие или отсутствие обходных соединений, передаточные функции нейронов.
При выборе количества слоев и нейронов в них следует исходить из того, что способности сети к обобщению тем выше, чем больше суммарное число связей между нейронами. С другой стороны, число связей ограничено сверху количеством записей в обучающих данных.
Экспериментальный подбор параметров обучения
После выбора конкретной топологии необходимо выбрать параметры обучения нейронной сети. Этот этап особенно важен для сетей, обучающихся с учителем. От правильного выбора параметров зависит не только то, насколько быстро ответы сети будут сходиться к правильным ответам. Например, выбор низкой скорости обучения увеличит время схождения, однако иногда позволяет избежать паралича сети.
Увеличение момента обучения может привести как к увеличению, так и к уменьшению времени сходимости, в зависимости от формы поверхности ошибки. Исходя из такого противоречивого влияния параметров, можно сделать вывод, что их значения нужно выбирать экспериментально, руководствуясь при этом критерием завершения обучения (например, минимизация ошибки или ограничение по времени обучения).
Собственно обучение сети
В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя (например, сети Хопфилда), просматривают выборку только один раз.
Другие (например, сети Кохонена), а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части — собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным.
Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение.
Совет
Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают.
В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.
Все выше сказанное относится только к итерационным алгоритмам поиска нейросетевых решений. Для них действительно нельзя ничего гарантировать и нельзя полностью автоматизировать обучение нейронных сетей. Однако, наряду с итерационными алгоритмами обучения, существуют не итерационные алгоритмы, обладающие очень высокой устойчивостью и позволяющие полностью автоматизировать процесс обучения.
Установка нейронной сети FANN в Linux recovery mode
Устанавливать библиотеку Fast Artificial Neural Network будем на операционную систему Debian (один из дистрибутивов Linux). Произвести установку библиотеки можно двумя способами.
- установка из репозиториев;
- установка всех элементов в отдельности.
Первый метод конечно облегчает немного установку, но это того не стоит. Вот с чем мне собственно пришлось столкнуться. Когда мне понадобилось произвести установку на Debian. Я нашел руководство по установке, в котором описывался первый метод.
Бегло прочитав его и уже успев обрадоваться (как оказалось в дальнейшем, ненадолго), я принялся выполнять в точности все этапы по установке библиотеки, описанные в руководстве. Нюансов не возникло. Вроде библиотека установилась и расширение для PHP тоже. Казалось, что все должно было работать. Но не тут то было.
Сначала я подключил нейронную сеть, которую использовал на denwere. Но результат оказался нулевым. Оказалось, что не проходила даже инициализация самой библиотеки. Перечитав еще раз руководство по установке и аналогичные руководства с других ресурсов, я понимал, что все должно работать.
Но в итоге ничего не работало. Два дня у меня ушло на решение проблемы с установкой. Когда все возможные варианты (а их было немного) были исчерпаны у меня “пронеслась” мысль, а что если дистрибутив из репозитариев самой библиотеки “битый”. И как оказалось в дальнейшем, так оно и было.
Поэтому рекомендую вам использовать второй метод установки, в итоге все будет работать, и ваши нервы будут в полном порядке.
Начало установки
Для установки нам нужны следующие инструменты:
- программа make;
- компилятор gcc;
- утилита phpize из пакета php5-dev.
Если первые два инструмента могут уже быть проинсталлированы, то третий, скорее всего нет. Но мы на всякий случай проверим все три.
2.3 Классификация искусственных нейронных сетей
Искусственная нейронная сеть в общем случае характеризуется следующими параметрами:
o Адаптивная обучаемость. В контексте искусственной нейронной сети обучаемость означает, что сеть может усваивать различные варианты поведения в зависимости от того. Какие данные поступают на ее вход.
Вместо того чтобы диктовать сети, как она должна реагировать на каждую порцию данных (как это было бы в случае обычного программирования), сеть сама находит сходства и различия в поступающих данных.
Обратите внимание
По мере поступления новых данных обучение продолжается, и поведение сети изменяется.
o Самоорганизация. По мере того как данные поступают на вход сети, сеть имеет возможность изменять весовые коэффициенты тех или иных соединений. Тем самым, по мере поступления новых данных, практически изменяется структура сети. Эффективность самоорганизации сети зависит от начальной структуры соединений и выбранного в качестве математической модели алгоритма обучения (тренинга)
o Устойчивость к ошибкам. Искусственная нейронная сеть умеет выделять из потока данных важные свойства и усиливать их, при этом слабо реагируя на случайные, искаженные или совершенно новые данные (свойства). Таким образом, данные, не несущие в себе повторяющихся закономерностей (другими словами, помехи), просто отбрасываются нейронной сетью. Обеспечивая тем самым устойчивость к ошибкам.
o Работа в режиме реального времени и параллельная обработка информации. Эти преимущества нейронных сетей проявляются только в промышленном исполнении (когда каждый нейрон действительно представляет собой отдельный процессор) и не могут быть получены при программной эмуляции нейронов.
Объединенные (путем передачи сигналов с выходов одних искусственных нейронов на входы других) между собой нейроны образуют искусственную нейронную сеть (ИНС).
Существует много вариантов построения ИНС. Для их классификации используются следующие основные критерии:
1. тип нейронов, составляющих сеть;
2. количество слоев нейронов в сети;
3. направление передачи сигналов в сети;
4. вид обучающих выборок ;
5. назначение сети.
Сеть, состоящая целиком из нейронов одного типа, называется однородной, если же в ней комбинируются слои нейронов разного типа, то она — гибридная.
Сеть, все нейроны которой расположены в одной “плоскости” (т.е. отсутствует хотя бы одна непосредственная связь выхода одного нейрона со входом другого), называется однослойной, иначе она — многослойная.
Важно
Сеть называется однонаправленной, если в ней отсутствуют обратные связи (т.е. нет передачи сигнала с последующих слоев на предыдущие). Сеть с обратными связями называется рекуррентной.
Если для обучения сети используется стратегия с учителем и , то сеть называется гетероассоциативной. Если же , то сеть — автоассоциативна.[3]
Основными признаками для классификации искусственных нейронных сетей являются архитектура и связанный с ней алгоритм обучения. По этим признакам искусственные нейронные сети можно классифицировать так, как это показано на рис 21.
Рис. 21. Классификация нейронных сетей[1]
В этой классификации можно отметить несколько моментов.
o Обучение с учителем – класс искусственных нейронных сетей, для которого заранее известен диапазон выходных данных. В случае, когда после преобразования входных данных и получения выходных данных последние не укладываются в заранее заданные диапазон значений, нейронная сеть получает сигналы обратной связи и корректирует свою структуру с целью уменьшения ошибки.
Пример. При распознавании изображений оператор (человек или электронное устройство) сообщает нейронной сети, правильно или нет, она распознала изображение.
o Обучение без учителя – класс искусственных нейронных сетей, для которого диапазон выходных значений не задан и обучение сети проводится только на основании закономерностей, обнаруженных во входных сигналах.
o Многослойный перцептрон – искусственная нейронная сеть, состоящая из
· входного слоя нейронов, на которые поступают входные сигналы;
· выходного слоя нейронов, передающего выходные сигналы на интерфейс пользователя;
· скрытых слоев нейронов, расположенных между входным и выходным слоями;
· механизма (или алгоритма ) обратного распространения, обеспечивающего при наступлении ошибки ( несовпадении выходного сигнала с шаблоном) последовательную корректировку всех весовых коэффициентов связей, начиная с ближнего к выходному скрытого слоя и заканчивая входным слоем, с целью устранения этой ошибки.
o Сеть с радиально-базисной функцией – искусственная нейронная сеть, имеющая, кроме входного и выходного, один скрытый слой и использующая в качестве активационной функции нейронов скрытого слоя радиально-базисную функцию(РБФ), которая в общем виде выглядит так:
(16)
o Байесовская сеть – искусственная нейронная сеть, использующая в качестве математической модели сеть Байеса, связывающую между собой множество переменных (весовых коэффициентов) и их вероятностных зависимостей (активационных функций).
Совет
o Самоорганизующиеся карты Кохонена – искусственные нейронные сети, осуществляющие последовательное (по мере обучения) группирование сходных данных в плоской системе координат таким образом, что к завершению обучения узлы, содержащие сходные данные, располагаются геометрически в непосредственной близости друг от друга. Данный подход позволяет эффективно выделить главные данные. подавив случайные шумы и ошибки.
o Сети на основе адаптивной теории резонанса (ART-сети) были созданы специально для решения задач классификации.
В них заложено сразу два дихотомически противоположных принципа: во-первых, сеть должна самомодифицироваться в ответ на каждый входной сигнал; во-вторых сеть должна сохранять знания, а значит, быть стабильной.
Решение заключается в нахождении точки равновесия между требованиями пластичности и стабильности сети.
2.4 Достоинства и недостатки нейронных сетей
К достоинствам искусственных нейронных сетей можно отнести:
§ Возможность решения задач, которые не решаются никакими другими методами;
§ Самообучение;
§ Получение результатов в режиме реального времени;
§ «креативность»;
§ Создание новых знаний внутри сети в процессе переработки входных данных.
Недостатки искусственных нейронных сетей:
§ Сравнительная дороговизна аппаратной реализации;
§ Трудность тиражирования накопленных знаний;
§ Для больших сетей невозможность заранее даже приблизительно оценить время обучения сети.
Искусственные нейронные сети хорошо подходят для решения задач:
§ С большими массивами входных данных;
§ С неизвестным алгоритмом. Но большим количеством конкретных примеров решения;
§ С большим количеством шумов;
§ С недостаточностью или, Наоборот, избыточностью данных.
Искусственные нейронные сети могут эффективно решать задачи распознавания изображений, классификации, оптимизации или прогнозирования. Более конкретно такими задачами являются: