Для чего используется визуальный ресурсный оптимизатор сдо
Оптимизация загрузки ресурсов: от фантома выравнивания к визуальным ресурсным оптимизаторам
Идея о «красной кнопке» оказалась снова фантомом,
в этот раз для выравнивания ресурсов
Задача оптимизации загрузки ресурсов всегда стояла перед профессиональными менеджерами проектов. Данная задача подразумевает составление графиков с максимальной загрузкой ресурсов и с другой стороны ликвидацию перегрузки ресурсов. Собственно владением техниками оптимизации графиков с учетом загрузки ресурсов профессиональный планировщик и отличается от новичка.
Однако пора признать, что на рынке инструментов управления проектами вроде бы предназначенными для решения этих задач надулся «пузырь» в виде 100% автоматического выравнивания (resource leveling). Дело даже не в конкретных поставщиках алгоритмов, а в том, что не смотря на активную рекламу менее 1% пользователей смогли внедрить такие системы, хотя следуя рекламе покупают многие решения для этого.
Очень интересно, что пузырь автоматического выравнивания в России во многом проколол обычный менеджер строительного проекта из Уфы, который на простых примерах публично доказал несостоятельность не просто выравнивания в какой-то конкретной системе управления проектами, а то что сама идея не более чем математическая абстракция далекая от реальной практики. Кто не читал эти поучительные замечания практика, смогут с ними ознакомится в этой статье.
Опросы пользователей произведенные Microsoft показали, что понимание того, что автоматическое выравнивание это «пузырь» уже стало понятно большинству профессионалов. Поэтому Microsoft предложил инструменты нового поколения известные как визуальные ресурсные оптимизаторы, которые впервые появились Microsoft Project 2010 Professional.
Критика автоматического выравнивания обычно состоит в том, что алгоритмы претендующие путем нажатия на «красную кнопку» волшебным образом оптимизировать загрузку ресурсов на самом деле не в состоянии смоделировать всю сложность реального мира, а также сложность их настройки так велика, что теряется смысл метода, поскольку трудоемкость настройки становится намного выше ручного анализа и ручного разрешения ресурсных конфликтов.
Очень часто системы автоматического выравнивания продаются через форумы, т.к. сложность настройки заставляет поставщика искать там профессиональных планировщиков. Однако в одном из таких случаев «нашла коса на камень». Профессиональный планировщик являющийся строителем из Уфы убедительно доказал несостоятельность идеи автоматического выравнивания ресурсов. Аргументация планировщика была настолько убедительной, что быстро разошлась среди профессионалов. Поэтому вендор был вынужден искать способы как стереть это обсуждение. Администраторы форума согласились стереть только реплики вендора, но оставить аргументацию практика, которые без труда находятся через Google. Эти аргументы стали тем более ценны, т.к. уже критикуют не конкретную реализацию выравнивания у конкретного вендора, а саму идею автоматического выравнивания в принципе. Чтобы было проще воспринимать аргументы практика в ходе дискуссии кратко сформулируем какие вопросы ставил вендор.
«Автоматическое выравнивание ресурсов чревато»
ВЕНДОР на форуме в ответ на запрос нового пользователя начинает рекламировать автоматическое выравнивание и получает критическое замечание от строителя-практика, что это абстракция, неспособная адекватно моделировать реальность.
СТРОИТЕЛЬ: Как показывает практика, доверять выравнивание ресурсов программе нельзя, ибо чревато. Появляются такие решения, которые в рамках поставленной задачи вроде и справедливы, но к реальности абсолютно неприменимы. Существует слишком много факторов, которые алгоритм (каким бы совершенным он ни был) учесть не в состоянии.
«Всю логику реальности ни одна модель не учтет»
ВЕНДОР утверждает, что его алгоритмы выравнивания идеальны, а строитель на примере показывает комичность срабатывания алгоритма в реальности.
«Еще примеры из жизни, которые сложно моделировать существующим ПО»
ВЕНДОР пытается утверждать, что приведенный пример с необходимостью телепортации и перемещения людей пешком по застывающему бетону является исключением из правил, а обычно все нормально. Строитель-практик на примерах показывает, что как раз обычно с выравниванием ненормально и модель выравнивания несовершенна в принципе.
Еще ситуации из жизни, которые сложно моделировать существующим ПО.
1. Объект поделен на зоны. В зону Б можно попасть только из зоны А, но в ней недавно установили уровни для заливки бетона. Если несколько человек в Б еще могут пройти, то пронос громоздких материалов чреват тем, что заденут уровни. Этого допускать нельзя.
ВЕНДОР пытается упростить задачу, чтобы алгоритм выравнивания мог ее решить, а строитель-практик указывает, что это «искусственное решение» и продолжает приводить примеры показывающие, что это математическая абстракция, а не реальность. Также строитель-практик указывает, что сама попытка запустить алгоритм выравнивания лишается эффекта «красной кнопки» и от пользователя потребуются огромные усилия по настройке.
1. Ресурсы могут быть поставлены в любой момент. Просто движок оптимизатора должен знать, что пока желательно не начинать работы, в которых задействованы громоздкие ресурсы и учитывать геометрию объекта. Такого пока нигде нет.
Еще вопросы показывающие, что алгоритм выравнивания абстракция =)
ВЕНДОР пытается утверждать, что в справочники его алгоритмов универсальны и могут отразить абсолютно любую специфику проекта, строитель-практик доказывает, что это не так.
1. Угу. А как Вы отражаете показатель «громоздкость» ресурса в справочниках? И как изменение данного показателя у ряда ресурсов повлияет на процесс оптимизации расписания? =)
Автоматическим выравниванием решаются только специфические проблемы, но комплексного решения оно не дает
ВЕНДОР пытается сузить задачу показывая, что его алгоритм умеет выравнивать материалы и умеет работать с календарями, строитель-практик показывает, что в реальности выравнивание по материалам даст сбой и календари недостаточно надежны, чтобы доверится автомату.
СТРОИТЕЛЬ:
1. И вместе с тем, что будет если заменим громоздкие мешки с раствором на маленькие во всем проекте? Или наоборот? Придется пересматривать весь проект в поисках мест, где подобное изменение значимо?
А зачем оглядываться только на то, что пытаются продать поставщики продуктов?
ВЕНДОР: «Если оптимизацию расписания, то где кроме [рекламируемый продукт] вы такое встречали?»
СТРОИТЕЛЬ: А зачем оглядываться только на то, что уже вышло в массовую продажу? =)
Дискуссия как видим закончилась прямым предложением купить и отказом строителя с выражением желания рассматривать альтернативы (отметим, в момент дискуссии MS Project 2010 еще не вышел).
Надо отметить, что практик-строитель на примерах убедительно показал все основные пороки 100% автоматического выравнивания:
Альтернатива автоматическому выравниванию это визуальные ресурсные оптимизаторы Microsoft работающие по другому сценарию, которые учитывает критику старых методов.
Визуальные ресурсные оптимизаторы Microsoft
Понятное даже простому строителю фиаско идеи автоматического выравнивания не снимает с повестки для вопрос как построить решения с эффективной оптимизацией ресурсов.
Опросы планировщиков проведенные Microsoft показывают, что несостоятельность 100% автоматического выравнивания уже понятна почти всем, однако формируется запрос на инструменты где планировщик и программа в ходе интерактивного взаимодействия оптимизируют загрузку ресурсов с минимальными трудозатратами для планировщика.
Так родилась идея визуальных ресурсных оптимизаторов, которые впервые появились в Microsoft Project 2010 Professional.
Суть идеи состоит в том, что основной сценарий оптимизации ресурсов базируется на том, что программа визуализирует с помощью большого набора графических средств где именно в проекте имеются места требующие оптимизации. Интерфейс программы спроектирован так, чтобы планировщик мог только парой кликой мыши дать указание программе как оптимально воспользоваться ресурсами на операции.
Фактически работа с визуальным ресурсным оптимизатором напоминает игру в стратегию, где вы планировщик просматривая индикаторы просто мышью дает советы программе какое решение лучше.
Скорость работы планировщика в таком сценарии ресурсной оптимизации примерно в 10 раз выше, чем при настройке огромных форм с параметрами для автоматического выравнивания. Результаты автоматическое выравнивания нужно также обязательно проверять, иначе можно попасть в комические ситуации описанные строителем-практиком выше. Причем в старых системах управления проектами для визуализации «подозрительных мест» в проекте нет никаких средств визуализации. Планировщик вынужден делать утомительную и монотонную работу по монотонной проверке всех операций.
Microsoft Project 2010 Professional напротив сразу указывает индикаторами куда обратить внимание.
В MS Project 2010 встроено сразу несколько визуальных ресурсных оптимизаторов, главные из которых два:
Для строительных проектов характерна оптимизация всей команды сразу, поэтому по просьбе Владимира Иванова (MVP) в Microsoft Project 2010 добавили средство для поддержки оптимизации команд ресурсов.
Как использовать визуальные ресурсные оптимизаторы Microsoft можно будет будет посмотреть в видеоуроке, ссылку на который получат подписчики нашей рассылки в следующем ее выпуске. Для получения рассылки с бесплатными видеоуроками по Microsoft Project нужно зарегистрироваться на нашем портале. Если конечно остались русскоязычные пользователи Microsoft Project, которые не у нас, т.к. наш портал объединяет 156 000 профессионалов в управлении проектами.
Продолжение следует.
Расскажите о статье в Facebook и Twitter. Если статья понравилась, поставьте нам «плюс» Google.
Если вы заметили любую ошибку в статье, вы можете сообщить об этой ошибке редакторам сайта, выделив мышью отрывок текста с ошибкой и нажав Ctrl+Enter. Ваша помощь в улучшении материалов для нас неоценима!
Переиздание материалов портала разрешено при условии действующей URL-ссылки на исходную страницу с материалом. Портал не несет ответственности за достоверность информации из источников, на которые приводятся ссылки. Портал отказывается от всех гарантий по точности, полноте и адекватности информации. Портал отказывается от гарантий отсутствия ошибок, неадекватности оценок и гарантий по достоверности интерпретаций. Читатель данных материалов может принимать решения на основе их под свою ответственность. Оценки, изложенные в материалах, могут быть изменены без предупреждения.
Как правильно использовать систему дистанционного обучения для повышения ее эффективности
Система дистанционного обучения (СДО) играет жизненно важную роль в обеспечении эффективного онлайн-обучения. Одним из ее преимуществ является то, что она помогает создавать обучение, которое отвечает потребностям отдельных учеников.
С помощью СДО вы можете предоставить своим сотрудникам/учащимся индивидуальное обучение. Кроме того, они также могут учиться в своем собственном темпе, что делает их более продуктивными для организации. Также системы дистанционного обучения экономичны и помогают повысить производительность труда и рентабельность инвестиций в обучение.
Однако, чтобы получить максимальную отдачу от СДО, нужно учитывать некоторые рекомендации.
Вот 6 советов как использовать свою систему дистанционного обучения для повышения ее эффективности:
1. Убедитесь, что ваши ученики понимают все преимущества использования СДО
Одним из преимуществ онлайн-обучения является более глубокое взаимодействие с учебными ресурсами. Поэтому, если ваши сотрудники/учащиеся не получают максимальную пользу из СДО, то определенно их производительность будет страдать.
Однако, чтобы этого не произошло, вам необходимо донести ученикам все плюсы использования системы: большая доступность, мобильность и гибкость обучения, надежная и своевременная поддержка и т.д.
2. Четко сформулируйте цели использования системы дистанционного обучения
Чтобы вы могли максимально эффективно использовать свою СДО, важно, чтобы у вас была всеобъемлющая стратегия, которая будет направлять ваших учащихся/сотрудников при ее использовании. Поэтому, прежде чем вы начнете ее внедрять, желательно пообщаться со своими инструкторами, учащимися и другими заинтересованными сторонами в вашей организации.
Суть в том, чтобы определить, чего они хотят достичь после использования вашей системы обучения. И, узнав это, вы можете легко создать план того, как они будут достигать своих целей.
3. Убедитесь, что ваши сотрудники могут получить доступ к учебным ресурсам на предпочитаемых ими устройствах
Большинство сотрудников используют свои мобильные устройства для доступа практически ко всему. Поэтому они более охотно будут изучать учебный контент в СДО, если будет возможность делать это с помощью мобильных телефонов или планшетов.
Таким образом, вы должны предоставить своим сотрудникам возможность доступа к вашему учебному контенту с любого устройства, когда им это необходимо.
Вы можете добиться этого только тогда, когда у вас есть правильный инструмент. Говоря о надежной СДО, она должна иметь возможность адаптивного и гибкого дизайна. Кроме того, вам также следует подумать об использовании видео или другого удобного для мобильных устройств контента в своих учебных онлайн-курсах.
4. Создавайте каждый учебный модуль/раздел, ориентируясь на одну цель обучения
Еще одна вещь, которую вы должны учитывать, если хотите использовать по максимуму свою СДО – это избегать информационной перегрузки. Когда у ваших учеников слишком много информации для усвоения, то их внимание рассеивается и качество обучения падает.
Поэтому, чтобы этого не произошло, рекомендуется использовать подход микрообучения. С помощью этой стратегии обучения вы сможете донести свой учебный контент, сосредоточившись на одной цели обучения за раз.
Кроме того, с помощью системы дистанционного обучения вы сможете разбить обучение на небольшие учебные модули или разделы, чтобы ваши ученики могли легко усвоить и запомнить информацию.
5. Отчетность, аналитика и сбор полезных отзывов
Чтобы получить больше пользы от использования СДО, вы должны убедиться, что вы или ваши администраторы полноценно используют функции отчетности и аналитики. Преимущество в том, что это помогает легко отслеживать индивидуальную успеваемость ваших учеников. Кроме того, ваши менеджеры по персоналу и наставники смогут выявлять пробелы в навыках учащихся, предоставляя им дополнительные ресурсы, которые помогут восполнить пробелы.
Кроме того, хорошая СДО помогает отслеживать основные показатели обучения и собирать обратную связь и отзывы учеников. Говоря о показателях, например, существуют визуализации данных, которые помогут вам определять закономерности и легко проверить, проблема с эффективностью отдельного ученика или стратегией компании в целом.
6. Разработайте индивидуальные планы обучения
Еще один способ получить максимум от использования системы дистанционного обучения – это создание учебных планов. Чтобы сделать это правильно, вы можете создать программы обучения для всех и индивидуальные учебные планы специально для отдельных учеников/сотрудников в зависимости от уровня знаний, должности и т.п.
Учитывайте эти 6 советов, чтобы использовать свою систему дистанционного обучения максимально эффективно и сделать обучение на ней результативным и удобным для учеников.
Объясняем на пальцах принцип действия оптимизаторов для нейронных сетей: основные алгоритмы, и зачем они нужны
Оптимизаторы — важный компонент архитектуры нейронных сетей. Они играют важную роль в процессе тренировки нейронных сетей, помогая им делать всё более точные прогнозы. Специально к старту нового потока расширенного курса по машинному и глубокому обучению, делимся с вами простым описанием основных методик, используемых оптимизаторами градиентного спуска, такими как SGD, Momentum, RMSProp, Adam и др.
Оптимизаторы определяют оптимальный набор параметров модели, таких как вес и смещение, чтобы при решении конкретной задачи модель выдавала наилучшие результаты.
Самой распространённой техникой оптимизации, используемой большинством нейронных сетей, является алгоритм градиентного спуска.
Большинство популярных библиотек глубокого обучения, например PyTorch и Keras, имеют множество встроенных оптимизаторов, базирующихся на использовании алгоритма градиентного спуска, например SGD, Adadelta, Adagrad, RMSProp, Adam и пр.
Но почему алгоритмов оптимизации так много? Как выбрать из них правильный?
В документации к каждому из таких оптимизаторов приводится формула, с помощью которой такие оптимизаторы обновляют параметры модели. Что же означает каждая формула, и в чём её смысл?
Хочу уточнить, что данная статья написана для того, чтобы вы поняли общую картину и как в такую картину вписывается каждый алгоритм. Я не буду здесь погружаться в глубинные смыслы самих формул, так как рассуждать о математических тонкостях лучше всего в отдельной статье.
Обзор методов оптимизации на базе алгоритма градиентного спуска
Кривая потерь
Начнём с того, что рассмотрим на 3D-изображении, как работает стандартный алгоритм градиентного спуска.
Кривая потерь для алгоритма градиентного спуска
На рисунке показана сеть с двумя весовыми параметрами:
На горизонтальной плоскости размещаются две оси для весов w1 и w2, соответственно.
На вертикальной оси откладываются значения потерь для каждого сочетания весов.
Другими словами, форма кривой является отражением “ландшафта потерь” в нейронной сети. Кривая представляет потери для различных значений весов при сохранении неизменным фиксированного набора входных данных.
Синяя линия соответствует траектории алгоритма градиентного спуска при оптимизации:
Работа алгоритма начинается с выбора некоторых случайных значений обоих весов и вычисления значения потери.
После каждой итерации весовые значения будут обновляться (в результате чего, как можно надеяться, снизится потеря), и алгоритм будет перемещаться вдоль кривой к следующей (более нижней) точке.
В конечном итоге алгоритм достигает цели, то есть приходит в нижнюю точку кривой — в точку с самым низким значением потерь.
Вычисление градиента
Алгоритм обновляет значения весов, основываясь на значениях градиента кривой потерь в данной точке, и на параметре скорости обучения.
Обновление параметра градиентного спуска
Градиент измеряет уклон и рассчитывается как значение изменения в вертикальном направлении (dL), поделённое на значение изменения горизонтальном направлении (dW). Другими словами, для крутых уклонов значение градиента большое, для пологих — маленькое.
Вычисление градиента
Практическое применение алгоритма градиентного спуска
Визуальное представление кривых потерь весьма полезно для понимания сути работы алгоритма градиентного спуска. Однако нужно помнить, что описываемый сценарий скорее идеален, чем реален.
Во-первых, на приведённом выше рисунке кривая потерь идёт идеально плавно. На самом деле горбов и впадин на ней гораздо больше, чем плавных мест.
Во-вторых, мы будем работать не с двумя параметрами, а с гораздо большим их числом. Параметров может быть десятки или даже сотни миллионов, их просто невозможно визуализировать и представить даже мысленно.
На каждой итерации алгоритм градиентного спуска работает, «озираясь по всем направлениям, находя самый перспективный уклон, по которому можно спуститься вниз». Но что произойдёт, если алгоритм выберет лучший, по его мнению, уклон, но это будет не лучшее направление? Что делать, если:
Ландшафт круто уходит вниз в одном направлении, но, чтобы попасть в самую нижнюю точку, нужно двигаться в направлении с меньшими изменениями высоты?
Весь ландшафт представляется алгоритму плоским во всех направлениях?
Алгоритм попадает в глубокую канаву? Как ему оттуда выбраться?
Давайте рассмотрим несколько примеров кривых, перемещение по которым может создавать трудности.
Трудности при оптимизации градиентного спуска
Локальные минимумы
На стандартной кривой потерь, кроме глобального минимума, может встретиться множество локальных минимумов. Главной задачей алгоритма градиентного спуска, как следует из его названия, является спуск всё ниже и ниже. Но, стоит ему спуститься до локального минимума — и подняться оттуда наверх часто становится непосильной задачей. Алгоритм может просто застрять в локальном минимуме, так и не попав на глобальный минимум.
Локальный минимум и глобальный минимум
Седловые точки
Ещё одной важной проблемой является прохождение алгоритмом «седловых точек». Седловой называют точку, в которой в одном направлении, соответствующем одному параметру, кривая находится на локальном минимуме; во втором же направлении, соответствующем другому параметру, кривая находится на локальном максимуме.
Седловая точка
Какую опасность таят в себе седловые точки, которые алгоритм может встретить на своём пути? Опасность в том, что область, непосредственно окружающая седловую точку, как правило, довольно плоская, она напоминает плато. Плоская область означает практически нулевые градиенты. Оптимизатор начинает колебаться (осциллировать) вокруг седловой точки в направлении первого параметра, не “догадываясь” спуститься вниз по уклону в направлении второго параметра.
Алгоритм градиентного спуска при этом ошибочно полагает, что минимум им найден.
Овраги
Ещё одна головная боль алгоритма градиентного спуска — пересечение оврагов. Овраг — это протяжённая узкая долина, имеющая крутой уклон в одном направлении (т.е. по сторонам долины) и плавный уклон в другом (т.е. вдоль долины). Довольно часто овраг приводит к минимуму. Поскольку навигация по такой форме кривой затруднена, такую кривую часто называют патологическим искривлением (Pathological Curvature).
Овраги
Представьте узкую речную долину, плавно спускающуюся с холмов и простирающуюся вниз до озера. Вам нужно быстро спуститься вниз по реке, туда, где пролегает долина. Но алгоритм градиентного спуска вполне может начать движение, отталкиваясь попеременно от сторон долины, при этом движение вниз по направлению реки будет весьма медленным.
Алгоритм ванильного градиентного спуска, несмотря на его недостатки, по-прежнему считается основным, в частности, по той причине, что существуют специальные методы его оптимизации.
Первое улучшение алгоритма градиентного спуска — стохастический градиентный спуск (SGD)
Под обычным градиентным спуском (по умолчанию) обычно понимается «градиентный спуск со сменой коэффициентов после обсчёта всей выборки», то есть потери и градиент рассчитываются с использованием всех элементов набора данных.
Также применяется промежуточный стохастический градиентный спуск с мини-пакетами — вариант, при котором коэффициенты меняются после обсчета N элементов выборки, то есть для каждой тренировочной итерации алгоритм выбирает случайное подмножество набора данных.
Случайность выбора хороша тем, что она помогает глубже исследовать ландшафт потерь.
Ранее мы говорили, что кривая потерь получается за счёт изменения параметров модели с сохранением фиксированного набора входных данных. Однако если начать изменять входные данные, выбирая различные данные в каждом мини-пакете, значения потерь и градиентов также будут меняться. Другими словами, изменяя набор входных данных, для каждого мини-пакета мы получим собственную кривую потерь, которая немного отличается от других.
То есть, даже если алгоритм застрянет на каком-либо месте ландшафта в одном мини-пакете, можно будет запустить другой мини-пакет с другим ландшафтом, и вполне вероятно, что алгоритм сможет двигаться дальше. Данная техника предотвращает застревание алгоритма на определённых участках ландшафта, особенно на ранних этапах тренировки.
Второе усовершенствование алгоритма градиентного спуска — накопление импульса (Momentum)
Динамическая корректировка количества обновлений
Один из интересных аспектов алгоритма градиентного спуска связан с его поведением на крутых уклонах. Так как градиент на крутых уклонах большой, алгоритм в этих местах может делать большие шаги, между тем, именно здесь вы на самом деле хотите перемещаться медленно и осторожно. Это может привести к тому, что алгоритм будет «скакать» назад и вперёд, замедляя тем самым процесс тренировки.
В идеале частоту обновлений хочется изменять динамически, чтобы алгоритм мог подстраиваться под изменения окружающего ландшафта. Если уклон очень крутой, алгоритм должен притормаживать. Если склон довольно пологий, скорость вполне можно повысить, и так далее.
Алгоритм градиентного спуска обновляет веса на каждом шаге, используя в качестве параметров значения градиента и скорости обучения. Таким образом, для изменения количества обновлений можно выполнить два действия:
Скорректировать значение скорости обучения.
SGD с функцией накопления импульса и обычный SGD
Первое действие, то есть корректировка градиента, выполняется с помощью функции накопления импульса.
В SGD учитывается только текущее значение градиента, а значения всех прошлых градиентов игнорируются. Это означает, что, если алгоритм внезапно натолкнётся на аномалию на кривой потерь, он может пойти не по нужной траектории.
С другой стороны, при использовании SGD с накоплением импульса учитываются значения прошлых градиентов, общее направление сохраняется, и траектория остаётся правильной. Это позволяет использовать знания об окружающем ландшафте, полученные алгоритмом до того, как он добрался до данной точки, и смягчить эффект аномалии кривой потерь.
Сразу встаёт вопрос — как далеко можно углубляться в прошлое? Чем глубже мы погрузимся в прошлое, тем меньше вероятность воздействия аномалий на конечный результат.
И второй вопрос — все ли градиенты из прошлого можно расценивать одинаково? Вполне логично рассудить, что вещи из недавнего прошлого должны иметь более высокую значимость, чем вещи из далёкого прошлого. Поэтому, если изменение ландшафта представляет собой не аномалию, а естественное структурное изменение, на такие изменения нужно реагировать соответственно и менять курс постепенно.
Функция накопления импульса использует при работе экспоненциальное скользящее среднее, а не текущее значение градиента.
Переходы через овраги с помощью функции накопления импульса
Функция накопления импульса помогает решить проблему узкого оврага с патологическим искривлением, градиент которого, с одной стороны, очень большой для одного весового параметра, а, с другой стороны, очень маленький для другого параметра.
Функция накопления импульса помогает преодолевать овраги
С помощью функции накопления импульса можно сгладить зигзагообразные скачки алгоритма SGD.
Для первого параметра с крутым уклоном большое значение градиента приведёт к резкому повороту от одной стороны оврага к другой. Однако на следующем шаге такое перемещение будет скомпенсировано резким поворотом в обратном направлении.
Если же взять другой параметр, мелкие обновления на первом шаге будут усиливаться мелкими обновлениями на втором шаге, так как эти обновления имеют то же направление. И именно такое направление вдоль оврага будет направлением, в котором необходимо двигаться алгоритму.
Вот некоторые примеры алгоритмов оптимизации, использующих функцию накопления импульса в разных формулах:
SGD с накоплением импульса
Ускоренный градиент Нестерова
Третье усовершенствование алгоритма градиентного спуска — изменение скорости обучения (на базе значения градиента)
Как уже было сказано выше, вторым способом изменения количества обновлений параметров является изменение скорости обучения.
До сих пор на разных итерациях мы сохраняли скорость обучения постоянной. Кроме того, при обновлении градиентов для всех параметров использовалось одно и то же значение скорости обучения.
Однако, как мы уже убедились, градиенты с различными параметрами могут довольно ощутимо отличаться друг от друга. Один параметр может иметь крутой уклон, а другой — пологий.
Мы можем использовать это обстоятельство, чтобы адаптировать скорость обучения к каждому параметру. Чтобы выбрать скорость обучения для данного параметра, мы можем обратиться к прошлым градиентам (для каждого параметра отдельно).
Данная функциональность реализована в нескольких алгоритмах оптимизации, использующих разные, но похожие методы, например Adagrad, Adadelta, RMS Prop.
Например, метод Adagrad возводит в квадрат значения прошлых градиентов и суммирует их в равных весовых пропорциях. Метод RMSProp также возводит в квадрат значения прошлых градиентов, но приводит их к экспоненциальному скользящему среднему, тем самым придавая более высокую значимость последним по времени градиентам.
После возведения градиентов в квадрат все они становятся положительными, то есть получают одно и то же направление. Таким образом, перестаёт действовать эффект, проявляющийся при применении функции накопления импульса (градиенты имеют противоположные направления).
Это означает, что для параметра с крутым уклоном значения градиентов будут большими, и возведение таких значений в квадрат даст ещё большее и всегда положительное значение, поэтому такие градиенты быстро накапливаются. Для погашения данного эффекта алгоритм рассчитывает скорость обучения посредством деления накопленных квадратов градиентов на коэффициент с большим значением. За счет этого алгоритм “притормаживает” на крутых уклонах.
Рассуждая аналогично, если уклоны небольшие, накопления также будут небольшими, поэтому при вычислении скорости обучения алгоритм разделит накопленные квадраты градиентов на коэффициент с меньшим значением. Таким образом, скорость обучения на пологих склонах будет увеличена.
Некоторые алгоритмы оптимизации используют сразу оба подхода — изменяют скорость обучения, как это описано выше, и меняют градиент с помощью функции накопления импульса. Так поступает, например, алгоритм Adam и его многочисленные варианты, а также алгоритм LAMB.
Четвёртое усовершенствование алгоритма градиентного спуска — изменение скорости обучения (на базе тренировочной выборки)
В предыдущем разделе скорость обучения менялась на основе градиентов параметров. Плюс к этому, мы можем менять скорость обучения в зависимости от того, как продвигается процесс тренировки. Скорость обучения устанавливается в зависимости от эпохи тренировочного процесса и не зависит от параметров модели в данной точке.
На самом деле эту задачу выполняет не оптимизатор, а особый компонент нейронной сети, называемый планировщиком. Я упоминаю здесь об этом только для полноты картины и для того, чтобы показать связь с техниками оптимизации, о которых мы здесь говорили. Саму же эту тему логично осветить в отдельной статье.
Заключение
Мы ознакомились с основными приёмами, используемыми методиками оптимизации на базе алгоритма градиентного спуска, рассмотрели причины их использования и взаимосвязи друг с другом. Представленная информация позволит лучше понять принцип действия многих специфических алгоритмов оптимизации. А если вы хотите получить больше знаний — обратите внимание на наш расширенный курс по машинному и глубокому обучению, в рамках которого вы научитесь строить собственные нейронные нейронные сети и решать различные задачи с их помощью.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля: