2014 dxdy logo

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

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




 
 Проблема с численной стабильностью
Сообщение27.09.2019, 23:25 
Я хочу оценить энтропию взвешенной суммы гауссиан (все матрицы ковариаций диагональны и равны), используя оценку из статьи "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: Проблема с численной стабильностью
Сообщение28.09.2019, 11:14 
Это она насколько мала что её логарифм выходит за пределы машинной точности? Чтоб получить логарифм можно использовать $\ln(a+b)=\ln(10^ka+10^kb)-k\ln(10)$, или что-то подобное.

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

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

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

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

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

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


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

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

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


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