Понятие нейронной сети, свойства и варианты программной реализации



Нейронные сети - математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма. [6]

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

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

Построение нейронных сетей можно условно разделить на 2 больших этапа:

1. Выбор типа (архитектуры) нейронной сети.

2. Подбор весов (обучение) нейронной сети

Что касается первого этапа, то во время него происходит вся основная работа создателя: определяется какие нейроны необходимо использовать в контексте поставленной задаче (число входящих сигналов, передаточные функции); выбирается способ соединения нейронов между собой; принимается решение что взять в качестве входов и выходов нейронной сети; определяется топология данной сети (количество внутренних слоев) и т.д. Не для каждой задачи есть смысл создания уникального набора параметров, т.к. существует множество уже просчитанных типов сетей, топологий и их параметров.

Уже несколько раз упоминались слои нейронной сети, поэтому стоит сказать и о них пару слов. В 1981 году Дэвид Хьюбел и ТорстенВизел получили Нобелевскую премию по физиологии и медицине за то, что открыли механизм действия нейронов в зрительной зоне коры головного мозга. Они показали, что в скрытых нейронных слоях последовательно извлекаются наиболее информативные свойства визуальных сигналов (например, резкие смены яркости или цветов, свидетельствующие о границах объекта), а потом складывают их в единое целое (собственно, объекты). [7] И так как по своей сути искусственные нейронные сети - это попытка смоделировать настоящий физиологический процесс, то данное открытие послужило новому витку в развитии машинных нейросетей, и служит прекрасным примером для понимания слоев системы. Всегда существует, как минимум, два слоя: входной и выходной. Если попытаться описать их с точки зрения человеческих глаз, то входной слой - это сенсорная система (глазные яблоки) получающая сигналы из внешнего мира и кодирующая их в удобную для прочтения форму, а выходной слой - это эффекторная система, посылающая сигналы "устройствам вывода данных". Помимо них в сети могут быть скрытые (внутренние) слои, на которых находятся нейроны не получающие ни информации извне системы, ни выдающие ее, на этих слоях нейроны взаимодействующие только с другими нейронами (Рис.1).

Рис. 1 Пути синапсов от глазного яблока

Обучить нейронную сеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы "А", мы спрашиваем его: "Какая это буква?" Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: "Это буква А". Ребенок запоминает этот пример вместе с верным ответом, то есть в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все 33 буквы будут твердо запомнены. Такой процесс называют "обучение с учителем".

При обучении нейронной сети мы действуем совершенно аналогично. У нас имеется некоторая база данных, содержащая примеры (например набор рукописных изображений букв). Предъявляя изображение буквы "А" на вход нейронной сети, мы получаем от нее некоторый ответ, не обязательно верный. Нам известен и верный (желаемый) ответ - в данном случае нам хотелось бы, чтобы на выходе нейронной сети с меткой "А" уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1, 0, 0,.), где 1 стоит на выходе с меткой "А", а 0 - на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем 33 числа - вектор ошибки. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять нейронной сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте - тренировку.

Оказывается, что после многократного предъявления примеров веса нейронной сети стабилизируются, причем нейронная сеть дает правильные ответы на все (или почти все) примеры из базы данных. В таком случае говорят, что "нейронная сеть выучила все примеры", "нейронная сеть обучена", или "нейронная сеть натренирована". В программных реализациях можно видеть, что в процессе обучения величина ошибки (сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда величина ошибки достигает нуля или приемлемого малого уровня, тренировку останавливают, а полученную нейронную сеть считают натренированной и готовой к применению на новых данных.

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

Конечным этапом является применение нейронной сети. После того, как нейронная сеть обучена, мы можем применять ее для решения полезных задач. Важнейшая особенность человеческого мозга состоит в том, что, однажды обучившись определенному процессу, он может верно действовать и в тех ситуациях, в которых он не бывал в процессе обучения. Например, мы можем читать почти любой почерк, даже если видим его первый раз в жизни. Так же и нейронная сеть, грамотным образом обученная, может с большой вероятностью правильно реагировать на новые, не предъявленные ей ранее данные. Например, мы можем нарисовать букву "А" другим почерком, а затем предложить нашей нейронной сети классифицировать новое изображение. Веса обученной нейронной сети хранят достаточно много информации о сходстве и различиях букв, поэтому можно рассчитывать на правильный ответ и для нового варианта изображения. [8]

 


Дата добавления: 2018-08-06; просмотров: 258; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!