10

Я немного интересовался нейронными сетями и думал об использовании одного в python для легкого проекта, который сравнивает различные методы минимизации во временной области (что является самым быстрым).Может ли нейронная сеть использоваться для нахождения минимума функций (a)?

Тогда я понял, что даже не знаю, подходит ли NN для минимизации. Как вы думаете?

+0

Я смотрел на сравнение сканирования массива грубой силы, имитированный отжиг и минимизацию Миграда, построенного из Minuit в корне. – physicsmichael

ответ

0

Нейронные сети являются классификаторами. Они разделяют два класса элементов данных. Они изучают это разделение (обычно) с помощью предварительно классифицированных элементов данных. Таким образом, я говорю: «Нет, если вы не сделаете большой разрыв после поломки.

+7

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

1

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

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

0

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

+0

Где я могу найти дополнительную информацию о машинах векторных состояний? –

+0

К сожалению, это была опечатка в мозге. Поддержка векторных машин - это то, что я пытался сказать. У меня нет более лучших ссылок, чем указала бы вам википедия. – chaos

5

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

+0

Если данные (обучение) имеют характерную форму, то это может оказаться хорошим методом, но это предположение ... – Alex

+2

Не уверен, что я последую за вами. –

+0

PSO (Оптимизация рога частиц) и ACO (Ant Colony Optimization) также являются вариантами для GA. – Levon

0

Фактически вы можете использовать NN, чтобы найти функцию минимум, но она будет работать лучше всего в сочетании с генетическими алгоритмами, указанными Erik.

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

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

Решения объединить 2 миров

  1. Получить приближенный результат генетических алгоритмов
  2. использования, что приводит найти более точный ответ, используя NN
3

обратного распространение работает по минимизируя ошибку. Однако вы можете свести к минимуму все, что захотите. Таким образом, вы можете использовать back-prop-подобные правила обновления, чтобы найти входы искусственной нейронной сети, которые минимизируют выход.

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

0

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

Пример:

You can train a 1 input 1 output NN to give output=sin(input) 

You can train it also give output=cos(input) which is derivative of sin() 

You get a minima/maxima of sin when you equate cos to zero. 

Scan for zero output while giving many values from input. 0=cos() -> minima of sin 

При достижении нулевого выхода, вы знаете, что входное значение минимумы функции.

Обучение принимает меньше, подметание для нуля занимает много времени.

0

Хотя это слишком поздно для автора этого вопроса. Возможно, кто-то хочет протестировать некоторые алгоритмы оптимизации, когда он читает это ...

Если вы работаете с регрессиями в машинном обучении (NN, SVM, множественная линейная регрессия, K ближайший сосед), и вы хотите минимизировать (максимизировать) ваша регрессионная функция, на самом деле это возможно, но эффективность таких алгоритмов зависит от сглаженности (шаг за шагом ... и т. д.) региона, в котором вы ищете.

Чтобы построить такое «машинное обучение» Регрессии "вы можете использовать scikit- learn. Вы должны тренироваться и проверять свой MLR Support Vector Regression. («подходит» метод)

SVR.fit(Sm_Data_X,Sm_Data_y) 

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

def fun(x): 
    return SVR.predict(x) 

Для оптимизации можно использовать scipiy.optimize.minimize. См. Примеры, следующие за ссылками doc.

Смежные вопросы