?

Log in

No account? Create an account

Discreet · and · not · discrete.


Do you want to crack jokes about it or do you want me to go?

Recent Entries · Archive · Friends · Profile

* * *
"Скандинавский социализм" был основан на статистике - в любом обществе от 20 до 10 процентов людей любит работать и будет работать несмотря ни на что. Остальные, скорее, бездельники. Поэтому если мы поднимем производительность труда в 10 (5) раз, то мы сможем обеспечивать всё общество чем ему угодно.

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

Вот цитата из последнего творения 17ur: "Небрезгливый хитрец, видя, что "так тоже можно", - что можно безнаказанно делать ожидаемую работу много хуже, сберегая собственные усилия или присваивая чужие - непременно "так тоже" попробует. Посему выходки украинских одичалых опасны тем, что соблазняют местных небрезгливых хитрецов к такой же деградации, приглашают на ту же свалку истории."

Теперь мне интересно, насколько чужие хитрецы могут испортить основу оного скандинавского социализма. И не портят ли уже. И что с этим делать.
* * *
Вчера совершили повторную попытку выбраться на сирень в ботанический сад. И на этот раз удачно.
Сирингарий ботанического сада в Киеве начал создаваться ещё в 1948 году.
Сейчас это почти 2,5 гектара сирени! 90 сортов и столько же гибридов. 1500 кустов.
Про запах вообще молчу.
Короче, это стоит видеть!


IMG_0088
Много фоток! Любителям цветов - сюда!Collapse )
* * *
Для продвижения игры The Talos Principle хорваты выпустили игрушку Sigils of Elochim - в ней надо заполнять с помощью заданного набора тетрамино прямоугольники разного размера.

Так вот, Василий Сергеевич вчера продемонстрировал способность к решению задач уровня Знаков Бога не самых первых уровней. Одну задачу решил сам, а во второй сдался на повороте значка в нужное положение. То есть, собрал всё, как надо, а последний знак не смог повернуть, поскольку из-за чехла чувствительность у экрана снизилась.

Удивительно.
* * *
Я как-то экспериментировал с упаковкой данных и обнаружил, что для текстовых данных знание полной статистики пар букв для, примерно, 8-16 букв, часто даёт возможность восстановить эти 16 букв по менее, чем двум битам дополнительной информации.

(я смотрел на байты, но для букв тоже более-менее справедливо)

" бит дополнитель" - 16 букв. Пары букв: "\0 " (буквы перед началом кодируем симолов с кодом 0), " б", "би", "ит" и так далее до пары "ль". Префиксов с выбором у нас два - пробел и буква "о". Выбор после пробела требует один бит, после "о" - один бит. Поскольку статистика у нас полная, мы можем удалять увиденные пары, поэтому после первого пробела у нас нет выбора при его втором появлении, то же справедливо и для пар, начинающихся с буквы "о".

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

Увеличение длины побуквенной послледовательности с 2 до 3 ещё сильнее уменьшает необходимость в дополнительной информации для выбора.

Это объясняет неплохие результаты фейсбучного fasttext (вычисление словарных вложений, как суммы вложений для отдельных частей слова) и последнего достижения Kaldi, где рекуррентная сеть с входом в 10 тысяч наиболее частых слов и несколькими тысячами буквенных N-ок позволила получить уменьшение ошибок распознавания (обычно на входе и выходе несколько сотен тысяч слов, закодированных как 1-из-N (one hot)).
* * *
Пользуясь случаем, хочу порекомендовать The Good Fight. Это как "Хорошая Жена", только лучше.

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

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

Поправлю я количество читаемых строк с 100 тысяч на 200 тысяч и жду, пока обработается. Всё заново, всегда.

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

Как это сделать, я не знаю. Но это сократит, как минимум, затраты на сборку проектов - разделять результаты оптимизаций, например, и перевычислять, если надо, только отладочную информацию.

Гуглевская система контроля версий и сборки это наклон в правильном направлении - даже не шаг, всего лишь наклон.

Пока всё. Вернусь к The Good Fight. Может, чуть позже вернусь ещё к этой теме.
* * *
* * *
Побывал в Тайпее, возвращался через Дубай.

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

Два основных впечатления от аэропорта в Дубае - реклама "Маши и Медведя" и очередь в мужской туалет. Авиакомпания Emirates очень приятная.

Тензорфлов - пакость. Ибо 1) Питон и 2) Java, хоть и C++ (фабрики способностей сессий синглтонов).

Про правильный make напишу чуть позже.
* * *
На русский это переводится, как "бу-бу-бу" и есть сходные слова "бубнить" и "бубнёж".
* * *
Я наткнулся на идею под названием Extreme Learning Machines. Нагуглить её проще простого, а в кратком изложении она звучит так: давайте построим веса для двухслойной "нейросети" следующим образом - веса для аффинного преобразования из входов возьмём случайные, функцию активации возьмём бесконечно дифференцируемой, скрытый слой имеет вид y_i=f(x_ij*w_ij+c_i), а веса для выходов посчитаем через регрессию любым способом и выходы должны иметь вид o_i=\beta_i*y_i. То есть, просто перемножение.

Идея мне понравилась, только я её по-другому использовал (код). Скрытый слой - это случайная проекция R^n->R^h, с функцией активации поверх, а выходной слой учится обычным образом.

Что интересно, неплохо работает вот такой вариант скрытого слоя: берем случайную проекцию с векторами со значениями -1, 0 и 1, выбираемыми с вероятностью в одну треть; затем на тренировочном корпусе вычисляем среднее и среднеквадратичное для каждой проекции в скрытом слое и вход функции активации нормируем до среднего в 0 со среднеквадратичным отклонением в 1; функция активации также должна выдавать наружу -1, 0 и 1 с вероятностями в одну треть.

f(x) = x < 0,5-a ? -1 : x > 0,5+a ? 1 : 0, где a=0,3724.

То есть: веса имеют удобное представление в двоичном виде, и функция активации возвращает хорошо представимое в двоичном виде значение.

Весов, правда: требуется в 4 раза больше - необходимо увеличить размер скрытого слоя до 120 супротив 32 для обычной полностью тренируемой сети. Разность в точности - 96% у обычной сети и чуть меньше 96% у вот такой вот случайной сети.

Сейчас думаю подготовить нормальный эксперимент - тренировать в таком подходе можно много быстрее градиентного спуска, как это у меня сейчас.
* * *
https://arxiv.org/pdf/1802.02180.pdf - теперь и на арХиве!

До этого я такое читал только в Технике Молодёжи, лохматого года: http://lib.ru/SOCFANT/NEFF/trost.txt
* * *
Первый день весны и двести сорок третья неделя нашего брака. ;)
* * *
* * *

Previous