Обсуждение статьи "Многослойный перцептрон и алгоритм обратного распространения ошибки"

 

Опубликована статья Многослойный перцептрон и алгоритм обратного распространения ошибки:

В последнее время, с ростом популярности этих двух методов на Matlab, R, Python, C ++ и т.д., было разработано много библиотек, которые получают обучающий набор в качестве входа и автоматически создают соответствующую нейронную сеть для предполагаемой проблемы. Мы собираемся понять, как работает базовый тип нейронной сети (перцептрон с одним нейроном и многослойный перцептрон), а также захватывающий алгоритм, который отвечает за обучение сети (градиентный спуск и обратное распространение). Эти сетевые модели будут основой для более сложных моделей, существующих на сегодняшний день.

Градиентный спуск — это процесс минимизации функции в направлении градиента функции стоимости.

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


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

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

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

Автор: Jonathan Pereira

 
Gostei muito do seu artigo, foi muito esclarecedor sobre os fundamentos do funcionamento de uma rede neural. Eu venho usando redes neurais para o desenvolvimento de eas a muito tempo, sempre aproveitando os critérios publicados nos artigos mas sem entender como eles funcionam.
 
Великолепный
 
Великолепно... давным-давно я разработал алгоритм распознавания образов, основанный на статистической математике в грубой форме... эти идеи оживили его, и теперь он стал намного точнее, чем когда-либо. Огромное спасибо!
 
Thank you, Jonathan! It is written in detail and interesting.
 

Пожалуйста, объясните функцию seed() и ее использование в коде, так как я не смог найти в коде, где она используется... (кроме использования внутри функции OnStart(), но ее можно закомментировать и там, без проблем и сбоев).

Хотя, если я меняю номер семени с 42 на любой другой, то многое в обучении и результатах становится другим.


Как так получается: комментирование функции seed() вообще не влияет на результаты, а изменение ее начального значения влияет на все результаты?


Наверняка я что-то упускаю, так как не смог понять эти соотношения и их влияние на результаты. Есть ли что-то особенное в числе "42"?


Заранее спасибо

 
rrocchi:

......

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


Использование числа 42 - это шутка, которая возникла потому, что число 42 - это атомная масса кальция, 42 - первичное число, псевдоидеал, а также высший балл на олимпиаде по математике, Если сложить лист бумаги формата А4 пополам и снова сложить 42 раза, то с помощью дополнительных мер можно будет добраться до Луны (по крайней мере, так говорят, ккккк), Кембриджские астрономы обнаружили, что 42 - это значение важной научной константы - той, которая определяет возраст Вселенной. И самое интересное: в 1979 году Дуглас Адамс, автор "Путеводителя автостопщика по Галактике", описывает, как инопланетная раса программирует компьютер под названием Deep Thought, чтобы тот дал окончательный ответ на вопрос "Жизнь, Вселенная и все остальное". После семи с половиной миллионов сложных уравнений и трудных вычислений он возвращает ответ - 42, но почему 42? Дуглас Адамс однажды объяснил, откуда взялось это число:

"Ответ очень прост. Это была шутка. Это должно было быть число, обычное, маленькое, и я выбрал именно его". Двоичные представления, основание 13, тибетские обезьяны - все это совершенно бессмысленно. Я сел за стол, посмотрел на сад, подумал: "42 подойдет" и написал. Конец истории".


Эти и другие игры вокруг числа 42 заставляют нас постоянно выбирать его, когда мы собираемся задать значение для семени, но на самом деле это может быть любое число.

 
Спасибо, Джонатан, замечательная статья
 

Привет, Джонатан,

Я с удовольствием прочитал вашу статью. Она очень помогла мне продвинуться в реализации нейронной сети на MQL5.

Очень хорошая работа! Пожалуйста, продолжайте в том же духе!
 
Привет, мой друг.
Прежде всего... Большое спасибо! Отличная статья.
Мне кажется, нам не хватает файла: Util.mqh.
В нем, вероятно, есть функция Random.
Не могли бы вы приложить его? Или описать случайную функцию в нем.
Еще раз спасибо. Я очень внимательно изучаю вашу статью.