Sep. 24th, 2020

green_fr: (Default)
Одна из тем, больше всего мне понравившихся в Machine Learning — это проблема overfit.

Грубо говоря, кода мы учим систему классифицировать что-то, это сводится к интерполяции каких-то известных точек некой аналитической формулой, которая потом поможет нам предсказывать неизвестные точки. Предположим, что у нас на двухмерном графике (размер / плотность) есть точки, соответствующие разным опухолям, и про какие-то опухоли мы знаем, что они — раковые, а другие — безопасные. В таком случае мы можем попытаться «обучить систему», проведя кривую, разделяющую зону раковых опухолей от обычных. И потом этот «искусственный интеллект» сможет различать раковые опухоли от нераковых, исходя из местоположения новых опухолей в нашей плоскости (по параметрам размер и плотность и по расположению точки относительно кривой).

Проблема overfit состоит в том, что через любые точки можно провести некую кривую, например, полином огромной степени (грубо говоря, через любые n+1 точку можно провести полином n-й степени) — очевидно, что результат будет прекрасным на наших точках, но совершенно не будет годиться для будущих предсказаний, потому что на самом деле полином будет вести себя достаточно хаотично, лишь «случайно» попадая по всем точкам наших данных.

Стандартным решением этой проблемы является уменьшение количества параметров системы (снижение степени полинома), введение штрафов за слишком большие коэффициенты (снижение хаоса, когда на обучающих точках огромные числа с разным знаком компенсируют друг друга) и т.п. Это действительно, работает, но авторы статьи в журнале обращают внимание на опасность простого подсчёта количества параметров системы для оценки её сложности. Это на самом деле существует — я на работе часто вижу аргументы в духе «эта модель с 3 параметрами, а значит...». Собственно, малое количество параметров нормального распределения объясняет, почему его суют не только туда, где его использование оправдано, но и вообще везде, где нет никакой информации о реальном распределении — это «самое экономное» распределение, к тому же издалека похоже на правду в подавляющем большинстве случаев.

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

Фокус на самом деле достаточно простой, в статье его иллюстрируют другим примером. Предположим, мы хотим построить функцию, которая на целых числах 1, 2, 3, ... даёт бинарные значения a1, a2, a3, ... Функция с параметром p выглядит как D(n, p) = D(D(n — 1, p)), D(1, p) = 2p mod 1 (дробная часть после умножения на 2). На самом деле функция даже E(D(n, p)), где E возвращает первую цифру после запятой от полученного числа. Таким образом, D(1, p) — вторая цифра после запятой в бинарной записи p, D(2, p) — третья цифра и т.д. То есть, p = a1a2a3a4... — просто запись подряд всех нужных нам ответов. Секрет кроется в том, что мы допускаем параметр с бесконечной точностью. Тема, на которую автор писал уже колонку несколько месяцев назад, и я её пересказывал.

То есть, простой подсчёт количества параметров действительно бессмысленный, так как мы можем упаковать в один параметр любое конечное количество параметров с конечной точностью. Непонятно, на что можно было бы его заменить. По аналогии с Machine Learning, где часто вводят дополнительный коэффициент штрафа за большие значения параметров — здесь, наверное, нужно вводить штраф за чувствительность результата к малым изменениям параметра. Что-то вроде подсчёта не просто количества параметров, а количества значащих цифр всех параметров — количество цифр, которые мы обязаны сохранить для сохранения результата, а после которых мы вольны ставить всё, что угодно.

Удивительно при этом, что автор совсем не затрагивает тему чувствительности системы к её параметрам — у нас это самый что ни на есть стандартный тест (более того, это ещё и стандартный тест при любом контроле нас со стороны законодателя).

А ещё идея использования бесконечного количества информации в действительных числах напоминает наш с [livejournal.com profile] catpad разговор о том, как вытаскивать информацию из числа пи. В статье упоминают и эту тему, это называется гипотезой универсальности числа пи (гипотеза о том, что в числе пи есть любая конечная последовательность цифр), отмечая при этом преимущество описанной в статье функции (осторожно: я описал только простую иллюстрацию, в статье речь идёт о другой функции): в отличие от пи, универсальность этой функции доказана, к тому же известен работающий алгоритм построения параметра для любой последовательности. В то время как для пи, даже если мы когда-нибудь докажем его универсальность, алгоритма никакого нет, только перебор.
green_fr: (Default)
У нас в семье последний год мем — %subj%. Говорится в качестве последнего аргумента в любом споре :-)

На работе ещё в прошлом году всем зачем-то выдали по телефону, несколько месяцев они так и не открытые пролежали в коробочках, с началом карантина появилась хоть какая-то причина ими пользоваться. В частности, на него можно было поставить StopCovid (мой Android старенький, на него такое не ставилось). А тут Android совсем сдавать стал, и я, вместо того, чтобы покупать новый, решил попробовать, как оно работается с «айфончиком моим». Непривычно, но жить можно.

Фотоаппарат однозначно прекрасный. До такой степени, что можно ходить в Лувр, фотографировать слабоосвещённые витрины. Скоро в этом ЖЖ, оставайтесь с нами.
При этом по умолчанию зачем-то к каждой фотографии снимает парусекундный ролик. Нашёл, как отключить. Как выключить звук щёлкающего затвора в момент съёмки так и не нашёл (впрочем, в Android я его тоже не смог выключить).

Софт весь другой, ко всему нужно привыкать. Но это даже забавно. И полезно — не стоит застаиваться в привычном (у меня до сих пор рабочая программа для обработки фотографий — google picasa), нужно пробовать новое. По поводу последней фразы вспоминается недавний bash...

Что-то получается просто мигрировать, над чем-то пляшешь с бубнами. Например, Whatsapp — он по умолчанию привязан к номеру телефона. Но при этом можно открыть сессию на другом телефоне, если у тебя есть доступ к первому (туда должна прийти СМС-ка). Но нельзя пользоваться двумя телефонами одновременно: как только залогинился в одном — теряешь соединение в другом. Точно так же, как в Whatsapp web нельзя открыть все сессии на двух разных компьютерах. При этом можно иметь одну работающую сессию на телефоне, и другую на компьютере — в чём фишка такого ограничения, совершенно непонятно.

Проблема с контактами. В Android ты можешь подключить несколько account’ов, и каждый раз, когда создаёшь новый контакт, у тебя есть возможность указать, под каким account’ом ты его создаёшь (один раз указал — потом запоминает по умолчанию). Мы с Анютой пользовались этим, заведя совместный google account исключительно для общих контактов: если кто-то из друзей меняет номер телефона или адрес — достаточно одному из нас исправить, и у второго автоматически изменилось. Apple такого, как я понимаю, не предлагает вообще: ein аппарат = ein account = ein список контактов. Есть возможность подключить тот же google account, то только в режиме импорта контактов — если я создаю на телефоне новый контакт, он в google на автомате не уйдёт.
С импортом контактов тоже смешно получилось. У нас там несчитано (несколько сотен) контактов, так что я не стал проверять, всё или не всё подтянул мой телефон. Но буквально в первый же после подключения контактов день захотел позвонить Анюте — а её в списке контактов нет. Ну ок, я номер наизусть помню, набираю — iPhone мне его распознаёт как альтернативный телефон другой Ани, тоже с непроизносимой фамилией. То есть, он тупо принял «samokhvalova» за «strembitskaia» и слил два контакта, даже не предупредив меня. И эти люди наезжали на «слишком много думающий за нас» Microsoft!
Ещё через пару дней обнаружил, что контакт нашего доктора вообще не попал в телефон, что ещё удивительнее — ну ладно, написать кривую утилиту слияния контактов. Но как можно импортировать не всё?

Карты транспорта в нашем городе однозначно круче google maps, потому что знают о существовании наших автобусов (SQYBus), тогда как google доводит максимум до Версаля.

В самом начале ещё создал себе Apple account. Очевидно, спустя месяцы не могу вспомнить от него пароль. Тыкаю на стандартные кнопки — не помогает: код по СМС не присылает, по мейлу тоже. Тыкал-тыкал, в итоге телефон написал, что я слишком много раз запрашивал себе код реинициализации пароля — без предложения каких бы то ни было альтернатив. Полез на сайт — сайт сказал, что запрос у меня дюже сложный, они ответят в течение 24 часов — ну ок, я не спешу. Сегодня прислали мейл: мы рассмотрели ваш запрос на реинициализацию пароля, мы вам перезвоним. Перезвоним 7 октября 2020 года ровно в 9:05. Буду ждать!

Profile

green_fr: (Default)
green_fr

July 2025

S M T W T F S
   1 2 3 45
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 5th, 2025 10:15 am
Powered by Dreamwidth Studios