Search
Write a publication
Pull to refresh
28
0
Виталий Пухов @vpuhoff

Программист в свободное от работы время

Send message

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

О гибридном подходе (локальная + глобальная ошибка):

Ваша идея о необходимости комбинировать локальные и глобальные сигналы очень сильна. Ваш эксперимент с sentiment140 — интересное тому подтверждение.

Наша реализация: Наш финальный рабочий вариант (предсказание ϵ + гибридная потеря для блока + классификация по u^T​) по сути тоже стал гибридом, но более простым, чем ваш. Влияние глобальной ошибки на промежуточные блоки у нас было опосредованным (через MSE(u^t​,uy​) и общий градиент от classify_loss, влияющий на эмбеддинги и классификатор). Эту реализацию (ту, что достигла 99.4%) можно найти здесь: https://github.com/vpuhoff/noprop-dt-mnist-pytorch/tree/feature/hybrid.

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

Дальнейшие шаги: Ваш пример кода и особенно текстовое описание полноценного гибрида с адаптивной чувствительностью λt​ очень нас вдохновили. Мы определенно попробуем поэкспериментировать с добавлением этого механизма (и, возможно, вашей схемы локального/глобального обновления внутри блока с использованием local_backward и финальной цели y) в нашу реализацию, чтобы проверить, удастся ли еще улучшить результат и стабильность, приблизившись к биологически правдоподобным механизмам, которые вы описали.

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

И снова огромное спасибо за такой развернутый фидбек, глубокие аналогии с неокортексом и, особенно, за детальное описание вашего гибридного подхода с Predictive Coding, глобальной коррекцией и адаптивной чувствительностью. Это невероятно ценные мысли и направления для размышлений!

Мы во многом согласны с вашим анализом ограничений чисто локальных методов:

  • Важность локальной цели: Полностью поддерживаем ваш тезис о критической важности правильного выбора локальной цели. Наш опыт это ярко продемонстрировал: оригинальная цель NoProp (предсказание uy​) не позволила модели обучиться, и только переход к предсказанию шума ϵ (в духе DDPM/CARD) дал стабильный результат в 99.01%.

  • Масштабирование и координация: Согласны, что обеспечение координации между десятками слоев и обучение сложным абстракциям без глобального сигнала — главные вызовы для таких подходов. Наш эксперимент с T=10 уже требовал внимания к стабильности.

  • Зависимость от архитектуры/задачи: Также согласны, что применимость к сложным архитектурам (Трансформеры) и задачам (LLM) требует дальнейшего изучения.

(Небольшое уточнение по пункту 3 из вашего первого отзыва: в нашей реализации (и как описано в статье NoProp) не использовались конечные разности для градиентов, а применялось стандартное автодифференцирование PyTorch для локальной функции потерь. "Gradient-free" относилось к отсутствию сквозного backprop.)

О гибридном подходе (локальная + глобальная ошибка):

Ваша идея о необходимости комбинировать локальную коррекцию (для шума/адаптации) и глобальную (для признаков/цели) кажется очень сильной и логичной. Ваш эксперимент с sentiment140 (Local 81% vs Global 15%) — интересное тому подтверждение.

Наш эксперимент с гибридизацией: Вдохновившись вашим отзывом, мы попробовали реализовать упрощенный гибридный вариант на основе нашей работающей модели (CNN/MLP блоки, предсказывающие ϵ): мы добавили вторую компоненту потерь к обновлению каждого блока t, а именно MSE(u^t​,uy​), где u^t​ — это чистый эмбеддинг, реконструированный из zt−1​ и предсказанного блоком шума ϵ^. Идея была в том, чтобы явно "тянуть" промежуточные предсказания к финальной цели uy​.

Результат: К сожалению, этот простой гибрид не сработал. Обучение стало нестабильным, и точность на тесте катастрофически упала (до ~2-10%) по сравнению с версией, где блоки обучались только на предсказание шума ϵ. Похоже, что эти две цели (точно предсказать ϵ и одновременно сделать реконструированный u^t​ похожим на uy​) создали конфликтующие градиенты для параметров блока.

Важность "Чувствительности": Этот негативный результат нашего эксперимента с простым гибридом еще сильнее подчеркивает важность предложенного вами механизма адаптивной чувствительности (λt​). Возможно, именно он позволяет правильно сбалансировать и применить градиенты от локальной и глобальной ошибки, избегая конфликтов и нестабильности. Ваше сравнение с Blockwise Self-Supervised Learning, где отсутствие чувствительности ухудшило результат, — очень релевантно. Похоже, это действительно может быть ключевым элементом для успешных гибридных архитектур.

Выводы и Будущее:

Ваш отзыв и наши эксперименты указывают, что:

  1. Чисто локальный подход NoProp (предсказание uy​) нестабилен.

  2. Модифицированный локальный подход (предсказание ϵ) может работать очень хорошо (99% на MNIST) при правильной настройке и стабилизации.

  3. Простая попытка добавить глобальную цель (MSE(u^t​,uy​)) к локальному обучению блока привела к ухудшению.

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

Огромное спасибо вам за то, что поделились своим опытом, идеями и результатами — это было невероятно полезно и дало много пищи для размышлений!

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

Здравствуйте!

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

Во многом ваши тезисы перекликаются с нашим опытом и теми выводами, к которым мы пришли:

  1. Локальная vs Глобальная Ошибка и Неокортекс: Ваша аналогия с обработкой информации в неокортексе — от фильтрации шума в сенсорных областях до выделения абстрактных признаков и связей в ассоциативных — прекрасно иллюстрирует, почему чисто локальных механизмов коррекции ошибки (как в оригинальном NoProp или базовом Predictive Coding) может быть недостаточно. Для построения сложных иерархических представлений действительно необходим механизм, ориентированный на глобальную цель. Наш опыт, когда оригинальный NoProp не заработал, а модифицированный (с добавлением CE Loss, влияющего на эмбеддинги и классификатор) показал результат, это подтверждает.

  2. Роль Локальной Ошибки: Полностью согласен с вашей интерпретацией, что локальная коррекция помогает системе быстро адаптироваться к начальному сигналу, эффективно убирая шум. Это объясняет, почему ваш LocalModel показал такое быстрое падение Loss вначале по сравнению с GlobalModel. Идея о том, что локальная ошибка "выходит на плато", когда базовый шум идентифицирован, и дальше в игру вступает глобальная коррекция для обучения признакам, выглядит очень логично.

  3. Ваш Гибридный Подход и "Чувствительность": Ваш метод, сочетающий PC-подобную локальную коррекцию с BP-подобной глобальной коррекцией внутри блока, — это очень интересно! Особенно интригует идея адаптивной чувствительности каждого блока к глобальной ошибке, по аналогии с дофаминовыми рецепторами. График (image_64595c.jpg), показывающий разную динамику этой чувствительности, впечатляет. Это выглядит как ключевой недостающий элемент во многих локальных или "почти локальных" подходах (включая наш финальный вариант NoProp, где влияние глобальной CE Loss на промежуточные блоки было очень опосредованным). Ваше замечание про сравнение с "Blockwise Self-Supervised Learning", где отсутствие чувствительности ухудшило результат, — сильный аргумент в пользу этого механизма. Спасибо, что поделились!

  4. Иерархия и Связь Блоков: Аналогия со строителями отлично передает идею иерархической обработки и того, что, хотя блоки работают на разных уровнях детализации, они должны быть связаны общей глобальной целью.

Связь с Нашим Результатом:

Наш финальный рабочий вариант (предсказание ϵ + классификатор на u^T​) по сути тоже стал неким упрощенным гибридом. У нас была локальная задача для блоков (минимизация MSE по шуму) и была глобальная задача (минимизация CE Loss), которая влияла на эмбеддинги и финальный классификатор (и, через реконструкцию u^T​, косвенно задавала цель для последнего блока). Однако, в отличие от вашего подхода, у нас не было механизма прямой передачи глобальной ошибки в промежуточные блоки и, тем более, не было адаптивной чувствительности к ней. Возможно, именно поэтому нам потребовалось так много итераций отладки и стабилизации, и точность хоть и достигла 99%, но могла бы быть еще выше или стабильнее с более продвинутым гибридным механизмом вроде вашего.

Будущие Направления:

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

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

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

С чем мы согласны:

  1. Важность Локальной Цели/Потерь: Вы абсолютно правы, указывая на критическую важность правильного определения локальной цели или функции потерь для каждого блока. Хотя в NoProp цель (uy​ или ϵ) вытекает из общей диффузионной схемы, а не задается вручную разной для каждого слоя, наш опыт показал, что выбор этой цели — ключевой момент. Оригинальная цель (предсказание uy​) в нашей реализации оказалась нестабильной и неэффективной, и только переход к предсказанию шума ϵ (как в DDPM/CARD) позволил добиться существенного прогресса. Так что проблема "правильной" локальной цели действительно стоит очень остро.

  2. Ограничения Глубины и Передачи Информации: Согласен, что масштабирование чисто локальных методов на очень глубокие сети (50-100 слоев, как вы предлагаете) и обеспечение эффективной координации между слоями без глобального сигнала обратной связи — это известный и серьезный вызов. Наш эксперимент с T=10 уже потребовал стабилизации, и для гораздо более глубоких архитектур проблемы, вероятно, усугубятся.

  3. Зависимость от Архитектуры и Сложности Задач: Вполне вероятно, что сложные архитектурные элементы (skip-соединения, attention и т.д.) потребуют адаптации локальных целей. И да, текущие тесты (в статье и у нас) проводились на относительно простых задачах. Смогут ли такие подходы эффективно работать с высокоуровневыми абстракциями (как в LLM) без глобальной ошибки — большой и открытый вопрос.

  • Пункт 3 (Нестабильность Finite-Difference): Здесь, кажется, произошло небольшое недопонимание. NoProp, как он описан в статье и реализован нами, не использует оценку градиента по конечным разностям (finite differences). Обучение каждого блока основано на минимизации своей аналитической функции потерь (MSE от предсказания uy​ или ϵ). Градиенты для этой локальной функции вычисляются стандартным методом автоматического дифференцирования (autodiff) в PyTorch. Термин "gradient-free" в контексте NoProp относится к отсутствию необходимости вычислять и распространять градиент сквозь всю нейронную сеть (end-to-end backpropagation), а не к отсутствию градиентов для локального шага оптимизации вообще. Поэтому проблем, связанных с шумностью и выбором шага эпсилон для конечных разностей, здесь быть не должно.

  • Ваше предложение комбинировать локальную и глобальную ошибки — это очень интересное и логичное направление развития, которое активно исследуется. Спасибо, что поделились результатами вашего эксперимента (81% у локальной модели против 15% у глобальной на sentiment140) — это сильный аргумент в пользу потенциала локальных или гибридных методов в некоторых задачах (хотя результат глобальной модели кажется неожиданно низким, возможно, были свои нюансы). Интересно, что наш финальный работающий вариант тоже имел локальную компоненту (MSE по шуму) и "глобальную" (CE Loss, влияющий на эмбеддинги и классификатор), хоть и обновлялись они, возможно, иначе, чем в вашем подходе.

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

Исходя из нашего опыта и вашего отзыва, интересными направлениями видятся:

  1. Исследование оптимальных локальных целей (шум ϵ vs чистое предсказание uy​ vs предсказание среднего постериорного распределения) и стабильных схем взвешивания потерь для диффузионных/NoProp-подобных моделей.

  2. Разработка механизмов координации между локально обучаемыми блоками для улучшения работы глубоких сетей.

  3. Тестирование на более сложных задачах и архитектурах (включая трансформеры).

  4. Систематическое сравнение чисто локальных, чисто глобальных (backprop) и гибридных подходов на разных задачах.

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

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

  • Node-RED – это простая платформа с визуальным программированием. Она позволяет соединять различные устройства, датчики и сервисы в удобные потоки, что идеально подходит для быстрого прототипирования.

  • Home Assistant и openHAB – отличные решения для создания умного дома. Они используют события для управления устройствами, что позволяет легко настроить даже сложные сценарии взаимодействия.

  • Eclipse 4diac – если вам нужна система для промышленной автоматизации, эта платформа поможет объединить несколько устройств в одну сеть и обеспечить надежную работу.

  • ThingsBoard – универсальная платформа для IoT, которая помогает собирать данные с датчиков, управлять устройствами и быстро реагировать на события в реальном времени.

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

Надеюсь, что эти советы помогут вам выбрать подходящее решение для ваших проектов. Удачи и успехов!

Альтернатива близкая по сути кварцевый резонатор

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

может в bios отключен?

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

Оригинально) Судя по формулировке, помощь предлагают только детям.

Террористы вместо телеграмм начнут пользоваться голубинной почтой, придется уничтожить всех голубей?

Аналогично к комментарию , у меня 2 разные TM записи, создавались в разное время, в одной у меня отличный профиль в Тостере, в другой на HabraHabr, выводит только 1 запись от учетной записи, которая в тостере не особо активна. По ХабраХабру вообще не выводит информации.
Какой толк рассказывать о том что в очередной раз, ктото опять придумал как все дешевле и лучше изготавливать солнечные панели, при том что купить ни одну из них по нормальной цене до сих пор нельзя. Все панели на рынке имеют срок окупаемости от 15 лет и выше.
Сама статья хорошая, спасибо, оказывается программирование FPGA не намного сложнее чем любого другого микроконтроллера. Но вам не кажется, что использовать FPGA Altera Cyclone V для мигания светодиодами это как убийство мухи из гранатомёта?
Просто хотелось бы понять какие реальные преимущества у такой схемы по сравнению с любыми другими контроллерами (STM например).
Это очень хорошее решение для задач с идеальным ТЗ, в которых не может быть отклонений от изначально поставленной задачи. К примеру пример из практики, изначально было N устройств и определенная схема взаимодействия, к концу разработки было уже N+6 устройств и совсем другая схема взаимодействия. В случае с релейной логикой пришлось бы для каждого случая с нуля паять всю логику (которая была бы очень не простой). В случае с моим решением достаточно поменять пару триггеров в интерфейсе, чтобы получить полностью готовое решение с учетом изменений.
Все так, сразу видно человека, который «в теме») По сути информативный и ключевой ничем не отличаются, просто информативный «ничего не делает». Второй вариант выглядит довольно красивым, но уже достаточно сильно зависит от языка реализации, в текущей реализации программа пригодна для любых языков с похожим на Си синтаксисом, если затачивать под конкретную платформу можно построить любой алгоритм выбора триггера. В текущей реализации можно поступить похожим образом, используя только более правильную «сортировку» триггеров. Метатриггер это насколько я понял просто триггер который зависит от других триггеров, такой в текущей реализации уже есть. По поводу сброса тоже думал, можно было реализовать на уровне приложения, но тогда это ставит жесткие рамки, по сути для сброса достаточно скинуть bool значение на false чтобы активировать триггер, это можно сделать из любого действия или вынести на уровень шаблона кода. Похожее я использовал для удаленного управления, все свободное от работы время контроллер слушает сеть на наличие команд.

Information

Rating
2,761-st
Location
Хабаровск, Хабаровский край, Россия
Date of birth
Registered
Activity