Обсуждение статьи "Нейросети - это просто"

 

Опубликована статья Нейросети - это просто:

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

В Википедии дано такое определение нейросети:

"Иску́сственная нейро́нная се́ть — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма."

Т.е. искусственная нейронная сеть — это некая сущность, состоящая из массива искусственных нейронов с организованной взаимосвязью между ними. При этом организация взаимосвязей между нейронами создана по образу и подобию процессов в мозгу живого организма.

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

Пример простой нейросети

Автор: Dmitriy Gizlyk

 
Автор молодец!),
что реализовал сеть, это должен сделать, каждый уважающий себя Data Scientist...

Жаль, что в статье не было, ни одного примера, который бы показал работоспособность..., ни графиков обучения..., а только теория (вода) из Википедии и код.

Код, без наглядных примеров его работы, это тоже вода...

Вывод: статья ради статьи..., а так хотелось, что-то интересное увидеть, такая и более новые версии нейронок уже давно реализованы, причем, как на MQL4, так и на MQL5, C# и т.д.
 

1 - Благодарю за статью, увлекла меня на ближайшее свободное время, а как выдастся денек свободный - буду глубже в теме разбираться.

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

3 - вопрос. Веса сетки не должны равняться в сумме единице судя по всему верно ? 

 
еще вопрос что такое neurotNam -  методе создания нейронов в слое ? он не где не объявлен и не ясна логика от чего начальное значение нейрона равняется остатку от деления на 3 минус 1 ? 
 
Andrey Azatskiy:

2 - Реализованная сеть будет работать очень медленно, потому что она реализована вся через объекты..., по крайне мере веса необходимо реализовать через простые массивы. Плюс ко всему видно, что в проекте сети с точки зрения ООП есть ошибки, именно в самом проекте, из-за этого так много объектов получилось.

3 - Веса сети могут иметь любые значения, ни чем не ограниченные, при близких к нулевым значениям они снижают свое влияние..

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

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

 

Daniil Kurmyshev:

2 - Реализованная сеть будет работать очень медленно, потому что она реализована вся через объекты..., по крайне мере веса необходимо реализовать через простые массивы. Плюс ко всему видно, что в проекте сети с точки зрения ООП есть ошибки, именно в самом проекте, из-за этого так много объектов получилось.

не будет потери производительности, я тестировал, и можно поискать в сообщениях админа Рената, он показывал, что ООП в MQL5 работает также быстро как процедурный стиль

по статье, изложение хорошее, но материал уже освещался много раз в статьях на этом ресурсе, хотя возможно это будет полезным

 

"Если мы хотим подать на вход нейронной сети некий массив данных из 10 элементов, то входной слой сети должен содержать 10 нейронов. Это позволит принять весь массив данных. Избыточные входные нейроны будут лишь балластом."

нет, не должен, может быть достаточно одного

 

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

что такое "5 почему" и причем здесь 4 слоя? Посмотрел, на этот вопрос ответит простое дерево решений. Универсальным аппроксиматором является НС из 2-х слоев, которая ответит на любое кол-во "почему" :) Остальные слои используются, в основном, для предобработки данных в сложных конструкциях. Например, сжать изображение из большого кол-ва пикселей, а затем распознать его.

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

Если на выходе не простой сумматор, то ответ предполагается вероятностный

В код побоялся смотреть, т.к. полно качественных реализаций в интернете ))

 

Ошибки компиляции.


 
Статья интересная. Можете обьяснить "на пальцах":

1. Что есть нейрон внутри? 
2. Что есть связка нейронов? (В смысле, связка между двумя нейронами - нейроном слоя 1 и нейроном слоя 2).

Именно эти вопросы я до конца из статьи не понял. 

Спасибо.
 
Статья, часть вторая - "как устроен искусственный нейрон". Поправьте, если ошибаюсь.

Нейрон состоит из нескольких функций:
     
     1. Первая умножает входное значение на весовой коффициент.
      2. Вторая суммирует полученные произведения.
      3. Третья вычисляет результирующее значение в функции активации. 

Слова понимаю, а смысла - нет.