Nano Hash - криптовалюты, майнинг, программирование

Минимальный градиент, выдаваемый fmin_l_bfgs_b, не равен нулю.

Я использую fmin_l_bfgs_b для аппроксимации минимума функции. Проблема НЕ ограничена. Я использую «приблизительно_град» для численного получения минимума.

weights_sp_new, func_val, info_dict = fmin_l_bfgs_b(func_to_minimize, self.w_vectors[si][pj], 
                       args=(self.sigma_vector[si][pj], Y, X, E_step_results[si][pj]),
                       approx_grad=True, factr=10000000.0, pgtol=1e-05, epsilon=1e-04)

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

     information dictionary: {'nit': 180, 'funcalls': 4480, 'warnflag': 0, 
'task': b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH', 
    'grad': array([  1.69003327e+00,   2.29250366e+00,   1.55528930e+00,
                 9.84251656e-01,  -1.10133624e-02,   1.83795773e+00,
                 6.44715933e-01,   2.01643592e+00,   8.71323232e-01,
                 9.93009353e-01,   1.34615338e+00,   4.20859578e-04,
                -2.22691328e-01,  -2.13318804e-01,  -4.38475622e-01,
                 4.79004570e-01,  -4.11879746e-01,   1.71003313e+00])}


        information dictionary: {'nit': 0, 'funcalls': 20, 'warnflag': 0, 
'task': b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL', 
    'grad': array([  1.84672949e-20,   1.49550746e-20,   1.11115003e-20,
                 2.73908962e-20,   0.00000000e+00,   2.62916240e-20,
                 0.00000000e+00,   4.95859400e-20,   4.70618521e-20,
                 4.77249742e-20,   2.80864703e-20,   0.00000000e+00,
                 1.84975333e-21,   7.63125358e-21,   1.35733459e-20,
                 6.34943656e-21,   1.02743864e-20,   5.31287405e-20])}

        information dictionary: {'nit': 107, 'funcalls': 2460, 'warnflag': 0, 
'task': b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH', 
    'grad': array([ -3.09184019,  -0.70217764,   0.72096009,  -3.23745189,
                -1.18111435,  -4.13185742,   3.90762754,   2.28011806,
                -3.02289147,  -1.21219666,   1.80007832, -12.44630606,
                -1.59126124,   1.59139978,  -1.96677574,  -0.50837465,
                 1.20439043,  -1.58858602])}

        information dictionary: {'nit': 132, 'funcalls': 2980, 'warnflag': 0, 
'task': b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH', 
    'grad': array([ -8.56568098,  -9.39712794,  -8.82591339,  -8.61912864,
                -0.53956945,  -9.46679887,   0.89827947, -10.64991782,
                -6.53652169,  -7.34566878,  -8.98861319,   1.28335021,
                -2.39830071,  -1.2056133 ,  -0.81190425,  -1.3537686 ,
                -1.65028498,  -8.30791505])}

Вы можете видеть, что он успешно получает сходимость. Но градиент в минимуме не равен нулю. Я знаю, это означает, что я не получаю точного минимума. Можно спускаться дальше. Что мне теперь делать? Или я могу просто принять этот «приблизительный» минимум?


Ответы:


1

В предоставленных образцах есть два случая:

  1. второй запуск вашего алгоритма хорошо сошелся, b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL' и, как вы можете видеть,

    «Грапм»: массив ([1,84672949E-20, 1,49550746E-20, 1,11115003E-20, 2,73908962E-20, 0,00000000E+00, 2,62916240E-20, 0,000000E+00, 4,95859400E-20.706185555551E-+00, 4,95859400E-20. 20, 4.77249742E-20, 2,80864703E-20, 0,00000000E+00, 1,849753333E-21, 7,63125358E-21, 1,35733459E-20, 6,34943656E-21, 1,02743864E-20, 5,31287743656E-21, 1,02743864E-20, 5,31287747656E-21, 1,02743864E-20, 5,312877656.

    в основном равен нулю (с точностью до 20 цифр).

  2. Остальные случаи прекращены из-за отсутствия существенного изменения значения функции b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH', поэтому вы можете выполнить одно (или несколько) из следующих действий:

    • уменьшить factr параметр fmin_l_bfgs_b, из документов

      факт : число с плавающей запятой

      Итерация останавливается, когда (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} ‹= factr * eps, где eps — машинная точность. , который автоматически генерируется кодом. Типичные значения factr: 1e12 для низкой точности; 1e7 для средней точности; 10.0 для чрезвычайно высокой точности.

    • подумайте о своей функции, может ее можно упростить? Есть ли у него проблемы с плато (очень плоские поверхности) - если да, то, возможно, вы можете изменить определение, чтобы минимизировать эффект?

    • вычислить аналитический градиент (тем самым повысив точность)
    • измените epsilon, так как ваше числовое приближение может быть недостаточным
31.12.2015
  • Спасибо за ваши предложения. Но вы имеете в виду уменьшение параметра factr? Уменьшение фактора приводит к большей точности и приближению к минимуму? 31.12.2015
  • Да, извините за опечатку, я имел в виду уменьшение, так как это делает критерий остановки намного более жестким, поэтому он не остановится только потому, что функция сильно не меняется. 31.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..