?

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

* * *
или Add-Rotate-Xor - базовые блоки построения криптографических функций, от поточного шифрования до криптосумм (пример SipHash).

Я тут с этим экспериментирую, пока болею.

Пока вывод один - любая константа важна. Вроде бы, вращать на 17 позиций должно быть неважно, в какую сторону, однако практика показывает, что это не так.

* * *
Применение лазера для печатания плат: https://www.youtube.com/watch?v=Z228xymQYho

Лазером плавят оксид меди в медь.

Интересно сравнить характеристики, особенно по затратам энергии.

* * *
С удивлением обнаружил, что Пежо 408 2013 года выпуска ощущается более энерговооружённым, чем Мерседес CLA200, гораздо более свежий. В связи с ремонтом нашего Пежо, дважды возил семью на дачу на Мерседесе от Белки. И вроде всё ничего, но когда пересел обратно, то был удивлён, насколько же Пежо с его 120 силами "быстрей" 154-сильного Мерседеса. А если учесть размеры пассажирских мест, то Пежо это просто чудо какое-то.

Езжу на велосипеде на-работу-с-работы. Расстояние у меня 14 км, начал с времени в 56 минут туда и 53 обратно. Недавно сократил время "туда" до 53 минут, а обратно уже смог добраться за ~48 минут. Карты Яндекса считают, что на этот маршрут я должен тратить час и четыре минуты.

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

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

Зато у меня теперь давление улучшилось (аж до 116 на 85 в день рекорда выше) и теперь 140 на 90 у меня относительная редкость, а выше уж просто не упомню. Пульс в покое упал до 56-57, когда организм уже восстановился. Не 39 Ланса Армстронга, но тем не менее.

На работе у меня сплошной C++, а на сторонние проекты не хватает времени. Надеюсь, удастся, всё-таки, что-то пописать не по работе. Или, хотя бы, поиграть самостоятельно.

Кстати, Принцип Талоса очень хорош. Мой коллега по работе как-то сказал, что даже труп может добавить интересного в игровой процесс, если его хорошо и красиво сделать и добавил что "в ... (имя игрушки я забыл) труп был настолько забавен, что я его минут сорок по уровню таскал". Так вот, в Принципе Талоса труп цивилизации настолько хорошо сделан, что... мы с сыном с удовольствием играли с ним. ;)

Принцип Талоса не успевает надоесть к концу. А последний уровень в Башне вообще чудо - апофеоз, каким он должен быть.
* * *
https://www.scmp.com/news/china/society/article/2157223/artificial-intelligence-immune-fear-or-favour-helping-make-chinas

Я считаю, что по ссылке выше предположение о существовании системы ИИ для помощи управления государством, а не факт наличия такой системы.

Тем не менее, ссылка выше интересна 1) источником, принесшим её (WikiLeaks) и 2) самим наличием такого предположения.

WikiLeaks это официально признанный источник сведений о (относительно) секретных действиях разных государств. Его материалы использовались в слушаниях Высшего Суда США и были допущены в качестве свидетельств. Главный редактор Wikileaks считается врагом США, тем не менее.

Наличие предположения о такой системе, поданного, как факт, это сигнал для руководства США о необходимости начала (или ускорения) действий в данном направлении.

Почему я считаю, что это предположение, а не факт.

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

Это тем более справедливо для систем вывода по правилам наподобие Cyc, в котором правил настолько много, что простой вывод фактов в один шаг порождает более триллиона фактов. БД для Cyc собирали десятилетия, проверяли и перепроверяли. Как ни странно, противоречия здесь нет - правила Cyc многократно перепроверяли на реальных данных, в отличии от Watson, где на проверку не было столь много средств (Cyc это проект Министерства Оборны США).

Поэтому я считаю, что системы помощи в управлении государством пока нет, но силы внутри США и Китая (как минимум) пытаются продавить её создание всеми силами, включая использование (условно) враждебного ресурса.

PS
Исходно это был комментарий для jim_garrison.
* * *
https://thegradient.pub/why-rl-is-flawed/

Там про "обучение подкреплением", и в процессе рассматриваются методы, отличные от градиентного спуска. Вкратце, случайный поиск вполне себе сравним с градиентным спуском и даже превосходит его.
* * *
* * *
Итак, у нас есть обычный стохастический спуск по градиенту (ССГ). Это мы вычисляем градиент, сглаженный по порции из нескольких, случайно выбранных, обучающих отсчётов, а потом смещаем наши веса по вычисленному направлению, умноженному на текущий множитель обучения.

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

Для ССГ необходимо несколько проходов по обучающему набору, со случайной выборкой обучающих примеров. Во время прохода множитель обучения меняется от начального относительного большого значения до конечного относительно малого. Выбор множителя и способа его убывания является ремеслом (тут, с картинками, может работать, а вот тут, со словами - может, но много хуже; cosine learning rate schedule - это вот что такое? кому в голову пришло? и почему cosine, а не tangent или hyperbolic?..).

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

Критикуя, предлагай.

Предложение - тренировать нейросети на всём тренировочном наборе сразу и всегда.

Первое, самое интересное: http://proceedings.mlr.press/v48/taylor16.pdf Смотрите сразу на страницу 8, рисунок 2, правая часть. На нём показаны результаты тренировки на ЦЕРНовском наборе из области физики элементарных частиц высоких энергий для ССГ, который тренируется по части набора, для метода в статье и для метода сопряжённых градиентов. Последние два работают с полным тренировочным набором. Важно в картинке то, что ССГ после полного цикла тренировки с многочисленными проходами по всему набору остановился там, где методы, работающие с полным тренировочным набором, начали.

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

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

Собственно, моя попытка что-то сделать со случайными направлениями это как раз оно - как научиться работать с большими наборами в памяти наилучшим образом и убрать из машинного обучения как можно больше ремесла (нет множителя обучения, нет обусловливания промежуточных слоёв и тп).
* * *
Это "чистой прелести чистейший образец": https://twincat.livejournal.com/279052.html?thread=7261708#t7261708

Итак, мне "массово отказывали" "на протяжении сорока лет". То есть, женился я лет в сорок пять-сорок шесть, если предположить, что начал предлагать руку и сердце в детском саду.

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

Поэтому у меня вопрос - неужто я тоже настолько отключаю сознание в попытке утвердить свою правоту?
* * *
* * *
Возьмём нейросеть с какими-то весами и выберем случайное направление изменения весов.

w=w0+at

Вход функции активации будет иметь вид x=x0+bt, а выход, в общем случае, для дважды дифференцируемых функций активации (ReLU, выйди вон), будет иметь вид y=y0+ct+dt^2.

Для некоторого набора данных можно вычислить функцию потерь, которая также будет полиномом второй степени. Если коэффициент при t положительный, то это означает лишь необходимость изменения нашего направления a на противоположное. Таким образом мы всегда можем получить направление в сторону убывания, а из коэффициентов полинома можно получить приближение размера шага, который приблизит нас к минимуму. Если мы проведём аналогичные вычисления для нескольких случайных направлений, то можно выбрать наиболее улучшающее. Также можно использовать метод сопряжённых направлений (не градиентов, направлений). И даже методы второго порядка не выглядят неподъёмными.

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

Вот это я сейчас и пытаюсь состряпать.

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

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

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

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

Previous