https://colab.research.google.com/drive/13YuGiBu0qtnz-wCWfe6sGo9fxSQmY2Uh?usp=sharing
А вот и ноутбучёк чтобы поиграть страшной-страшной ночью в тёмной-тёмной програмистской берлоге...
А вот и ноутбучёк чтобы поиграть страшной-страшной ночью в тёмной-тёмной програмистской берлоге...
Google
Тонельные ландшафты и поведение на них оптимизаторов.ipynb
Colab notebook
🔥11👍2
Если я через пару недель устрою онлайн-посиделки по мотивам доклада, на которые придёт те, кто с ноутбуком поигрались, обсудить свои наблюдения:
Anonymous Poll
29%
Попробую руками и приду в онлайн обсудить
44%
Сам пробовать не буду, но хочу послушать
0%
Не очень интересно, потому что не практично
27%
Не до того...
Спасибо всем указавшим на лажу. Я, к сожалению не догадался заскринить комментаторов прежде чем снести пост, поэтому поблагодарить всех лично не могу, а благодарить только часть, кого узнал по аватарке считаю не честным, так что просто вы сами знаете, кому спасибо.
❤5🔥1
Когда устраиваем мероприятие?
Anonymous Poll
4%
Я попробовал что-нибудь, удобнее в пятницу
9%
Я попробовал что-нибудь, удобнее в субботу
39%
Я послушать, удобнее в пятницу
48%
Я послушать, удобнее в субботу
Итак, длинные выходные закончены. Кто-то отдыхал, а для кого-то это наоборот возможность поэкспериментировать. И я предлагаю собраться обсудить всякое про поведение оптимизаторов на тонельном ландшафте. Но непонятно когда это удобнее делать нашим соучастникам. В будний день, например вечером в пятницу, или в выходные, например в субботу.
UPD: Для тех, кто успел повозиться с ноутбуком или ещё какими-то экспериментами первые два варианта голосования, для тех кому интрересны результаты, а не процесс - вторые.
UPD: Для тех, кто успел повозиться с ноутбуком или ещё какими-то экспериментами первые два варианта голосования, для тех кому интрересны результаты, а не процесс - вторые.
Ну, поскольку единственный человек кроме меня, кто что-то сам попробовал, проголосовал за пятницу, значит собираемся в пятницу. Итак в эту пятницу я объявляю семинар, даже можно сказать ритуал, посвящённый изучению как ландшафта функции потерь, так и поведению оптимизаторов на более правдоподобной модельной задаче. Начало в 18 чтобы точно никого начальник не поймал за хвост, если у единственного попробовавшего, не будет предложений. Подробную информацию куда присоединяться кину ближе к делу.
❤6👍3
Forwarded from Vlad Goloshchapov
Мдааа.... Пока я мечтал выделить время на то чтобы грокнуть и попрунить четвёртый мобайлнет уже пятый вышел...
😢4❤2
А вы когда-нибудь задумывались, что дистиляция из другой модели это ещё и способ избавиться от большой части ошибок разметки?
🤔3
Сегодня будет "за вообще". Каждый день езжу мимо огромного плаката постановки "Цветы для Элджернона", и сегодня подумалось, а что если это про всё человечество в целом?
Если кто про пустил это литературное произведение - либо почитайте его само, либо сходите в википедию, чтобы не спойлерить. Недавно попадались ржачные комментарии с озона, где читатели ругились, что им продали книжку с кучей граматических ошибок. :)
Если кто про пустил это литературное произведение - либо почитайте его само, либо сходите в википедию, чтобы не спойлерить. Недавно попадались ржачные комментарии с озона, где читатели ругились, что им продали книжку с кучей граматических ошибок. :)
Ну что, это конечно совсем не то, чего я ожидал увидеть, но мы, исследователи, же питаемся неожиданными результатами. Как говорится, что для одного ошибка эксперимента для другого начальные данные.
Итак, берём, ту же самую нашу задачу, и идём по тоннелю. Не далеко, 1000 шагов всего, четверть пути, потом берём второе направление базиса, то есть направление в котором загибается наш градиент, перпендикулярное стенке каньона, и отходим на какое-то расстояние в сторону, loss при этом, конечно, драматически портится, и делаем 20 серий шагов углового алгоритма, как и в докладе, за группу не больше 10 градусов накопленного изменения угла и не больше 200 элементарных шагов. По идее этого достаточно чтобы спуститься в соседний тоннель (ну или в другую часть нашего каньона сильно выше или ниже, например, в другой плоскости). И сравниваем с результатами тех же двадцати серий по дну тоннеля. Каждый цвет - один эксперимент. Прыгнули в сторону и спустились куда-то. Смотрим куда. Там, куда спустились - измеряем ширину тоннеля, то есть на сколько надо отойти в сторону этого самого второго вектора базиса чтобы loss испортился на 5%.
1) Вопреки моим ожиданиям, другие тоннели (или другие месте каньона), в целом не лучше и не хуже того, который мы покинули, примерно та же фигня по глубине и по ширине. Слегка шире только те, в которых loss хуже, то есть те случаи, когда мы до дна чуть-чуть не дошли.
2) определение расстояния хромает, к сожалению, поэтому после того как мы на дно выходим кажется что алгоритм убегает в бок. Это, на самом деле не вполне корректно, потому что первый шаг сравнивается с первым без отступа, второй со вторым и так далее. Но тот, что без отступа по дну каньона успевает убежать. Короче трудно придумать как бы это получше визуализировать.
3) В соответствии с моими ожиданиями, возвращение в тоннель происходит супер-стремительно. То есть всего 20 серий и мы уже в тоннеле той глубины, до которой пришлось 1000 серий идти до этого. Даже если сеть была довольно сильно разрушена, то есть лосс с 1.8 скакнул до 7.
P.S. Это в плоскости поворота такой профиль. Ещё посмотрю как там картинка по направлению вверх и в случайном направлении. Но вряд ли там будет что-то принципиально отличное.
P.P.S. Положительное направление это в сторону разворота - почему-то там стенка круче, я бы скорее предполагал обратную ситуацию. Но может оно на 1000-ном шаге будет так, а на 2000-ом по другому. Надо пробовать в других местах и сравнивать.
P.P.P.S. А я, оптимист, надеялся этот слайд к докладу успеть. Ну-ну...
Итак, берём, ту же самую нашу задачу, и идём по тоннелю. Не далеко, 1000 шагов всего, четверть пути, потом берём второе направление базиса, то есть направление в котором загибается наш градиент, перпендикулярное стенке каньона, и отходим на какое-то расстояние в сторону, loss при этом, конечно, драматически портится, и делаем 20 серий шагов углового алгоритма, как и в докладе, за группу не больше 10 градусов накопленного изменения угла и не больше 200 элементарных шагов. По идее этого достаточно чтобы спуститься в соседний тоннель (ну или в другую часть нашего каньона сильно выше или ниже, например, в другой плоскости). И сравниваем с результатами тех же двадцати серий по дну тоннеля. Каждый цвет - один эксперимент. Прыгнули в сторону и спустились куда-то. Смотрим куда. Там, куда спустились - измеряем ширину тоннеля, то есть на сколько надо отойти в сторону этого самого второго вектора базиса чтобы loss испортился на 5%.
1) Вопреки моим ожиданиям, другие тоннели (или другие месте каньона), в целом не лучше и не хуже того, который мы покинули, примерно та же фигня по глубине и по ширине. Слегка шире только те, в которых loss хуже, то есть те случаи, когда мы до дна чуть-чуть не дошли.
2) определение расстояния хромает, к сожалению, поэтому после того как мы на дно выходим кажется что алгоритм убегает в бок. Это, на самом деле не вполне корректно, потому что первый шаг сравнивается с первым без отступа, второй со вторым и так далее. Но тот, что без отступа по дну каньона успевает убежать. Короче трудно придумать как бы это получше визуализировать.
3) В соответствии с моими ожиданиями, возвращение в тоннель происходит супер-стремительно. То есть всего 20 серий и мы уже в тоннеле той глубины, до которой пришлось 1000 серий идти до этого. Даже если сеть была довольно сильно разрушена, то есть лосс с 1.8 скакнул до 7.
P.S. Это в плоскости поворота такой профиль. Ещё посмотрю как там картинка по направлению вверх и в случайном направлении. Но вряд ли там будет что-то принципиально отличное.
P.P.S. Положительное направление это в сторону разворота - почему-то там стенка круче, я бы скорее предполагал обратную ситуацию. Но может оно на 1000-ном шаге будет так, а на 2000-ом по другому. Надо пробовать в других местах и сравнивать.
P.P.P.S. А я, оптимист, надеялся этот слайд к докладу успеть. Ну-ну...
🤔5
А вот если взять третий вектор базиса, который ортогонален первым двум и в направлении которого тоннель на минимум порядок медленнее, то картинка получается ещё краше:
🤔2😍1
Forwarded from Свидетели Градиента, обсуждения
Отвечая на вопросы:
Думаю, это не очень интересно, потому что мы стекаем обратно туда, откуда лишь слегка отпрыгнули.
Как раз сейчас дома считается картинка с гораздо более аккуратным способом подсчёта расстояния до тоннеля, вечером выложу. Это, возможно победит убегание в стороны в нижней части графика, или покажет, что это часть осмысленного процесса, что тоже интересно, но приципиально картины не поменяет, я полагаю. Конечно всегда нельзя исключать, потому что результат совсем свежий, но судя по степени того на сколько он похож на теоретические предсказания - скорее всего норм.
Да но, я скорее придаю важность соотношению между весами одного нейрона. Грубо говоря, если в свёртке выработалось обобщение, что если центр ядра в два раза ниже соседних весов, то даже если сеть как целое разрушилась - это соотношение сохранилось в целом, и быстро найдёт себе применение. Это я называю "Сильные обобщения" и есть способ напрямую с ними эксперементировать. Например пересаживать сильные обобщения из одной сети в другую не полностью похожую.
А вот тут более интересно. Дело в том, что совсем не факт, что мы имеем дело с группой тоннелей, а не с одним щелевым каньоном. Тут простое теоретическое соображение: Смотри, возмём одну полностью обученную идеальную и прекрасную во всех соображениях сеть. Лучге всего если она прям в глобальном минимуме лежит. И поменяем в ней местами два нейрона. Все входящие и все исходящие веса. Очевидно, что сеть будет столь же прекрасна и удевительна, но в евклидовом пространсте эти два хороших решения разделяет огромное расстояния, и вообще не факт, что можно проложить путь с малым loss от одного такого решения до другуго, особенно если весов не супер-много. Тоесть из простых соображений симметрии понятно, что глобальный минимум всегда не один, а целое семейство равноэффективных глобальных минимумов, и тоннелей или каньонов к ним ведущих тоже много.
Но при этом, и тут придётся представить себе минимум четырёхмерное пространство, найдённый нами каньон предельно узок толькко в этой секущей плоскости. Понятно, что если по дну каньона всегда неприрывное снижение, а в сторону стенок резкий рост, и функция по определению непрерывна, то где-то есть направление сдвига вдоль которого loss не меняется, и двигаясь вдоль него мы попадаем в другое место, где каньон примерно такой же прекрасный, но сечение другой и это часть данного каньона. В одной секущей плоскости он узкий каньон, но вдоль другой оси, например четвёртой, он - единая мировая щель (одна из щелей симметричного семейства). И видимо, спускаясь на дно после отступа мы попадаем в другие места этой щели, вероятно оттуда до исходной точки можно дойти с малым изменением ошибки - Такое Ветров показывал в своей работе но только для ландшафтов уже успешных, да ещё и грокнувших. Но видимо это просто общее свойство ландшафтов.
Тоесть да, мы спускаемся в другой тоннель если смотреть его в этой секущей плоскости, но он почти наверняка часть той же щели или, если хочешь, многомерного каньона, просто в другое место этого каньона если считать вдоль другой оси координат, третьей в этом смысле. К тому же соображению можно прийти если подумать, что отступ в данном эксперементе, можно выбирать сколь угодно малый и непрерывный, и судя по тому, что я не вижу точек бифрукации, по крайней мере на этому участке, видимо великая мировая щель на этом месте не раздваивается.
Вот такие соображения. На модельной задаче, которую я показывал на семинаре, это, к сожалению, никак не сказывается, потмоу что чтобы это соображение учесть задача должна быть как минимум трёхмерной, а такую задачу м траектории по ней трудно и неудобно визуализировать.
Как оно для малых значений, или что то же самое - "в центральном углублении"
Думаю, это не очень интересно, потому что мы стекаем обратно туда, откуда лишь слегка отпрыгнули.
"нет ли ошибки в коде?"
Как раз сейчас дома считается картинка с гораздо более аккуратным способом подсчёта расстояния до тоннеля, вечером выложу. Это, возможно победит убегание в стороны в нижней части графика, или покажет, что это часть осмысленного процесса, что тоже интересно, но приципиально картины не поменяет, я полагаю. Конечно всегда нельзя исключать, потому что результат совсем свежий, но судя по степени того на сколько он похож на теоретические предсказания - скорее всего норм.
"Свези между ними уже какие-то нарабатываются и они видимо не разрушаются так быстро."
Да но, я скорее придаю важность соотношению между весами одного нейрона. Грубо говоря, если в свёртке выработалось обобщение, что если центр ядра в два раза ниже соседних весов, то даже если сеть как целое разрушилась - это соотношение сохранилось в целом, и быстро найдёт себе применение. Это я называю "Сильные обобщения" и есть способ напрямую с ними эксперементировать. Например пересаживать сильные обобщения из одной сети в другую не полностью похожую.
Раз мы быстро скатываемся обратно, значит из тоннеля мы не вышли
А вот тут более интересно. Дело в том, что совсем не факт, что мы имеем дело с группой тоннелей, а не с одним щелевым каньоном. Тут простое теоретическое соображение: Смотри, возмём одну полностью обученную идеальную и прекрасную во всех соображениях сеть. Лучге всего если она прям в глобальном минимуме лежит. И поменяем в ней местами два нейрона. Все входящие и все исходящие веса. Очевидно, что сеть будет столь же прекрасна и удевительна, но в евклидовом пространсте эти два хороших решения разделяет огромное расстояния, и вообще не факт, что можно проложить путь с малым loss от одного такого решения до другуго, особенно если весов не супер-много. Тоесть из простых соображений симметрии понятно, что глобальный минимум всегда не один, а целое семейство равноэффективных глобальных минимумов, и тоннелей или каньонов к ним ведущих тоже много.
Но при этом, и тут придётся представить себе минимум четырёхмерное пространство, найдённый нами каньон предельно узок толькко в этой секущей плоскости. Понятно, что если по дну каньона всегда неприрывное снижение, а в сторону стенок резкий рост, и функция по определению непрерывна, то где-то есть направление сдвига вдоль которого loss не меняется, и двигаясь вдоль него мы попадаем в другое место, где каньон примерно такой же прекрасный, но сечение другой и это часть данного каньона. В одной секущей плоскости он узкий каньон, но вдоль другой оси, например четвёртой, он - единая мировая щель (одна из щелей симметричного семейства). И видимо, спускаясь на дно после отступа мы попадаем в другие места этой щели, вероятно оттуда до исходной точки можно дойти с малым изменением ошибки - Такое Ветров показывал в своей работе но только для ландшафтов уже успешных, да ещё и грокнувших. Но видимо это просто общее свойство ландшафтов.
Тоесть да, мы спускаемся в другой тоннель если смотреть его в этой секущей плоскости, но он почти наверняка часть той же щели или, если хочешь, многомерного каньона, просто в другое место этого каньона если считать вдоль другой оси координат, третьей в этом смысле. К тому же соображению можно прийти если подумать, что отступ в данном эксперементе, можно выбирать сколь угодно малый и непрерывный, и судя по тому, что я не вижу точек бифрукации, по крайней мере на этому участке, видимо великая мировая щель на этом месте не раздваивается.
Вот такие соображения. На модельной задаче, которую я показывал на семинаре, это, к сожалению, никак не сказывается, потмоу что чтобы это соображение учесть задача должна быть как минимум трёхмерной, а такую задачу м траектории по ней трудно и неудобно визуализировать.
🤔2