Это фрагмент.

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

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

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

Однако я подумал, что в этой статье отсутствует большой раздел: сколько времени потребуется, чтобы обучить предсказанную 60% нейронную сеть до полностью обученной 100%? Если это занимает вдвое меньше времени, то это замечательное продвижение! Но если 60-процентная нейронная сеть имеет веса, находящиеся в локальных минимумах, так что обучение из этих минимумов занимает столько же времени, сколько потребовалось бы для обучения сети до 100 % с нуля, то этот метод кажется относительно бесполезным.

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

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

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

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

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

Но все архитектуры нейронных сетей могут быть представлены на естественном языке, иначе мы не смогли бы описать архитектуры друг другу. Итак, представьте, что модель прогнозирования параметров принимает в качестве входных данных описание нейронной сети, такое как «3 полностью связанных слоя со 100 входными данными, размер скрытого слоя 300 и размер выходного сигнала 3», за которыми следуют три набора весов. из 3 эпох обучения. Затем цель модели состоит в том, чтобы вывести новый набор весов, который должен имитировать то, на что веса изменятся после четвертой эпохи обучения.

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

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

Основная проблема такого рода прогнозов — сбор обучающих данных. С моей точки зрения, только такие компании, как Google или OpenAI, которые обучают множество моделей, могут, если бы они сохраняли веса своих сетей после каждой эпохи, собрать данные, необходимые для построения такой сети предикторов. Часть понимания ранее упомянутой статьи заключается в том, что, хотя у нас нет обучающих данных для многих различных архитектур, для большинства опубликованных нейронных сетей у нас есть их окончательные весы. Таким образом, они действительно смогли написать и представить свою статью на основе этих данных.

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