Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Проблема с численной стабильностью
Я хочу оценить энтропию взвешенной суммы гауссиан (все матрицы ковариаций диагональны и равны), используя оценку из статьи "Estimating Mixture Entropy with Pairwise Distances" [2017].

$H_{kl} = d/2 - \sum_{i} c_{i} \ln \sum_{j} c_j N_{(\mu_j, \Sigma)}(\mu_i)$.

Проблема в том, что размерность гауссиан ~100, поэтому величина N_{(\mu_j, \Sigma)}(\mu_i)$ настолько мала, что дальнейшие вычисления теряют смысл, т.к. выходят за пределы машинной точности.

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

 Re: Проблема с численной стабильностью
Это она насколько мала что её логарифм выходит за пределы машинной точности? Чтоб получить логарифм можно использовать $\ln(a+b)=\ln(10^ka+10^kb)-k\ln(10)$, или что-то подобное.

 Re: Проблема с численной стабильностью
Аватара пользователя
Одно из слагаемых (для $i=j$) порядка единицы. Если есть меньшие его настолько, что прибавление их ничего не даёт (меньше машинной точности), то их можно отбрасывать.

 Re: Проблема с численной стабильностью
Евгений Машеров в сообщении #1417951 писал(а):
Если есть меньшие его настолько, что прибавление их ничего не даёт (меньше машинной точности), то их можно отбрасывать.
Вообще-то не всегда. Возможна ситуация, когда таких малых слагаемых много, и хотя каждое отдельное и можно было бы выбросить, их сумма оказывается уже вполне заметной и влияющей на результат.

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

 Re: Проблема с численной стабильностью
Есть и способы, не требующие сортировки:
Kahan summation
Pairwise summation (самый быстрый и недостаточно плох)

 Re: Проблема с численной стабильностью
arseniiv в сообщении #1417956 писал(а):
Есть и способы, не требующие сортировки:
Не совсем. Алгоритм Кэхэна плохо справляется с ситуацией, когда слагаемые различаются на много порядков. Каскадное суммирование лучше, но статистически - при неудачном разбиении результат может оказаться достаточно неточным. К тому же сортировка - это проблема в ситуации, когда величины слагаемых меняются случайным образом, а при подсчетах сумм рядов и т.п., как правило, можно без особых проблем понять, как нужно выбрать порядок суммирования.

 Re: Проблема с численной стабильностью
Аватара пользователя
Pphantom в сообщении #1417953 писал(а):
Возможна ситуация, когда таких малых слагаемых много, и хотя каждое отдельное и можно было бы выбросить, их сумма оказывается уже вполне заметной и влияющей на результат.


Возможна. Но в данном случае их порядка сотни.

 Re: Проблема с численной стабильностью
Евгений Машеров в сообщении #1417961 писал(а):
Возможна. Но в данном случае их порядка сотни.
Ок, но тогда неясно, в чем ТС видит проблему.

 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group