Pull to refresh
4
0
Игорь @i-netay

PhD Math,ML research,algorithms,algebraic geometry

Send message

Тема предиктивной криминалистики начала появляться сильно до нынешней эры недетерминированных blackbox-алгоритмов. Даже во время классического ML была масса вопросов, правда, атрибутированных больше правовой системе США с её нюансами, чем нашей. Примеры сложностей (что-то из то ли книги, то ли статьи про PredPol, что-то добавил):

  1. Если не балансировать данные, то одни этнические или прочие группы будут подозреваться ИИ чаще других.

  2. Если балансировать, это делает целенаправленно одних более виноватыми, чем других.

  3. Если делать централизованную систему, то правоприменительная практика будет отличаться от средней в отдельном штате, проблема.

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

  5. Если системе не давать данные условно о расе и этнической принадлежности преступника, тем самым обосновав её якобы непредвзятость, то внутренние корреляции могут неявно "вычислить" этническую принадлежность через proxy-параметры (например, уровень дохода, образования и проживание в "чёрном" районе) и тем самым могут оказаться якобы очищенным от предвзятости обоснованием расизма со стороны правоохранительных органов, а подозрений в обоснованном скрытом проявлении расизма стремились избежать больше всего.

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

  7. Наконец, если в прецедентном праве что-то изменится от очередного прецедента, как алгоритм начнёт это применять и когда? Алгоритмы машинного обучения с учителем не очень приспособлены для "прецедентного обучения", ну я такого по крайней мере не встречал, и существующие модели на базе нейронок подружить с этим может быть очень непросто, вопросов становится больше, чем ответов.

  8. И плюс вопрос, кто несёт ответственность за признанное ошибочкным решение на основе ИИ? Разработчики, разметчики, обучатели ИИ? Ну странно. Вроде как всё равно только полицейский или судья, но алгоритмы и софт будут на места спускать свыше, так что всё равно будут винить систему и адресовывать пересмотр несправедливого решения выше. А если человека, например, задержали из-за ложного срабатывания системы распознавания лиц, каковы его возможности это оспорить на практике? И будет ли кому-то что-то за ложное срабатывание и ложное осуждение? Это очень сложно регулировать, при этом ответственность максимально размывается, а система может давать простые готовые решения с хорошим процентом по базам данных, то есть как бы обнадёживающе хорошо, но на деле надёжность может очень неочевидно быть устроена и проверяться.

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

Вообще немалая часть проблемы в том, что к алгоритмам ИИ всё чаще относят понятия "разобраться", "понять", "распознать", "принять взвешенное разумное решение", хотя стоит применять только слово "вычислить", и то с погрешностью, которую игнорируют. Даже "распознать" имеет весьма условное применение, потому что мы давно слышали про one-pixel-attack и про многое другое потом. А с большими языковыми моделями сложности получают сразу несколько дополнительных уровней косвенности и становятся ещё менее проверяемыми.

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

Безусловно, близкие точки с далёкими хэшами будут в любом случае. Чтобы близость хэшей была равносильна близости точек, надо, чтобы пространства точек и хэшей были топологически эквивалентны (гомеоморфны). Но хэши — это отрезок, а точки — сфера. Они негомеоморфны, что ни делай. Но остаётся вопрос, насколько далеко в среднем получается до непрерывности. Если математически, то "бесконечно далеко" — её нет (например, выкидыванием точки отрезок можно разбить на две компоненты связности, а сферу — нет). Но если считать расстояния в количествах старших битов, в метрике Левенштейна или в чём-то ещё, от отсутствие непрерывности может влечь разные степени неприятностей или отсутствия желаемого профита. Добиться непрерывности нельзя, а вот что-то конструировать для улучшения качества геосервисов можно, уменьшая влияние отсутствия непрерывности.

Тут немного другая тематика -- построение фрактала и его применение. Мало разбить пространство (поверхность сферы в данном случае) на кусочки итеративно. Важен также порядок обхода. Обходы (в том числе многомерных) кубов влияют на кластеризации и близость хэшей близких точек. И принято использовать Z-curve или Hilbert curve. Для H3 вместо S2 тесты пока не проводились, но для квадратных решёток преимущества существенные, гексагональный случай можно попробовать погонять тоже. Был бы благодарен за ссылки в этом направлении.

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

Если вы хотите в режиме отладки в PyCharm видеть точность переменных, вам для этого не требуется никакой плагин, достаточно наличия xnumpy в вашем venv. Рядом с переменными по ходу вычислений вы увидите значения с вопросами вместо неточных цифр, в списке локальных переменных аналогично. Выглядит это вот так:

Мы старались, чтобы практически все операции, где может теряться точность, автоматически приводили ndarray с dtype=float64 к xf64array, а также заменили тип float64 по умолчанию на xf64 в функциях, создающих новые массивы, чтобы учёт точность требовал минимума изменений в коде.

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

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

Структуры для более точных вычислений (например, предоставляемые библиотекой gmp) дают повышенную точность, но всё равно не учитывают уровень ошибок. Но уже они неприменимы в больших вычислениях, так как очень медленно производятся. XNumPy решает проблему в стандартно используемом f64 (в перспективе f32 и прочих), не меняя само вычисление, но давая оценку точности.

Да, опечатка, спасибо. Должно быть arcsin(1.0).

Сборка производилась при помощи manylinux, так что на других Linux вроде как должно тоже работать, но пока что на других библиотека не тестировалась. В целом специфичны могут быть версии имеющихся от numpy зависимостей, таких как glibc, openblas и так далее.

Под Windows сложность в том, что библиотека включает бинарники (shared libraries в Linux, аналогично dll в Windows), а формат бинарников под Windows и Linux разный, так что бинарники одной ОС не запускаются в другой, для этого нужна отдельная сборка, ей пока не занимались.

А вот ссылки на первоисточники, откуда взят материал, только почему-то ни на что нет ссылки. Вопрос о существовании трегугольника Шарыгина -- журнал Квант, I. F. Sharygin, About bisectors, J. Kvant 1983 (1983), no. 8, 32–36. Нахождение первого целочисленного треугольника -- S. Markelov, Diophantine... bisectors!, unpublished manuscript accepted to Kvant, 2017. Доказательство существования бесконечного числа целочисленных попарно не подобных треугольников Шарыгина и описание группы рациональных точек эллиптической кривой, параметризующей треугольники Шарыгина -- Igor V. Netay, Alexei V. Savvateev, “Sharygin Triangles and Elliptic Curves”, Bull. Korean Math. Soc., 54:5 (2017), 1597–1617, arXiv: https://arxiv.org/abs/1610.04626.

И ещё чуть-чуть про треугольники. Второй треугольник Шарыгина (для краткости стороны разложены на простые множители): (2^5 · 5^2 · 17 · 23 · 137 · 7901 · 943429^2 , 29^2 · 37 · 1291 · 3041^2 · 11497^2 , 3 · 19 · 83 · 2593 · 14741 · 227257 · 7704617), третий (5 · 17 · 29 · 97 · 17182729 · 32537017 · 254398174040897 · 350987274396527, 7 · 1093889^2 · 4941193 · 894993889^2 · 331123185233, 83^2 · 571^2 · 13873 · 337789537 · 16268766383521^2 ), у пятого есть сторона, которая делится на простое число 3646312514774768838959262707271994342627321. А начиная с шестого, даже разложить на простые множители вычислительно проблематично.ничего из этого нет в библиографии

Уместность -- исключительно вопрос традиции. Говорить "операция" в неизвестной ситуации не любят. А если операция одна и отсутствует контекст, то заведомо коммутативную нередко называют сложением, а заведомо некоммутативную обычно умножением. Но появление контекста может внести изменения. Например, когда речь про моноид мономов в кольце многочленов, он обычно коммутативен, но их всё-таки перемножают.

Смотря в каком кольце. Если в \{a+b\sqrt{-3}, a, b \in \mathbb{Z}\}, то да. В этом кольце есть норма ||a+b\sqrt{-3}|| = a^2 + 3b^2, она мультипликативна (то есть ||ab||=||a||\cdot||b||), всегда принимает целое значение и для \sqrt{-3} равна 3, а если норма с такими свойствами числа простое целое, то само число простое в кольце с нормой.

Если, например, в \mathbb{C}, то нет, потому что там нет простых чисел: в полях нет необратимых элементов, кроме 0.

Тут прямо просится дополнение.

В тексте говорится о системах, замкнутых относительно умножения -- о полугруппах (есть множество, ассоциативная операция, в общем-то всё, мультипликативная система, если операцию мы назвали умножением), к которым, конечно, относятся степени двойки и "наоборот" -- нечётные числа. Наоборот в том смысле, что они пересекаются по единице и вместе порождают натуральные числа. Однако полугруппы рассматриваются в другом контексте, чем более "повседневная" структура -- кольцо, где есть сложение и умножение, часто связываемая с видом чисел не "внутри" (как чётные в целых), а в целом -- целые, рациональные...

Основная теорема арифметики нередко формулируется для целых, а не натуральных. Но как быть с тем, что 6=2\cdot3=(-2)\cdot(-3)Это два разложения. А что с множителями? Ведь -2тоже простое, как и 2. Этот вопрос решается в алгебре понятием идеала (подмножество, где можно умножать и складывать), где мы можем выбрать образующую -- чиселку, умножением на которую получаются все. Мы можем выбрать и 2и -2С этим хорошо, выкрутились :) Хотя научно это называется не "выкрутились", а "формализовали и дали строгое определение", хотя разница не очень большая.

С представлением в виде произведения меньших его чисел в определении тоже есть момент с целыми и знаками. Ведь 5же произведение -1и -5так что же, не простое? Они ж меньше! И вот тут алгебра "выкручивается" введением обратимости: число обратимо, если имеет обратное. Обратимых целых всего два -- \pm1Если представлять число как произведение необратимых, то всё ок. Разложение единственно, если оно единственно на меньшие или равные необратимые с точностью до домножения их на любые обратимые элементы и перестановок. И вот так оно работает без других оговорок полностью (в кольцах главных идеалов).

Зачем появляются вот эти все слова: идеал, обратимость, образующая? Они нужны, чтобы понятия имели однозначные определения без разных трактовок. Они и были придуманы, чтобы не было разных определений и многих случаев, чтобы всё подчинялось общему правилу. Так нам (алгебраистам) проще работать. Если начать копаться, то это упрощение, а не усложнение, и всё становится на свои места, ради чего и городится огород.

Как говорится в тексте, мы легко получаем, что кольцо целых имеет единственное разложение на простые, если в нём можно делить с остатком, тогда запускаем алгоритм Евклида, и он заканчивается. И так в более общем случае, где мы можем "выкрутиться" -- придумать деление с остатком.

Свойство кольца иметь деление с остатком (и потому алгоритм Евклида) называется евклидовостью, а единственность разложения на простые множители -- факториальностью (не потому что "факториал", а потому что "фактор" -- делитель). И аналогично лемме выше любое евклидово кольцо факториально. Если можете делить с остатком, то можете раскладывать на простые множители. Однако обратное неверно, но это существенно сложнее этого материала, так что за этим лучше обращаться в специальную литературу (по алгебраической геометрии или алгебраической теории чисел).

В моей памяти курсов мехмата и не только эйлеровыми называются целые с \sqrt{-1}, а там история несколько другая, чем \sqrt{-3}.

У меня как-то была история с простыми числами: в ларьке ночью при продаже пива меня продавщица спросила, не могу ли я разложить несколько чисел на простые множители. Она не пыталась взламывать RSA (алгоритм шифрования, основанный на основной теореме арифметики: разложить большое число на простые множители не так-то просто, а сложность задачи может подтвердить, что знающий правильный ответ не смог его подобрать на ходу), а хотела помочь дочери в школе. И ей удалось быстро разобраться, как это делать, чтобы дальше делать самой и объяснить дочери))

Фактическая ошибка: автор не является сотрудником мехмата (официальный список, включая бывших сотрудников).

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

Для изучения алгебры в зависимости от подходящего уровня и стиля изложения я бы советовал такие варианты:

  • Винберг, "Курс алгебры" (в первую очередь!)

  • Городенцев, "Алгебра" (для более смелых)

  • Ван дер Варден "Алгебра" (доступный очень хороший старый учебник, изложение отличается от современных по стилю, для базового освоения алгебры ещё как хватит; незаслуженно редко упоминается)

  • упомянутые выше книги Куроша и Кострикина

Если (а лучше — когда) этих базовых книг окажется мало, и будет хотеться больше алгебры, попробуйте почитать Харриса "Введение в алгебраическую геометрию", чтобы увидеть, как красиво алгебра продолжается за пределы стандартного курса и что на самом деле следует за школьной планиметрией в современной науке (спойлер: она вся становится частью алгебры, но при этом все геометрические объекты не только остаются, а становятся интереснее и разнообразнее, взять хоть эллиптические кривые, которые имеют очень большие применения к современной криптографии).

По части приложений скажу, что тут и правда в тексте не перечислено ничего явного (видимо, практическая мотивация у автора целью не является), но чем больше и глубже знаешь алгебру, тем больше всего может помочь даже из достаточно абстрактного, потому что все вычисления в явном виде об алгебре и/или численных методах. Например, мне улучшить качество модели в рамках Speech Recognition как-то помогло бирациональное преобразование пространства параметров модели. Помогло сделать раздутия с цетрами с центрах кластеров и сдуть лишние образовавшиеся дивизоры, так что кластеры стали иметь более хороший вид, и нейросеть начала лучше учиться за счёт перепараметризации, каким не учат на вайтишных курсах. Но если вы знаете алгебру и начала алгебраической геометрии, то вы можете придумать такое сами, поковырявшись в данных. Алгебра очень часто о том, что мы можем вычислить явно (если не учитывать большие базисы Грёбнера и вот такое), так что применимость в приложениях ограничена только вашей изобретательностью и знанием алгебры и алгоритмов.

Вдогонку пример (статья в соавторстве с Лёшей Савватеевым), как задачу из геометрии с треугольничками решает настоящая глубокая алгебра, и попутно пригождаются и сравнения по модулю, и комплексные числа, и Великая Теорема Ферма.

И ещё вдогонку: алгебре ещё лучше, чем на мехмате (и где-либо), учат в НМУ бесплатно без смс и регистрации, ограничение только по вместимости здания. Неважен возраст, социальный статус, образование и что угодно ещё. Хотите очный курс алгебры — вот.

Алгебра — мать порядка!

Хорошее годное улучшение. Однако в задачах метрических оптимизаций среди фрактальных кривых чаще дают большее преимущество непрерывные кривые, так что Z-кривая может быть не лучшим выбором. Хотя, конечно, куда лучше покоординатного обхода. Попробуйте непрерывные: кривая Гильберта (посложнее и потяжелее), H-кривая (попроще, поэффективнее: https://github.com/Kryptonite-RU/Hcurve). Это может улучшить результаты.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Data Scientist, ML Engineer
Lead
From 500,000 ₽
Maths
Python
Haskell
Rust
Linux
Docker
Git
C++
Bash
CI/CD