Обложка канала

tldr_tany

3881 @tldr_tany

Всем привет! Я Таня @tany_savelieva, делаю стартап SupportAI, благотворительный фонд MIPTHEALTH, инвестирую и увлекаюсь web3. Пишу про технологии, работу и то, что меня вдохновляет

tldr_tany

8 лет назад
Открыть в
Program Synthesis Through Reinforcement Learning Guided Tree Search
https://arxiv.org/pdf/1806.02932.pdf
🕐 Когда - 8 июня 2018
👓 В чем понт
Модель на основе обучения с подкреплением и поиска по дереву, умеющая писать программный код и обгоняющая остальные SOTA подходы до 400%

🔎 Подробности
С точки зрения RL задачу можно поставить так: у нас есть агент - алгоритм-программист. Действия - это строки программного кода, который он может писать, состояния - память до и после написания кода. Реворд обратно пропорционален сумме действий, которые пришлось совершить агенту (хотим писать короткий код) и расстоянию между желаемым и наблюдаемым состоянием памяти. После того, как мы набираем некий пороговый реворд, программа считается решенной. В результате обучения мы получаем политику - то, с какой вероятностью из текущего состояния памяти нужно писать каждую возможную строку кода. Оптимизируемся мы алгоритмом Q-learning - предсказываем будущий реворд из определенного состояния и действия. Однако процесс решения долгий и, чтобы его ускорить, увеличив количество решенных программ за фиксированное число попыток, применяется поиск по дереву. Сначала мы с учетом политики случайно выбираем следующие состояния, считаем для них реворд, обучаемся на этом, делаем так 100 раз. Затем мы считаем Q-функцию для всех состояний, в которые мы случайно не попали, а потом жадно (сэмплируем из политики не вероятностно, а наиболее оптимально) выбираем следующия состояния, обучаемся на них, делаем так еще 100 раз. Это позволяет не упереться в локальный минимум и быстрее обучиться. Именно поиск по дереву - одна из главных фишек статьи, дающая прирост во всех экспериментах на 70%-100%.

🖋 Что в итоге
Шаг навстречу автоматизации программирования, модель заметно лучшего качества, решает до 400% больше программ, чем ее предшественники(например, MCMC - стохастический поиск, основанный на эвристике), не делает дополнительных предположений о языке программирования, отправлена на NIPS 2018.