388просмотров
74.6%от подписчиков
15 марта 2026 г.
📷 ФотоScore: 427
Последний месяц я интенсивно осваиваю кодирование на Claude Code, врчуную в код не вмешиваюсь даже для простых однострочных исправлений. Ну так вот, есть такая идея - нормировать все выходы матрицы на 1, ну или все выходы какой-нибудь L2 или L1 нормой. Я её подглядел у Ветрова в его докладе про гроккинг, они такое с сетками на CIFAR10 делали, и я некоторое время вынашивал мысль такое тоже попробовать. Перед реализацией послал агента поискать связанные статьи. Он нашёл работу nvidia-вцев nGPT: Normalized Transformer with Representation Learning on the Hypersphere (arxiv 2410.01131v1), вроде как у них что-то там получилось. Ну ок, беру свой любимый бейзлан на гроккинг прикручиваю два флага, один включает нормализацию внутри kvq, второй делает то же с полносвязанными слоями. Пробую отключив weight_decay и Клод радостно рапортует, что никакого грокинга, всё плохо. Смотрю я на первую картинку, и говорю, ничего себе ничего интересного... Пробую отключить нормализацию MLP, вторая картинка, уже хуже, отключаю в трансформере, но оставляю в MLP, третья картинка, совсем всё плохо. Говорю Claude посмотреть на картинки, он выдает ещё одно свое предположение, а может сети просто емкости не хватило? Типа с такими матрицами (унарными их называют, если ничего не путаю) пространство исследуемое меньше, мы типа на поверхности гипершара, выразительная сила меньше, сомневаюсь, конечно, но ок, пробуем добавить в два раза размеры эмбединга сети, а ей от этого только хуже. И тут у меня закралось подозрение. Почему именно ~50%? Постоянные читатели моего канала или слушатели моих лекций могут помнить, что датасет то у нас хоть и неупорядоченный, но с явно выраженной симметрией, см четвёртая картинка. Разделение на train и val 50%, это значит, что к каждому примеру из val в train с вероятностью 50% найдется симметричный пример среди train и если сеть раз об этом догадается как-то подогнав под это первую матрицу эмбедингов, это сильно облегчает задачу. Я даже как-то раз проводил опыт https://t.me/GradientWitnesses/124 Отломав ровно половину датасета, и это в три раза отодвинуло наступлении гроккинга. Пробуем то же самое, давая Клоду половину датасета, и получаем пятую картинку - полный рандом.
Тут надо Клоду дать поблажку, это я этот датасет гоняю в стопятьсотый раз, а он то его первый раз видит, и даже не видит, я только читает его код, то что он не догадался эту версию проверить не удивительно. Но когда я ему сказал посмотреть на итоговую картинку он выдал шедевр мысли, что задача стала сложнее, ведь теперь в трейне нет некоторых токенов. Эпик фейл так то, потому что во-первых, в валидейшене же их теперь тоже нет, а во-вторых, ну даже если так, задача стала сложнее, но не на столько же чтобы правильные ответы оставались на уровень практически случайного шума! Потому он сделал ещё одно провальное предположение, о котором не сейчас. Там он вообще самое интересное обнаруженное явление назвал ошибкой обучения. Справедливости ради ошибкой его считают и при классическом обучении LLM-ок, так что он оказался не то чтобы тупым, скорее не более умным, чем срадний датасатанист. Невозможность явно сформулировать своё отличное от других мировоззрение и отстаивать его явно перед лицом статистики играет с LLM-ками злую шутку когда речь заходит о ресёрче. В общем выводы из всего этого такие, пока мечты об автоматическом ресчёрче остаются мечтами, в этом месяце. P.S. Я обнаруживал, что все оценочные суждения о нейросетях становятся более точными, если к ним в конце приписывать "В этом месяце". P.P.S. Похоже нормализация конкретно помогает элементарным обобщенийм, но так же конкретно мешает менее очевидным, что делает её бесполезной кроме особых случаев.
P.P.P.S. Ещё не все аблейшены проведены, возможно выводы о пользе и вреде нормализации слегка изменятся.