В чем заключается идея оптимизации метода оптимизации сети?
=============================================================

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

  

Задача: Оптимизация в большинстве случаев выполняется с помощью итераций преобразования F(X)=y, которое берет приближение решения x и возвращает лучшее приближение y (например, ищет минимум энергии E).   

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

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

 Что-то вы сбились с пути. Начали правильно, потом вас занесло.  

На этапе обучения нейросети мы действительно минимизируем некоторую функцию F(x). Эта минимизация заключается в подборе параметров этой функции - w.   

  

Для того, что-бы подобрать эти параметры можно пойти разными путями: от простого "лобового" перебора всех возможных их значений (естественно - абсолютно неэффективный путь) до методов основанных на идеи градиентного спуска. Этот класс методов - очень грубо - заключается в следующем. Находясь в некоторой точке пытается путем просчета значений функции при маленьких изменениях указанного параметра понять, в каком направлении надо действительно изменить параметры, что бы продвинуться к точке оптимума. Обратите внимание, в данном - **минимизируем по w, а не по х.** И ни о каком "сеть учит сеть речи не идет".  

  

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

backpropagation же это просто способ "обратного переноса" ошибки - от ошибки, зафиксированной на выходе обучаемой нейросети к подбираемым значениям w.  

Опять таки, о " оптимизации метода оптимизации сети" речи не идет.  

  

То что вы задали такой вопрос - это очень хорошо. Плохо то, что такое искаженное представление возникает доcтаточно часто. Как правило - у тех, кто пытается сразу "надкусить" нейронную сеть, вместо того, что-бы пойти нормальным путем - разобраться с тем что такое оптимизация, как она реализуется численно, как применяется и наконец, после всего этого - как используется именно в нейронных сетях. Увы, издержки попыток обмануть нормальный путь (само)образования в области Machine Learning. 

 Для просто представим задачу в матричной форме.  

Даны матрицы X,Y.  

Существует некоторая функция F с матрицей параметров W, которая преобразует X->Y.  

В простейшем случае функция F(X,W)=X*W=Y.   

Было бы круто из матрицы весов W получить вектор весов w, что бы иметь возможность преобразовать произвольный вектор x->y для одного датасета.  

Остаётся вопрос преобразования W->w. Этим как раз и занимается функция обучения H(W)=w.  

Обычно она индуктивна: на нулевом шаге выбирается исходный вектор весов w, затем каждую итерацию к нему прибавляется -k*L(w*x;y), где k - коэффициент скорости обучения, L(a,b) - функция потерь между a и b.   

Получаем H(W)={H[0]=w[0];H[i]=w[i-1]-k*L(w[i-1]*x[i];y[i])}.  

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