Искусственные нейронные сети — это попытка людей воссоздать нечто уникальное, что было сотворено самой природой.

Нейронные сети в природе

Мозг животных всегда удивлял учёных. Даже у таких маленьких существ, как попугаи, он проявляет поразительные способности, которые намного превосходят возможности цифровых компьютеров с их огромными электронными схемами и объёмами памяти. При этом эти компьютеры работают на частотах, которые невозможно достичь в живом мозге из плоти и крови.

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


Такая работа мозга обеспечивается нейронами. Нейроны это клетки, из которых состоит головной мозг. Вот общее отображение нейронов и их взаимосвязи.

искусственные-нейронные-сети-1

Существуют различны формы нейронов. Но не смотря на различия форм, все они передают электрические сигналы друг другу от дендритов через аксоны до терминалей и далее дендритам другого нейрона. Многие дендриты принимают сигналы от других нейронов через синаптическую щель посредством некоторых химических веществ. Эти вещества называют нейромедиаторами.

Действие нейромедиатора изменяет входящий сигнал способом, аналогичным действию весов в искусственной нейронной сети. Количество нейромедиатора в синаптической щели ограничено. Но чем больше контактов между аксоном одного нейрона и дендритами другого, тем большее количество нейромедиатора выделяется, а значит тем сильнее будет сигнал. Нейрон, принимает сигналы разной силы и частоты. Нейрон «собирает» входящие сигналы. Когда общая сила сигналов превышает определенный порог, нейрон генерирует свой сигнал, который передаётся по аксону другим клеткам. Именно благодаря тако­му механизму человек воспринимает свет, звук, прикосновение, тепло и т.п.

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

  1. Искусственный нейрон принимает множество сигналов.
  2. Сигналы могут быть изменены. Эти изменения вызваны весами в принимающей системе.
  3. Искусственный нейрон суммирует взвешенные входные данные.
  4. Искусственный нейрон передает единственный выходной сигнал.
  5. Распределение памяти.
    • Долговременная память находится в синапсах нейронов или весах.
    • Кратковременная память соответствует сигналам, посылаемым нейронами.
  6. Сила сигналов может изменяться в зависимости от опыта. То есть в процессе обучения нейросети меняются значения весов.

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

Во-вторых, мы способны переносить повреждения самой нервной системы. Люди рождаются со 100 миллиардами нейронов. Большинство из них находятся в мозге, и многие из них не заменяются после своей смерти. Несмотря на постоянную потерю нейронов, мы продолжаем учиться. Иногда другие нейроны могут брать на себя функции поврежденных клеток. Аналогичным образом искусственные нейронные сети могут быть сконструированы таким образом, чтобы быть нечувствительными к небольшим повреждениям сети, и сеть может быть переобучена в случаях значительного повреждения (например, потери данных и некоторых соединений).

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

Зачем нужны нейронные сети?


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

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


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

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

Один из многих примеров применения нейронных сетей в медицине был разработан Андерсоном и соавторами в середине 1980-х годов. Идея, лежащая в основе этого приложения, заключается в обучении нейронной сети для хранения большого количества медицинских записей, каждая из которых содержит информацию о симптомах, диагнозе и лечении в конкретном случае. После обучения сети могут быть представлены входные данные, состоящие из набора симптомов; затем она найдет полный сохраненный шаблон, который представляет собой «наилучший» диагноз и лечение.

Искусственные нейронные сети

Что же такое искусственные нейронные сети? Искусственные нейронные сети — это системы обработки информации. Искусственные нейронные сети характеризуются:

  1. Структурой связей между нейронами (называемой ее архитектурой). Нейронная сеть состоит из большого количества простых обрабатывающих элементов, называемых нейронами (единицами, ячейками или узлами).
  2. Методом определения весов для соединений (называемым алгоритмом обучения). Каждый нейрон связан с другими нейронами посредством направленных каналов связи, каждый из которых имеет соответствующий вес.
  3. Функцией активации. Эта функция получает данные из входящих связей и генерирует вы­ходные данные. Обычно нейрон отправляет эти данные другим нейронам.

Например, рассмотрим нейрон Y, который получает входные сигналы от нейронов X1 , X2 и X3 .

искусственные-нейронные-сети-2

Веса соединений, выходящих из X1 , X2 и X3 для нейрона Y равны w. Для нейрона Y сумма взвешенных сигналов от нейронов X1, X2 и X3, равна:

искусственные-нейронные-сети-3

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

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

Сейчас же в качестве функции активации используем сигмоидальную функцию.

искусственные-нейронные-сети-4



Теперь предположим далее, что нейрон Y соединен с нейронами Z1 и Z2 с весами v1 и v2 соответственно.

искусственные-нейронные-сети-5

Нейрон Y отправляет свой сигнал y к каждому из этих блоков. Однако, как правило, значения, которые получают нейроны Z1 и Z2, будут отличаться, поскольку каждый сигнал масштабируется на соответствующий вес, v1 или v2. В типичной сети активации нейронов Z1 и Z2 будут зависеть от входных данных от нескольких или даже многих нейронов, а не только от одного, как показано в этом простом примере.
Хотя нейронная сеть в этом примере довольно проста, наличие скрытого модуля в сочетании с нелинейной функцией активации позволяет ей решать гораздо больше задач, чем сети, состоящей только из блоков ввода и вывода. С другой стороны, обучение сети со скрытыми единицами измерения становится более сложным процессом, так как требуется найти оптимальные значения для весов.

Подготовка к созданию библиотеки искусственной нейронной сети

По мере знакомства с нейронными сетями будет создаваться соответствующая библиотека. Язык программирования MQL5. Эту библиотеку можно будет с легкостью перевести в язык MQL4 который используется в торговом терминале Metatrader 4.

Давайте определимся со структурой проекта. В редакторе «MetaEditor» вы можете создать новый проект или же в папке «MQL5/Include» создать любую папку, где он разместиться.

искусственные-нейронные-сети-6

Структура проекта будет такой:

искусственные-нейронные-сети-7
  • Headers — в этой папке находятся все заголовочные файлы (.mqh)
    • Defines — это папка для файлов с прописанными константами
    • Enums — файлы со всеми используемыми перечислениями находятся здесь
    • Functions — эта папка для файлов с дополнительным набором функций
    • Modules — папка, в которой находятся все используемые классы(объекты)
      • Array — стандартная библиотека MetaEditor для работы с массивом объектов
      • Net — библиотека необходимая для создания нейронной сети
        • Activation — классы с функциями активации
        • Connection — классы-имитаторы нейронных связей
        • Layer — классы-слои нейронной сети
        • Neuron — класс-имитатор нейрона
      • Prototype — в этой папке находятся предшественники выше описанных классов
  • Sources — папка где будут храниться примеры использования нейронной сети.

Возможно эта структура будет дополнена в будущем. Ну а пока мы переходим к созданию свой собственной нейронной сети.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует файлы cookie, чтобы предложить вам лучший опыт просмотра. Посещая этот веб-сайт, вы соглашаетесь с использованием нами файлов cookie.