Pull to refresh

Comments 16

UFO just landed and posted this here

А что выбрано в качестве исходной архитектуры и сколько свободных параметров?

Просто у меня на тестовом датасете MNIST при 50тыс свободных параметров сети безо всяких оптимизаций, стандартным ADAMом, дефолтным батчем и LR точность 99.18% . Правда, архитектура проприетарная, да.

Спасибо за комментарий )
Идем от простого к сложному.
В данной статье архитектура тестовая - FNN с одним скрытым слоем.

А сколько свободных параметров?

Если у вас 8000 нейронов в скрытом слое - это порядка 6.5млн свободных параметров в сети. Для такой сетки 98.6% - очень плохой показатель, такие нейронки все дают результаты выше 99%, посмотрите обзор https://doi.org/10.1016/j.neunet.2021.01.026 , там в последней таблице есть бенчмарки по различным сеткам. И вообще, 8000 нейронов - это сильно много, по теории 1600 должно быть достаточно.

Спасибо за комментарий )

На всякий случай для ясности.
В данном примере не оптимизируем структуру и тип сети. Это FNN с одним скрытым слоем. Не сверточная, не многослойная, не предобученная. Изображения не крутим, никаких новых не генерируем - только исходный датасет.

Перебирается несколько вариантов количеств признаков - от 128 до 8192 с несколькими вариантами размеров батчей - от 16 до 1024.

Запустили дефолтные установки на 50000 признаков, как в комментарии.
Действительно, уже на 9 эпохе 0.9895, и возможно, что дальше будет еще чуть лучше.
Это интересно ...

До Вашего комментария не думали в таком примере на такое количество признаков выходить )

У вас в коде число признаков=числу нейронов в скрытом слое. Боюсь, вы вводите в заблуждение. В полносвязной сети уже для 128 нейронов у вас больше 100тыс свободных параметров. А при 50тыс нейронов соответственно 40млн свободных парампетров. 40млн по мощности - это сетка класса ResNet, если что.

Что вы называете числом признаков? Если число нейронов - то это одно, если число неизвестных коэффициентов сети - это другое. Эти величины различаются на порядки

По моему, у вас всего два признака - размер батча и число нейронов в скрытом слое.

Да, действительно, под "числом признаков" имелось ввиду "число нейронов скрытого слоя", и это может вводить в заблуждение.

Спасибо за подстветку, скорректируем формулировки )

 "размер батча" и "число нейронов в скрытом слое" - понимаем как "гиперпараметры"

Может я не понимаю вашего гения, но оптимизатор то у вас Adam. Оптимизатор стохастический.

Какой смысл тогда в построении поверхности при различных значениях параметров, и её дальнейшем анализе? Ведь если вы ещё раз попробуете построить эту поверхность, у вас будут совершенно другие результаты

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

Это как раз можно попробовать посчитать. Интервал Уилсона для тестового датасета (на MNIST его длина 10000), средней точности 98.6% и стандартного статистического уровня значимости alpha=0.05 составляет

(98.35%, 98.81%)

Т.е. 95% всех рандомных запусков по идее будут попадать в интервал (98.58+/-0.23)%, и любые достигнутые точности внутри этого интервала - просто случайность.

Т.е. разницы между 98.6% и 98.69% никакой - это обычный случайный разброс, и допустимый разброс составляет действительно порядка полпроцента.

Для обучающего датасета (длина 60000) этот интервал чуть меньше, и равен

(0.9850, 0.9869).

Т.е. и учет случайности обучения (рандомные коэффициенты при инициализации и все такое) тоже говорит о случайности 98.69% по сравнению 98.60%.

Обычно в таких случаях говорят, что улучшения нет.

Спасибо за комментарий )

Действительно, 98.6% и 98.69% - это не улучшение, а "вариативность", вызванная применяемыми рандомностями.

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

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

Спасибо за комментарий )

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

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

Спасибо за комментарий )

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

Смысл построения поверхности с точки зрения данной статьи и разрабатываемого алгоритма такой:

1. Посмотреть "форму" поверхности.
Имеется в виду, что изначально мы ее не знаем. То есть мы не знаем - это набор гипербол с единым оптимумом, или постоянно колеблющиеся экстремумы, или единая наклонная гиперплоскость - на данном этапе представление о форме поверхности отсутствует. Это как бы первый "прицел" для понимания, с чем предстоит работать.

2. Мы предполагаем (не утверждаем, а именно предполагаем, и это вопрос тестирования), что даже с учетом вариативности результата обучения сравнительный результат различных соотношений может сохраняться. То есть несколько обучений при соотношении (1024,64) дадут отличающийся результат, и несколько обучений при соотношении (128, 32) дадут отличающийся результат, но совокупность результатов соотношения (1024, 64) может быть в целом лучше, и тогда именно это соотношение запоминается как "потенциально оптимальное". Таким образом по завершении соответствующего этапа формируется набор "потенциально оптимальных" соотношений, которые в целом лучше, чем остальные, и именно они прорабатываются на следующем этапе.

Базовая идея видится так:

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

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

3. Дополнительные возможности заключаются в том, что вычисления по каждой зоне независимы, то есть их можно запускать на разных машинах и потом объединять результаты. Таким образом мы как бы смотрим на поверхность общим взглядом и птом запускаем одновременно несколько шариков по выбранным "потенциально оптимальным" зонам.

Sign up to leave a comment.

Articles