Принципы на практике

Разведка-оптимизация: систематическое улучшение пользовательских решений

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

Когда я был ребенком, мы с друзьями придумывали такие задачи, как съесть йогурт без помощи рук или съесть печенье на скорость. У всех нас было 30 секунд, чтобы придумать стратегию, а затем началось испытание. Крошки от печенья разлетались направо и налево, а йогурт редко попадал туда, куда должен был, попадая вместо этого в носы, глаза и даже уши. Первоначальные стратегии, которые мы разработали, редко оказывались успешными, поэтому настоящей задачей было постоянно улучшать их или изобретать еще лучшие. Мы сделали это методом проб и ошибок, пытаясь добиться определенного успеха с помощью лучшей стратегии, которую мы придумали за это время. Возьмем, к примеру, проблему с печеньем. Учитывая размер, количество и сухость печенья, было принято чередовать маленькие кусочки в быстрой последовательности и проглатывать их целиком, чтобы определить, какая стратегия была наиболее эффективной.

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

Часть 1: принципы

Давайте рассмотрим следующий пример, чтобы более подробно проиллюстрировать общую проблему: вас пригласили принять участие в игровом шоу, и вы столкнулись с десятью коробками, наполненными разными суммами денег. Игра состоит из десяти раундов. Во время каждого из них вы должны выбрать один из ящиков, чтобы обнаружить и получить его ранее неизвестное содержимое. Теперь пустая коробка заполнена той же суммой, что и раньше, и вы снова можете играть. Ваша цель, очевидно, состоит в том, чтобы получить как можно больше денег. Интуитивно, учитывая ограничение, состоящее только в десяти раундах, мы попытаемся выбрать комбинацию ящиков, которая принесет наибольшую сумму денег, но проблема в том, что мы все еще не знаем суммы в каждом ящике. Единственный способ исследовать содержимое ящика — это выбрать его и обнаружить его содержимое. Как узнать, находится ли в выбранной коробке наибольшая сумма денег? Только зная содержимое других ящиков. После того, как вы определили нужное поле, вы можете использовать свои знания, повторно выбирая это поле.

Разведка-эксплуатация

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

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

Решить, когда исследовать, а когда использовать, - непростая задача, и она является предметом исследований в области обучения с подкреплением. В основе разведки и разработки лежит фундаментальный компромисс, который иногда называют дилеммой разведки-эксплуатации. Чем больше вы исследуете, тем меньше вы эксплуатируете, и наоборот. Это результат того, что вы можете либо исследовать, либо эксплуатировать, но не можете делать и то, и другое одновременно. Существует целая теория о том, как лучше всего подходить к этому в разных условиях, но, по сути, все сводится к интуиции: если вам не хватает конкретной информации о действиях, вы исследуете. Как только у вас будет достаточно информации и вы решите, что нашли лучшее или, по крайней мере, эффективное действие, вы начинаете использовать его.

Разведка-оптимизация

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

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

  • Исследование определяется как выбор нового действия и определение его выгод.
  • Оптимизация определяется как выбор известного действия и его улучшение.

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

Часть 2: на практике

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

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

Основные цели заключаются в следующем:

  • Создание разных версий документации для заданного кода
  • Систематическое улучшение доступной документации
  • Оценка различных версий документации для определения наиболее эффективного решения.

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

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

Пользовательские решения

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

  1. Этап интеграции: онлайн-учебники по кодированию интегрируют открытый исходный код в виде упражнений по чтению и документации.
  2. Этап создания: несколько учащихся параллельно работают над одними и теми же фрагментами кода и создают необходимую документацию в меру своих возможностей.
  3. Этап сбора: различные версии созданной пользователем документации возвращаются в промежуточную систему и сохраняются как часть области решения.

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

Систематическое улучшение

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

  1. Этап интеграции: онлайн-учебники по программированию интегрируют открытый исходный код, а также документацию, предоставленную в ходе обучения, в виде упражнений.
  2. Этап оценки: учащихся просят изучить код и оценить предоставленную документацию с помощью оценки производительности (например, от 0 до 100), высказав свое мнение о том, насколько понятна и точна документация.
  3. Этап уточнения: учащихся просят улучшить документацию в соответствии со своими потребностями.
  4. Этап восстановления: оценка производительности и улучшенная документация возвращаются на промежуточную платформу, где соответствующей документации присваивается оценка производительности и она обновляется до улучшенной версии.
  5. Этап отмены: система ищет документацию, которая не смогла повысить показатель производительности за последние пару итераций, и отбрасывает эту документацию.

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

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

Теория встречается с практикой

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

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

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

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

В духе сотрудничества, если у вас есть комментарии или идеи по улучшению, конструктивная критика или любая другая обратная связь, пожалуйста, свяжитесь с нами ([email protected]).