May 14th, 2016

Book

Автоподбор параметров

Пилим тут https://github.com/streamcode9/node-discrete-spsa

An implementation of the Discrete Simultaneous Perturbation Stochastic Aproximation algorithm.

See Stacy D. Hill, "Discrete Stochastic Approximation with Application to Resource Allocation", 2005 http://www.jhuapl.edu/SPSA/PDF-SPSA/Hill_TechDig05.pdf

Cам алгоритм на 5-й странице step1-5, прост как палка.

Принимаем вектор параметров и хренячим по нему смесью броуновского движения и градиентного спуска, пока целевая функция улучшаться не перестанет (т.е. достигнет локального минимума или максимума). В отличие от классического спуска, на конечных разностях, нормально работает при большом количестве параметров. Как и все подобные алгоритмы, требует выпуклости и сепарабельности (как это по-русски?).

Это всё равно бесконечная игра с подбором learning rate, но наверное получше будет, чем наивный подход "просемплировать всё пространство состояний с заданным шагом, используя статистически значимые бенчмарки".

Трюк в том, что вместо рассчёта градиента через частные производные, которые приближаем конечными разностями, используем 1-мерную конечную разность в случайном направлении. Которая, о чудо, оказывается (несмещённой статистической) оценкой градиента. И при этом требует вычислить целевую функцию всего 2 раза на итерацию, вместо стольки раз, сколько у нас частных производных + 1.

Вдобавок, оно работает нормально для зашумлённых целевых функций. Т.е. рандомность бенчмарков устранять не надо. И даже в случае целочисленных параметров и пространства разрешённых состояний произвольной формы (ну может почти произвольной, я в детали не вникал).
Book

ES6 style guide

https://github.com/airbnb/javascript

Впервые вижу руководство по стилю, призывающее использовать фичи. Чаще запрещают.

Вообще хорошо бы написать какое-нибудь абсурдное руководство по стилю для Хаскеля. Например, содержащее требование не использовать анонимные функции, $ и более чем одну аппликацию в строке.

Руководство, требующее всё писать бесточечно, абсурдным не является, потому что выглядит круто.