Что означает, что алгоритм сходится?

12

Я продолжаю сталкиваться с этим термином, читая об обучении с подкреплением, например, в этом предложении:

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

http://reinforcementlearning.ai-depot.com/

или здесь:

Было доказано, что описанный выше алгоритм TD для любой фиксированной политики Pi сходится к VPi.

http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node62.html

Я понимаю, что слово сходится, что это означает, что несколько вещей собираются вместе в одну точку, но как одна вещь (алгоритм) может это сделать?

морская звезда
источник
7
Говорят, что в случае итерационных алгоритмов они сходятся, когда их подходящие решения для каждой итерации стремятся все ближе и ближе к желаемому решению.
MetaFight
6
Это может помочь вспомнить, что предел в математике также считается сходящимся или расходящимся, даже если «предел» - это «одна вещь».
Ixrec
@Ixrec: «предел» был назван в честь значения, которое он / расходится в / из. Например, как в «он сходится к 1», что означает «никогда не бывает выше 1», что означает «1 - это максимальная результирующая ценность» и, таким образом, «предел» ваших ожиданий. Отсюда единственное число.
Флейтер

Ответы:

14

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

В некоторых случаях алгоритм не будет сходиться, имея выходные данные, которые всегда изменяются на некоторое количество. Он может даже расходиться, когда его продукция будет подвергаться все большим и большим колебаниям, никогда не достигая полезного результата. Точнее, независимо от того, как долго вы продолжите, значение функции никогда не будет устанавливаться в диапазоне какого-либо «окончательного» значения.

Фраза «сходится к глобальному оптимуму» в вашем первом предложении является ссылкой на алгоритмы, которые могут сходиться, но не на «оптимальное» значение (например, алгоритм подъема на холм, который, в зависимости от функции и начальных условий, может сходиться к локальный максимум, никогда не достигший глобального максимума).

Даниэль Гриском
источник
3

Что такое сходимость, в общем

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

Формальное определение выглядит примерно так:

Учитывая (бесконечную) последовательность действительных чисел, X0, X1, X2, ... Xn ...мы говорим, что Xn converges to a given number Lесли для каждой положительной ошибки, которую вы думаете, есть Xmтакая, что каждый Xnпоследующий элемент Xmотличается от Lэтой ошибки меньше.

Пример:

Представьте себе последовательность как таковую:

  • X0 = 1
  • X1 = 0,1
  • Х2 = 0,01
  • X3 = 0,001
  • Х4 = 0,0001
  • ...
  • Xn = 1 / (10 ^ n)

Сходится ли Xn к нулю? Да! Зачем?

Подумайте об ошибке E (например, E = 0.0025). Есть ли в последовательности элемент, после которого каждый элемент находится ниже 0.025? Да! Этот элемент есть X3 = 0.001. После Х2 каждый XNниже 0.0025. Можно ли это сделать для каждого E> 0? Да. Для каждой положительной ошибки, которую мы выбираем, мы можем видеть, сколько нулей у нее есть до ее первой десятичной запятой, и последовательность будет ниже, чем начиная с элемента, имеющего такое же количество нулей.

Это значит что Xn = 1/(10^5) converges to 0. Как и в «он может становиться все ближе и ближе к нулю» столько, сколько мы хотим.


Что означает, что алгоритм сходится?

«С технической точки зрения» сходится не алгоритм, а значение, которым алгоритм манипулирует или итерирует. Например, допустим, мы пишем алгоритм, который печатает все цифры PI.

Алгоритм начинает печатать числа как:

  • Х0 = 3,14
  • X1 = 3,141
  • Х2 = 3,1415
  • Х3 = 3,14159
  • ...

Мы могли бы спросить себя: алгоритм печатает числа, которые становятся все ближе к PI? Другими словами, X0, X1, ... XN ...сходится ли последовательность, которую печатает наш алгоритм, к PI?

Если так, то мы говорим, что наш алгоритм сходится к PI.


Мы обычно заинтересованы в доказательстве правильности алгоритма.

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

В общем, алгоритмы имеют то, что мы называем метриками . Метрика - это число, которое мы даем данному результату, который выдает алгоритм. Например, в итерационных алгоритмах AI / Machine Learning для нас очень распространено отслеживать «ошибку», которую алгоритм генерирует на основе входных данных. Эта ошибка является метрикой.

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

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

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

Кроме того, имейте в виду, что утверждение, что алгоритм сходится, требует доказательства (как мы сделали для нашего примера 0,001, 0,0001, ...,).


Как пример, классификатор

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

  • (1, нечетно)
  • (2, даже)
  • (3, нечетно)
  • (77, нечетно)
  • (4, даже)

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

Итак, если наш алгоритм выплевывает следующее:

  • (1, даже) // неправильно
  • (2, даже)
  • (3, даже) // неправильно
  • (Даже 77) // неправильно
  • (4, даже)

Наш показатель ошибки будет 3/5 = 0.6. Теперь допустим, что мы снова запустили алгоритм и теперь он выплевывает:

  • (1, даже) // неправильно
  • (2, даже)
  • (3, нечетно)
  • (77, нечетно)
  • (4, даже)

Наш показатель ошибки будет 1/5 = 0.2.

Допустим, он запускается все больше и больше, и наша последовательность ошибок выглядит примерно так:

0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....

Итак, главный вопрос: наш алгоритм когда-нибудь будет равен нулю? Будет ли оно когда-либо сходиться к нулю? Будет ли каждый наш алгоритм сходиться? Можем ли мы доказать, что в конечном итоге все получится правильно (или как можно ближе к правильному)?

Надеюсь, что так :)

Альбукерке
источник