|
|
| Строка 1: |
Строка 1: |
| - | Работа над статьёй велась последовательно, путём итеративного уточнения запросов к языковой модели. | + | Работа велась в целью кардинально упростить промпт, перейдя от микроменеджмента к чистому «целеуказанию», а также протестировать, насколько хорошо модель опирается на прикрепленный RAG-контекст (PDF-лекцию). |
| | | | |
| - | === Этап 1: Проектирование структуры и RAG-контекст === | + | === Этап 1: Философский промпт и целеуказание === |
| - | Статья создавалась полностью с нуля. Для обеспечения максимальной точности формул и терминологии, модели Gemini 3.1 Pro Preview на вход была подана оригинальная PDF-презентация Лекции 2 К.В. Воронцова "Минимизация эмпирического риска, линейные модели и регуляризация".
| + | Модели был отправлен короткий запрос вместе с PDF-файлом Лекции 2: |
| | | | |
| - | Был сформулирован следующий базовый промпт:
| + | {{well|1='''Роль:''' Ты специалист в области машинного обучения, профессор и популяризатор науки. |
| | + | '''Задача:''' Написать вики-статью «Метод инерции Поляка (Momentum)» для новичков и профессионалов. |
| | | | |
| - | {{well|1=Выступи в роли Senior ML Engineer и специалиста по математической оптимизации. Твоя задача — написать с нуля фундаментальную, глубокую и технически точную энциклопедическую статью для портала MachineLearning.ru на тему «Метод инерции Поляка» (в индустрии известен как Momentum).
| + | '''Инструкция по смыслам:''' |
| | + | 1. Начни с наглядной физической аналогии «тяжёлого шарика», катящегося в минимум. |
| | + | 2. Приведи формулы обновления скорости и весов, строго опираясь на прикрепленную лекцию. |
| | + | 3. Опиши, как метод решает проблему «оврагов» и застревания в седловых точках. Обязательно укажи на важное свойство метода: '''немонотонность''' (ошибка может временно возрастать). |
| | + | 4. Проведи сравнение с Ускоренным градиентом Нестерова (NAG) — объясни логику «заглядывания вперёд». |
| | + | 5. Напиши лаконичный класс на Python, реализующий шаг оптимизатора Поляка. |
| | | | |
| - | Целевая аудитория: студенты профильных вузов (направление "Математические основы ИИ") и практикующие ML-инженеры. Материал должен вести читателя от интуитивного физического понимания инерции к строгой математике метода Поляка, его сравнению с классическим SGD, а также к его автоматическому расширению — ускоренному градиенту Нестерова (NAG) и реализации в коде.
| + | '''Технические ограничения:''' Используй MediaWiki-разметку. Абсолютно все переменные оборачивай в теги <nowiki><tex>...</tex></nowiki>.}} |
| | | | |
| - | ОБЯЗАТЕЛЬНАЯ СТРУКТУРА СТАТЬИ И ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ:
| + | '''Рефлексия по итогам этапа:''' Отказ от жесткой структуры сработал отлично — модель написала живой, понятный текст, однако выявилась фундаментальная проблема RAG (Retrieval-Augmented Generation): модель '''проигнорировала формулы из прикрепленной лекции'''. Вместо классической записи через экспоненциальное скользящее среднее с множителем <nowiki><tex>(1 - \gamma)</tex></nowiki>, модель выдала стандартную реализацию из исходников PyTorch (<nowiki><tex>v = \gamma v + h \nabla L</tex></nowiki>). Внутренняя параметрическая память LLM оказалась сильнее внешнего контекста. Кроме того, модель полностью проигнорировала сложную разметку тегами. |
| | | | |
| - | В самом начале исходного кода строго выведи три строки (БЕЗ использования обратных апострофов и маркдауна): <nowiki>{{well|Статья написана с использованием LLM '''Gemini 3.1 Pro Preview''' и проверена участником ~~~~}}</nowiki>
| + | === Этап 2: Техническая и академическая коррекция === |
| - | Промпт приводится полностью в [[Обсуждение:Метод инерции Поляка]]
| + | Модели был отправлен строгий корректирующий промпт, для исправления формул соответствующим курсу: |
| | | | |
| - | == Введение == Дай чёткое определение концепции метода накопления инерции (Momentum), предложенного Б. Т. Поляком в 1964 году. | + | {{well|1=Текст и аналогии написаны великолепно, но ты допустила критические ошибки. |
| | + | 1. ОШИБКА В ФОРМУЛАХ: Ты использовала реализацию PyTorch, проигнорировав прикрепленный PDF. Мне нужны классические формулы через экспоненциальное скользящее среднее. |
| | + | Исправь формулы Поляка на: v = \gamma v + (1 - \gamma) \nabla L(w). Исправь формулы Нестерова на: v = \gamma v + (1 - \gamma) \nabla L(w - h \gamma v). Код на Python тоже перепиши под эти формулы! |
| | + | 2. ОШИБКА РАЗМЕТКИ: Ты забыла теги! Абсолютно каждую формулу и переменную в тексте оберни в теги <nowiki><tex>...</tex></nowiki>. Выключные формулы начни с ::<nowiki><tex>...</tex></nowiki> |
| | + | 3. PYTHON КОД: Оберни код в теги <nowiki><source lang="python"></nowiki> и сохрани табуляцию. |
| | + | 4. В самое начало статьи добавь плашку <nowiki>{{well}}</nowiki>.}} |
| | | | |
| - | Сделай подробную, очень наглядную физическую аналогию с тяжелым шариком (методом «тяжёлого шарика» Поляка), катящимся по холмистому ландшафту в точку минимума. Оформи это сравнение в виде понятного структурированного списка, где сопоставь:
| + | === Этап 3: Финальная доработка === |
| | + | После второго промпта модель корректно исправила математический аппарат и привела код на Python в соответствие с лекциями К.В. Воронцова. Ручная доработка свелась лишь к проверке закрывающихся тегов и оформлению списка литературы по ГОСТу. |
| | | | |
| - | 1. Положение шарика на холме — это текущий вектор весов модели.
| + | Polina Khadralinova 00:09, 7 июля 2026 (MSD) |
| - | 2. Высота холма (рельеф ландшафта) — это значение функции потерь (эмпирического риска).
| + | |
| - | 3. Сила тяжести, толкающая шарик вниз — это антиградиент (направление наискорейшего спуска).
| + | |
| - | 4. Масса шарика — это инерция (накапливаемая скорость). В обычном градиентном спуске шарик невесомый (пушинка) и останавливается мгновенно, как только пропадает сила. В методе Поляка шарик тяжёлый и катится дальше по инерции.
| + | |
| - | 5. Трение среды (сопротивление воздуха или вязкость жидкости) — это коэффициент затухания скорости \gamma, который не даёт шарику бесконечно проскакивать минимум и плавно тормозит его на дне.
| + | |
| - | | + | |
| - | == Математический аппарат и свойства == Распиши формулы шага метода инерции Поляка, используя обозначения из слайда 8 Лекции 2 К.В. Воронцова:
| + | |
| - | | + | |
| - | 1. Формулу обновления вектора скорости: v = \gamma v + (1 - \gamma) \nabla \mathcal{L}(w, x_i)
| + | |
| - | 2. Формулу обновления весов модели: w = w - h v
| + | |
| - | 3. Объясни смысл параметров: h (шаг / темп обучения) и \gamma (коэффициент инерции). Объясни, почему это эквивалентно усреднению градиента по последним примерно 1 / (1 - \gamma) итерациям.
| + | |
| - | | + | |
| - | == Борьба с препятствиями оптимизации == Подробно опиши, как метод инерции помогает преодолевать проблемы классического градиентного спуска:
| + | |
| - | * Проблема "оврагов" (когда градиент колеблется между крутыми склонами, почти не двигаясь к минимуму по дну оврага). Объясни, как инерция гасит поперечные колебания и ускоряет движение вдоль дна.
| + | |
| - | * Проблема локальных экстремумов и седловых точек.
| + | |
| - | | + | |
| - | == Развитие метода: Ускоренный градиент Нестерова (NAG) == Опиши метод NAG (Ю. Е. Нестеров, 1983 г.) как эволюцию метода Поляка. Объясни разницу: метод Нестерова вычисляет градиент "заглядывая вперёд" (в точке w - h \gamma v). Приведи формулы NAG:
| + | |
| - | 1. v = \gamma v + (1 - \gamma) \nabla \mathcal{L}(w - h \gamma v, x_i)
| + | |
| - | 2. w = w - h v
| + | |
| - | | + | |
| - | == Практическая реализация на Python == Приведи чистый, лаконичный и понятный класс или функцию на Python (с использованием NumPy) для оптимизации методом инерции Поляка. КРИТИЧЕСКИ ВАЖНО: Весь код от первой до последней строчки должен находиться строго внутри ОДНОГО монолитного блока:
| + | |
| - | | + | |
| - | == См. также == Добавь ссылки на: [[Стохастический градиентный спуск]], [[Минимизация эмпирического риска]].
| + | |
| - | | + | |
| - | == Литература == Оформи список литературы строго по шаблонам {{книга}}. Обязательно сошлись на фундаментальную работу Поляка 1964 г. и Нестерова 1983 г. (данные есть на слайде 8 Лекции 2).
| + | |
| - | | + | |
| - | КРИТИЧЕСКИ ВАЖНЫЕ ПРАВИЛА ФОРМАТИРОВАНИЯ (MediaWiki):
| + | |
| - | * Движок сайта КАТЕГОРИЧЕСКИ не поддерживает маркдаун (знаки доллара $). Их использование ЗАПРЕЩЕНО.
| + | |
| - | * Абсолютно все переменные, индексы и формулы в тексте должны быть строго внутри HTML-подобных тегов <nowiki><tex>...</tex></nowiki> (например: w_t, \gamma, \nabla \mathcal{L}).
| + | |
| - | * Выключные (отдельные) формулы начинай с двойного двоеточия: ::...
| + | |
| - | * Везде используй букву "ё".}}
| + | |
| - | | + | |
| - | === Этап 2: Техническое исправление разметки ===
| + | |
| - | После первой генерации выяснилось, что модель проигнорировала часть технических требований MediaWiki. Был отправлен второй уточняющий промпт на исправление багов оформления:
| + | |
| - | | + | |
| - | {{well|1=Ты отлично написала содержательную часть статьи! Логика изложения, примеры и сравнение с обычным SGD — великолепны. Но на сайте снова возникли проблемы с разметкой MediaWiki.
| + | |
| - | | + | |
| - | Пожалуйста, перепиши статью заново, исправив ТОЛЬКО следующие технические ошибки оформления (весь текст, формулировки, примеры и физические аналогии оставь абсолютно нетронутыми!):
| + | |
| - | | + | |
| - | 1. Исправь списки (убери синие рамки): Движок MediaWiki превращает списки в уродливые синие рамки кода, если перед строкой стоит хотя бы один пробел. Категорически запрещено ставить пробелы перед звёздочками или дефисами. Начни все пункты списков (в физической аналогии и расшифровке параметров) строго с начала строки с символа "*" без единого пробела перед ним.
| + | |
| - | 2. Перенеси оглавление налево: Удали тег <nowiki>{{TOCright}}</nowiki> из самого начала кода статьи. Оглавление должно встать на свое стандартное место слева перед текстом.
| + | |
| - | 3. Исправь формулы и переменные в тексте: Ты пропустила много одиночных латинских и греческих переменных (таких как w, v, h, \gamma, \nabla \mathcal{L}, x_i, t) внутри предложений. Найди абсолютно каждую математическую переменную, индекс и формулу в тексте и аккуратно оберни их в теги .... Например: w, \gamma, v, x_i.
| + | |
| - | 4. Замени символ ":=" во всех формулах на стандартное равенство "=". Движок сайта выдает ошибку [?][?] при попытке отрендерить этот символ. Напиши формулы через обычный знак равенства. Например: v = \gamma v + (1 - \gamma)...
| + | |
| - | 5. Замени все маркдаун-выделения (двойные звёздочки ** и обратные апострофы `) на стандартную разметку MediaWiki. Для жирного шрифта используй тройные апострофы '''текст'''.}}
| + | |
| - | | + | |
| - | === Этап 3: Ручная доработка ===
| + | |
| - | Поскольку модель не смогла со 100% точностью расставить теги ко всем одиночным переменным в тексте и «склеила» отступы табуляции в коде Python, финальная разметка была скорректирована вручную:
| + | |
| - | * Полностью восстановлена структура отступов (табуляция) в Python-коде класса PolyakMomentumOptimizer для корректной компиляции.
| + | |
| - | * Из всех списков физической аналогии и расшифровки параметров удалены невидимые лидирующие пробелы, что убрало некорректные синие рамки на предпросмотре.
| + | |
| - | * Все пропущенные переменные и индексы (векторы <tex>w</tex>, <tex>v</tex>, параметры <tex>\gamma</tex>, <tex>h</tex>) были вручную обёрнуты в теги <nowiki><tex>...</tex></nowiki>.
| + | |
| - | * Символ присваивания ":=" заменён на стандартное равенство "=".
| + | |
| - | * Литература оформлена по шаблонам <nowiki>{{книга}}</nowiki>.
| + | |
| - | | + | |
| - | Polina Khadralinova 01:20, 30 июня 2026 (MSD) | + | |
Работа велась в целью кардинально упростить промпт, перейдя от микроменеджмента к чистому «целеуказанию», а также протестировать, насколько хорошо модель опирается на прикрепленный RAG-контекст (PDF-лекцию).
Модели был отправлен строгий корректирующий промпт, для исправления формул соответствующим курсу:
После второго промпта модель корректно исправила математический аппарат и привела код на Python в соответствие с лекциями К.В. Воронцова. Ручная доработка свелась лишь к проверке закрывающихся тегов и оформлению списка литературы по ГОСТу.