February 2026

S M T W T F S
1234567
8 9101112 1314
15161718192021
22232425262728

Style Credit

Expand Cut Tags

No cut tags
Friday, May 8th, 2020 03:39 pm
Code Review of Ferguson’s Model

В общем, то, что код этой модели ужасен и в нем черт ногу сломит - довольно неудивительно. Даже у программистов с этим часто проблемы, а уж у непрограммистов - пиши пропало. Но там другой прикол - что когда им указывают на то, что в их модели полно багов и race conditions, они говорят "ну так это ж стохастическая модель, конечно она разные результаты выдаёт!" и рекомендуют, если уж такие вы придиры, запускать её single-threaded.

В то, что учёные, занимающиеся вероятностным моделированием, не видят разницы между стохастической моделью и случайным мусором, который вбрасывают в неё баги в коде - я не верю. Это всё равно, что биолог бы плевал в пробирку с образцами со словами "ну а чё, там всё равно биологические материалы!". И тогда возникают вопросы - не пытаются ли нас надуть, в расчёте на то, что мы лохи и пользуясь умными словами типа "стохастический", нам можно продать любую лажу? И если да, то где ещё они нас пытаются кинуть и насколько?
Friday, May 8th, 2020 10:50 pm (UTC)
Ой, вы будете удивлены...

Статистика большая, и за счет её роста в чисто теоретические области там полно странных людей
Friday, May 8th, 2020 11:32 pm (UTC)
Случайным образом ткнул в код.

///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** /////
///// ***** ///// ***** ///// ***** ///// ***** ///// ***** GLOBAL VARIABLES (some structures in CovidSim.h file and some containers) - memory allocated later.
///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** ///// ***** /////


Программисты такое не пишут. Это ебанаты.

Лвдно. Я работал в H2O, там то же самое. Код, который вылетал раз в две недели, на определенном юниттесте. Важные персоны, объясняющие, что это все ошибки эксперимента. Мержи в мастера, где юниттесты рушатся как до, так и после. Объяснение: мы оптимисты, мы надеемся, что не добавим ошибо.

А эта хрень, раз в две недели - это у них "random()", который засевают от systemTimeMillis; этот рандом используется для вычисления тангенса; так арктангенс в питоне и джаве получается разный. С какого бы хуя? А они когда в джейсон сериализуют, то "округляют" путем прибавления одной миллионной. Тангенс же. Иногда он почти вертикален.

Ну вот такие профессионалы эти "data scientists".
Friday, May 8th, 2020 11:37 pm (UTC)
Ну да. Главное чтоб картинка была красивая.
Friday, May 8th, 2020 11:47 pm (UTC)
Да, с тангенсом весело.
Saturday, May 9th, 2020 12:02 am (UTC)
Тут трюк в том, что берем то же самое число, и, по идее, хоть питон, хоть джава вызывают одну и ту же команду. Дурь происходит при сериализации "случайного числа".
Saturday, May 9th, 2020 12:19 am (UTC)
Ну так я и говорю, что тангенс округлять опасно, в линке важнее история с Фейнманом, чем обломы калькуляторов.
Saturday, May 9th, 2020 03:58 am (UTC)
Я не случайным образом, а с самого верха открыл, увидел переменные i1, i2, j1, j2 и немедленно закрыл. Я такой код в прошлом веке подтирал за общепризнанным "маэстро", на всю жизнь хватило.
Saturday, May 9th, 2020 07:03 am (UTC)
В современном коде наличие внешних счётчиков цикла вообще пугает.
Saturday, May 9th, 2020 07:59 am (UTC)
> Я работал в H2O, там то же самое.

Я работал в конкуренте H2O.
Там было сильно лучше, в основном потому что дата саентистов били по рукам и без вазелина.
Saturday, May 9th, 2020 12:04 am (UTC)
Это ж write-only код, а не код программного продукта. От него требуется выполниться один раз.

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

То, что это не C++, а завёрнутый в него C, так это микрософтовцы переписали, как умели, фиг знает что там в оригинале было.

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

Главная (и единственная) проблема это невоспроизводимость результатов. Это да, такого быть не должно. Но тогда надо за это и наезжать, а не за какой-нибудь unit test coverage.
Saturday, May 9th, 2020 11:32 pm (UTC)
Ну как бы я знаю как делают код для моделей предикшена.
Там не просто тесты, там prediction consistency tests, если аутпут каждой сраной функции не сходится до 6-ого знака после запятой - хер тебе, а не мердж в мастер.
Saturday, May 9th, 2020 11:40 pm (UTC)
Там не только код, который считает предсказание для конкретного случая. Там ещё код, который определяет параметры модели. Этого кода гораздо больше. Протестировать его для всех возможных входных значений на предмет совпадения до 6-го знака после запятой тупо не хватит времени.
Sunday, May 10th, 2020 12:45 am (UTC)
Не очень понял ответ и как он относится к тому что я сказал.
Берем код. Берем исходные данные. Берем предикшены которые он сделал и сравниваем. Не рокет саенс.
Sunday, May 10th, 2020 12:57 am (UTC)
Модель предсказывает количество смертей через год. С чем мы сейчас будем сравнивать эти предсказания?
Sunday, May 10th, 2020 02:12 am (UTC)
Вот модель, которая один и тот же результат выдаёт, ноль смертей в июне и июле с доверительным интервалом плюс-минус ноль.

Приближение многочленом третьей степени в экселе тоже отлично повторяется, сколько раз не нажимай F9.

Повторяемость — критерий совершенно недостаточный и может быть даже вредным. Если модель неустойчивая и сходится только при одном посеве ГПСЧ, то принудительно заставлять её повторяться бит в бит фиксированием seed будет заметанием мусора под ковёр.
Sunday, May 10th, 2020 08:16 am (UTC)
Недостаточный, но это хоть какой-то контрол поинт.
Saturday, May 9th, 2020 01:35 am (UTC)
Так это всегда так. Еще начиная как минимум с климатолога, который вывел что "бабочка, взмахнувшая крыльями в Калифорнии, может вызывть ураган на Гаваях". У того судя по всему ошибки округления выходили гораздо больше собственно расчетного результата.
Saturday, May 9th, 2020 11:27 am (UTC)
Мне кажется, что у всех 97% климатологов, модели где-то такого же уровня.
Saturday, May 9th, 2020 12:02 pm (UTC)
Боюсь, что там все 99.999%
Saturday, May 9th, 2020 12:11 pm (UTC)
"97%" — это мем такой, про ебанашек-учёных, у которых "консенсус".
Saturday, May 9th, 2020 11:30 pm (UTC)
А, то есть 3% можем надеяться "скрытые нормальные", которые просто молчат?
Логично.