Типичный статья фаната Котлина который даже не знает о всех его преимуществах и думает что его сила только в украшательствах и сокращении кода. Крайне печально.
В большинстве случаев функция не будет на столько волнистой. Однако это не отменяет того факта, что мы можем случайной инициализацией весов поставить точку отсчета в заранее проигрышную позицию. Как и показано у вас на графике, начав ГС с точки в пересечении красных линий, мы никогда не попадем в глобальный минимум, который находиться по другую сторону склона. В таком случае помогает реинициализация весов или выбор другого алгоритма. Надо помнить, что градиентный спуск это самый примитивный алгоритм и далеко не самый продуктивный.
Вы не понимаете сути градиентного спуска. Никакого перебора мы не делаем, следуя по градиенту мы просто будем скатываться в низину. Глобальный минимум — это обязательное условие и мы не считаем, что он нужный или нет. Алгоритм сам его найдет, если все параметры подобраны верно. Про момент написано в статье, прочитайте внимательнее.
Дельта это просто обозначение параметра. За ним нет никакого глубокого значения. Некоторые НС вообще используют другой алгоритм, в котором нет такого параметра как дельта.
Вы абсолютно правы! Извиняюсь, по своей невнимательности неправильно подставил значения в формулу. На конечный результат это конечно не сильно повлияло, но в таком случае бы НС врядли бы смогла найти решение.
Мы вычисляем ошибку после каждой итерации и в соответствии с этим меняем веса. Такой случай, что каждый элемент тянет в свою сторону бывает, но в конечном случае это редко приводит к несходимости, разве что в том случае, когда элементы выборки противоречат друг другу.
Все правильно, ошибка вычисляется у выходного нейрона и «записывается» в дельту, а все остальные нейроны наследуют эту ошибку из цепочки дельт. На счет 2 ошибок. Ошибка на самом деле одна. Она формируется после каждой итерации, просто в конце эпохи ошибка имеет большее значение так как она учитывает проход по всей выборке данных.
Рад что вам понравилась статья. На счет функции, это не совсем правильное предположение. НС это не функция и не искусственный интеллект. Вам так показалось, потому что — это самый примитивный пример, однако, если вы посмотрите на рекуррентные или многослойные сети это уже не будет казаться так просто. Я думаю вам все станет понятно в следующей статье, где я более подробно опишу работу НС.
Я написал про Java и Android, чтобы читателю было понятно, в каком направлении будет развиваться тематика моих статей. А на счет дробления, советую перечитать заголовок статьи. Для тех, кто только начинает изучение НН и не имеет при себе никакого опыта в этой сфере, данного материала будет более чем достаточно, чтобы войти в тему и попутно не расплавить себе мозги.
В таком случае у вас два варианта. Первый — это использовать другую функцию активации, например ReLU, как было подмечено выше в комментариях. Либо, если вы только начинаете разбираться в нейронных сетях, то вам просто нужно найти способ привести ваши значения к нужному диапазону или нормализовать их. Например, когда я писал нейронную сеть для курса акций, я бы мог подавать на вход текущую цену и ждать в ответ другую. Но цены акций могут принимать различные значения. Поэтому, вместо того чтобы подавать на вход цену акций, я вычисляю разницу цен и получаю определенный процент от -100% до +100% или -1 до +1. И нет проблем :)
Таких статей бесчетное количество. Например https://academy.realm.io/posts/oredev-jake-wharton-kotlin-advancing-android-dev/
Дельта это просто обозначение параметра. За ним нет никакого глубокого значения. Некоторые НС вообще используют другой алгоритм, в котором нет такого параметра как дельта.