Задать вопрос
@salmon4788348

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

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

Задача: Оптимизация в большинстве случаев выполняется с помощью итераций преобразования F(X)=y, которое берет приближение решения x и возвращает лучшее приближение y (например, ищет минимум энергии E).
Предположим, что функция F параметризирована параметром w, например, это нейронная сеть с весами w. Подберём параметры w таким образом, чтобы скорость сходимости была максимальной. Т.е. мы оптимизируем метод оптимизации сети с помощью машинного обучения: сеть учит сеть.
Чтобы это делать нужно уметь считать производные высокого порядка от E, но на наше счастье проблема достаточна проста, чтобы это сделать.
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@dmshar
Что-то вы сбились с пути. Начали правильно, потом вас занесло.
На этапе обучения нейросети мы действительно минимизируем некоторую функцию F(x). Эта минимизация заключается в подборе параметров этой функции - w.

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

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

То что вы задали такой вопрос - это очень хорошо. Плохо то, что такое искаженное представление возникает доcтаточно часто. Как правило - у тех, кто пытается сразу "надкусить" нейронную сеть, вместо того, что-бы пойти нормальным путем - разобраться с тем что такое оптимизация, как она реализуется численно, как применяется и наконец, после всего этого - как используется именно в нейронных сетях. Увы, издержки попыток обмануть нормальный путь (само)образования в области Machine Learning.
Ответ написан
Комментировать
Griboks
@Griboks
Для просто представим задачу в матричной форме.
Даны матрицы 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), чтобы сходимость была максимальной (чтобы это не значило). Думаю, речь идёт о скорости сходимости, количестве итераций (шагов) обучения или алгоритмической операционной сложности.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы