• Я с понедельника 29 июня примерно на месяц буду работать за нескольких врачей, в том числе в стационаре. График пока неясен, будет на сайте. Но сложных пациентов _себе_ я пока брать не буду, прошу прощения!

Нейросети и смежное :)

**Совет:** Если вы скачали какую-то модель с названием "Gemma 4" с неофициального ресурса, будьте осторожны — скорее всего, это просто переименованная Gemma 2 или Llama 3. Всегда проверяйте источник (например, официальный репозиторий `google/gemma-2` на Hugging Face).

...синдром Утёнка, Gemma4 даже не допускает, что она может существовать 🙂
Тема самоидентификации зато раскрывается понемножку 🙂

Чату задал тот-же вопрос -

Порекомендуй LLM для локального запуска на видеоплате с 24 ГБ памяти - для вайб-кодинга и просто общего назначения

Если у тебя 24 ГБ VRAM (RTX 3090 / 4090 / 5090 и т.п.), то сейчас это «sweet spot» для локальных LLM: можно комфортно запускать хорошие 27B–35B модели в Q4/Q5-квантизации без сильных компромиссов. (LocalVRAM)
Для твоего сценария — вайб-кодинг + общее использование — я бы разделил модели так:

Лучший баланс: одна модель «на всё»​

  • Qwen3 32B
    Сейчас это один из лучших универсальных вариантов под 24 ГБ:
    • хорошо пишет код;
    • нормально держит длинный контекст;
    • адекватен в русском;
    • годится для обычного общения, анализа, RAG и агентных задач.
    • В Q4_K_M обычно помещается в 20–22 ГБ VRAM. (LLMHardware.io)
Если нужен именно «ежедневный локальный ChatGPT» — это, вероятно, лучший старт.

Лучший для кодинга​

  • Qwen2.5-Coder-32B
    До сих пор считается одним из самых сильных локальных кодеров на одной видеокарте. Особенно:
    • рефакторинг;
    • генерация файлов;
    • понимание проекта;
    • Python/JS/TS/C++;
    • Continue/Cline/OpenWebUI.
    • Многие до сих пор считают его лучшим practical coding model для 24 ГБ. (OSSAlt)
Для «вайб-кодинга» через Continue или Cline — отличный выбор.

Лучший для reasoning и «подумать»​

  • DeepSeek-R1-Distill-Qwen-32B
    Сильнее в:
    • логике;
    • сложной отладке;
    • архитектурных рассуждениях;
    • алгоритмах.
Но:
  • медленнее;
  • иногда слишком многословен;
  • хуже как everyday assistant.
Как «вторую модель» держать очень полезно. (LLMHardware.io)

Очень приятный general-purpose вариант​

  • Gemma 3 27B
    Сильные стороны:
    • естественный стиль;
    • хороший multilingual;
    • быстро работает;
    • меньше «шизотеоретизирует».
Минусы:
  • код слабее Qwen Coder;
  • хуже tool use и agentic workflows.
Но как домашний ассистент — очень приятная модель. (IntuitionLabs)

Что бы я реально поставил на 24 ГБ сегодня​

Вариант 1 — одна модель​

  • Qwen3 32B Q4_K_M

Вариант 2 — лучший practical набор​

  • Qwen2.5-Coder-32B — кодинг
  • Gemma 3 27B — общение/тексты
  • DeepSeek-R1-Distill-32B — reasoning

Для вайб-кодинга важнее не только модель​

Связка обычно важнее самой LLM:
КомпонентЧто сейчас популярно
BackendOllama / llama.cpp / vLLM
IDE integrationContinue.dev
Agentic codingCline
UIOpen WebUI
Fast inferenceKoboldCpp

Что НЕ рекомендую под 24 ГБ​

  • 70B модели с сильной квантизацией — качество/скорость обычно уже неприятные.
  • Маленькие 7B как main model — после 32B ощущаются слишком «тупыми».
  • Старые CodeLlama/Mistral 7B — уже заметно устарели.

Практический совет по quantization​

Для 24 ГБ обычно оптимальны:
  • Q4_K_M — лучший баланс;
  • Q5_K_M — если хватает VRAM и хочешь качество;
  • IQ4_XS — иногда хороший компромисс для больших моделей.

Если коротко​

ЗадачаМодель
Лучший универсальный выборQwen3 32B
Лучший локальный кодингQwen2.5-Coder-32B
Лучший reasoningDeepSeek-R1-Distill-Qwen-32B
Самый приятный assistantGemma 3 27B
(LocalVRAM)

То есть про Гемму 4 он не знает.

Уже вышла гемма 4

(чат пошел искать в инете)

Да, ты прав — Gemma 4 уже вышла официально в апреле 2026. (Google DeepMind)
И тогда мой предыдущий список стоит немного обновить.
Для 24 ГБ VRAM сейчас ситуация примерно такая:
СценарийЧто сейчас выглядит сильнее
Универсальная модельGemma 4 31B или Qwen3 32B
Вайб-кодингQwen2.5-Coder-32B
Агентность / tool useGemma 4 31B
Самый «живой» assistant-styleGemma 4 31B
Сложный reasoningDeepSeek-R1-Distill-Qwen-32B
Что изменилось с выходом Gemma 4:
  • Google сильно подтянул:
    • reasoning;
    • код;
    • agentic workflows;
    • multimodal;
    • long context.
  • Лицензия теперь Apache 2.0.
  • 31B версия очень хорошо работает локально. (blog.google)
По benchmark’ам Gemma 4 31B уже конкурирует с топовыми open-weight моделями, а по некоторым тестам — обгоняет. Например:
  • LiveCodeBench ≈ 80%;
  • AIME 2026 ≈ 89%;
  • сильный tool use. (Google DeepMind)
Но есть важный практический момент:

Для «вайб-кодинга» Qwen всё ещё часто удобнее​

Несмотря на хайп вокруг Gemma 4, у Qwen2.5-Coder-32B пока остаются сильные стороны:
  • лучше понимает структуру проектов;
  • стабильнее редактирует большие файлы;
  • меньше «креативит» там, где нужен точный код;
  • лучше ecosystem compatibility с Continue/Cline/Aider.
На Reddit и в LocalLLaMA многие сейчас держат именно связку:
  • Gemma 4 — assistant/general/agents;
  • Qwen Coder — coding. (Reddit)

Если бы у меня была одна 24 ГБ карта под Windows + Ollama/LM Studio сегодня, я бы сделал так:

Основная модель​

  • Gemma 4 31B Q4_K_M

Для IDE и coding-agent​

  • Qwen2.5-Coder-32B Q4_K_M

Под твой сценарий особенно хорошо зайдут:
И ещё важная вещь:
Gemma 4 заметно лучше предыдущих Gemma в:
  • русском;
  • французском;
  • смешанных multilingual диалогах. (Google DeepMind)
Для Квебека это приятно 🙂
 
А что можешь сказать про Qwen 3.6?

(чат пошел гуглить)

Qwen 3.6 сейчас — один из самых интересных релизов для локального запуска, особенно если тебе важны:
  • вайб-кодинг;
  • agentic workflows;
  • работа с большими проектами;
  • длинный контекст;
  • эффективность на одной GPU. (GitHub)
Главное: у Qwen 3.6 есть две очень разные модели.
МодельЧто это
Qwen3.6-27Bплотная (dense), стабильная
Qwen3.6-35B-A3BMoE: 35B total / ~3B active
(LLM Reference)
Для 24 ГБ VRAM именно 35B-A3B выглядит особенно интересно.

Почему Qwen 3.6 сейчас так хвалят​

Alibaba явно делала упор именно на:
  • repository-level reasoning;
  • coding agents;
  • terminal workflows;
  • tool use;
  • «thinking preservation».
То есть не просто «напиши функцию», а:
  • читать проект;
  • понимать связи;
  • чинить баги;
  • делать iterative edits;
  • работать как semi-autonomous агент. (Qwen3.6)
Это как раз то, что нужно для:
  • Continue;
  • Cline;
  • Aider;
  • OpenCode;
  • RooCode.

Что особенно интересно в 35B-A3B​

Это sparse MoE:
  • всего 35B параметров;
  • но активны только ~3B на токен. (ThinkSmart Life)
На практике это дает:
  • скорость ближе к маленьким моделям;
  • качество ближе к большим.
Для 24 ГБ это почти идеальный сценарий.

Практически: как он ощущается​

По отзывам сообщества:
  • кодит лучше Gemma 4;
  • меньше «галлюцинирует» в коде;
  • лучше держит структуру репозитория;
  • очень хорош в agent loop workflows. (Reddit)
Но:
  • стиль общения менее «человечный», чем у Gemma 4;
  • иногда слишком инженерный;
  • reasoning менее глубокий, чем у DeepSeek-R1.

Что бы я выбрал под 24 ГБ сегодня​

Если нужен coding-first​

  • Qwen3.6-35B-A3B Q4_K_M
Это, вероятно, лучший practical choice сейчас.

Если нужен assistant + coding​

  • Gemma 4 31B — для общения
  • Qwen3.6-35B-A3B — для IDE/агентов

Dense vs MoE​

Очень важный момент.

Qwen3.6-27B​

Плюсы:
  • стабильнее;
  • предсказуемее;
  • меньше артефактов;
  • лучше для long chats.
Минусы:
  • медленнее;
  • менее efficient.

Qwen3.6-35B-A3B​

Плюсы:
  • очень быстрый;
  • отличный coding-agent;
  • лучше throughput.
Минусы:
  • иногда MoE routing дает странные ответы;
  • может быть менее ровным в обычном диалоге.

Для твоего железа​

На 24 ГБ:
  • Q4_K_M — отлично;
  • IQ4_XS — тоже хороший вариант;
  • Q5 уже может быть тесновато.

Что сейчас выглядит топом для локального coding​

Если убрать hype и смотреть на practical usage:
МодельОценка
Qwen3.6-35B-A3Bодин из лучших локальных coding-agent
Qwen2.5-Coder-32Bвсё ещё очень стабильный
Gemma 4 31Bлучший general assistant
DeepSeek-R1-Distillлучший reasoning

Мой реальный совет​

Если ты уже используешь:
  • Ollama;
  • LM Studio;
  • Continue/Cline;
то я бы первым делом попробовал:
Именно под «вайб-кодинг на одной видеокарте» он сейчас выглядит очень сильным. (ThinkSmart Life)
 
Тезис про отмену разделения труда ИИ выглядит слишком радикально пока это скорее усиление отдельных процессов, а не их исчезновение. Реальные технологии из обсуждения (типа Gen-2 или аналоговых вычислений) вообще больше про узкие задачи, чем про перестройку всей экономики.
 
Тезис про отмену разделения труда ИИ выглядит слишком радикально пока это скорее усиление отдельных процессов, а не их исчезновение. Реальные технологии из обсуждения (типа Gen-2 или аналоговых вычислений) вообще больше про узкие задачи, чем про перестройку всей экономики.
СОгласен. Я приношу мысли и статьи сюда прежде всего для подумать 🙂
Но аналог имеет ряд плюсов, и если это смогут срастить с теми же квантовыми машинками...будет любопытно 🙂
ИМХО
 
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
View: https://www.youtube.com/watch?v=l-OLgbdZ3kk


Часть 1​

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

Как ему удаётся обучаться настолько эффективно?

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

Их усилия привели к созданию алгоритма обратного распространения ошибки (backpropagation) в сочетании с градиентным спуском (gradient descent) — рабочего алгоритма, на котором сегодня основана практически вся современная область машинного обучения.

Из-за его впечатляющего успеха исследователи начали предполагать, что, возможно, мозг делает нечто подобное.

Однако здесь возникает фундаментальная проблема.

Алгоритм обратного распространения ошибки противоречит основным биологическим принципам функционирования мозга, что делает его точную реализацию в нервной ткани практически невозможной.

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

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


Фундаментальная задача, которую должна решать любая вычислительная система, называется назначением вклада (credit assignment).

Когда у вас есть система с большим количеством параметров — например, весов связей между нейронами, — которые можно изменять для получения желаемого результата, такого как распознавание объектов на изображении или выполнение правильных действий, возникает вопрос:

как определить, какие именно параметры следует изменить и насколько?

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

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

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

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

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

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

Это:

  • отсутствие локальной автономии;
  • дискретная (прерывистая) обработка информации.
Звучит немного запутанно, поэтому давайте разберёмся подробнее.


Искусственные нейронные сети работают в строго разделённых фазах, которые последовательно сменяют друг друга.

Сначала информация проходит вперёд.

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

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

Далее наступает ключевой этап — обратный проход.

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

Наконец, все веса обновляются одновременно, после чего цикл начинается заново уже с новым обучающим примером.


Чтобы этот процесс работал, нейронам приходится, по сути, замораживать значения своей прямой активности.

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

Но человеческий мозг так не работает.

Он не ставит мышление на паузу всякий раз, когда чему-то учится.

Передача сигналов в биологической ткани происходит относительно медленно по сравнению с кремниевыми процессорами.

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

Представьте себе, что каждый раз, когда вы узнаёте что-то новое, вы на долю секунды теряете сознание.

Именно так выглядел бы процесс обучения.

Вместо этого биологический мозг одновременно обрабатывает информацию и обучается, непрерывным потоком.

Никаких отдельных фаз прямого и обратного прохода обнаружено не было.

Нейроны одновременно принимают информацию, обрабатывают её и адаптируются к ней, не прерывая вычисления ради обучения.


Вторая серьёзная проблема обратного распространения ошибки заключается в том, что оно требует глобальной координации.

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

Даже если бы нейроны могли каким-то образом «замораживать» свою активность, затем они должны были бы «размораживаться» в строго определённом порядке.

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

Однако всё, что известно нам о физиологии мозга, говорит о том, что подобная глобальная координация крайне маловероятна.

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

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

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

Мозг представляет собой чрезвычайно параллельную систему с локальной автономией, в которой вычисления и обучение происходят одновременно по всей сети в распределённом режиме, без какого-либо централизованного управления.


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

Продолжение следует (часть 2).

Часть 2​

Концепция предиктивного кодирования (predictive coding) возникла в исследованиях середины XX века, где была выдвинута идея о том, что фундаментальная задача мозга заключается в предсказании и интерпретации сенсорной информации.

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

Есть и аргумент, связанный с эффективностью.

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

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

Если эта модель делает точные предсказания, дополнительная обработка практически не требуется.

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


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

Самый нижний уровень соответствует необработанным сенсорным данным, например пикселям изображения.

Более высокие уровни кодируют всё более абстрактные признаки и категории, позволяющие эффективно предсказывать низкоуровневые визуальные признаки.

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


Информация проходит по этой иерархии в обоих направлениях.

Нисходящие (top-down) связи передают предсказания с верхних уровней на нижние.

Восходящие (bottom-up) связи передают ошибки предсказания — различия между предсказанными и фактическими значениями активности.

Именно это абстрактное описание потоков информации станет основой для вывода того, каким образом должны быть соединены отдельные нейроны.


Мы будем рассматривать сеть как так называемую энергетическую модель (energy-based model).

По сути, это означает, что каждому возможному состоянию сети сопоставляется одно число, представляющее некоторую абстрактную энергию.

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

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

Например, шар катится вниз по склону, уменьшая свою гравитационную потенциальную энергию.

Или белок сворачивается в такую форму, которая минимизирует энергию взаимодействия между атомами.

Поскольку мозг тоже является физической системой, он также стремится к состояниям, минимизирующим некоторую форму энергии.


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

Чтобы представить это наглядно, рассмотрим следующую аналогию.

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

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

Высота узла соответствует уровню активности нейрона.

По тому же стержню движется ещё одна площадка, соответствующая предсказанной активности данного нейрона.

Её положение определяется нейронами вышележащего слоя.

Между узлом нейрона и этой площадкой натянута пружина.

Энергия пружины пропорциональна квадрату её длины и вносит вклад в общую энергию всей системы.

Если активность нейрона значительно отличается от предсказанного значения — в любую сторону, — энергия возрастает.

Активность самого нейрона можно свободно изменять, тогда как его предсказанная активность определяется другими нейронами.


Связи между слоями можно представить как стержни, соединяющие узлы верхнего слоя с площадками нижнего слоя.

Эти стержни располагаются под различными углами, соответствующими значениям синаптических весов.

Именно веса определяют, насколько сильно активность других нейронов влияет на предсказание.

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

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


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

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

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

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


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

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


Во время эволюции системы она фактически «скатывается вниз» по поверхности энергии, определённой в многомерном пространстве, где каждая координата соответствует какому-либо параметру — например, активности нейрона или синаптическому весу.

Математически это движение вниз соответствует перемещению в направлении наискорейшего спуска, то есть в направлении, противоположном градиенту функции.

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


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

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

Поскольку производная суммы равна сумме производных, можно рассмотреть каждую пружину отдельно и задать вопрос:

если немного изменить высоту узла (X_i) в слое L, как изменится натяжение каждой пружины?

После этого достаточно сложить все полученные вклады.


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

Даже внутри самого слоя L непосредственно затрагивается только одна пружина — та, которая соединяет нейрон i с его предсказанным значением.

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

Это полностью соответствует интуиции.

Если ошибка ε положительна, то есть активность нейрона выше предсказанной, пружина стремится сократиться и потянуть значение вниз к предсказанию, что и создаёт отрицательную скорость изменения.

И наоборот, если активность оказалась ниже предсказанной, натяжение пружины будет увеличивать активность нейрона.


Однако здесь возникает дополнительная сложность.

Когда мы изменяем высоту узла в слое L, это влияет не только на его собственную пружину.

Одновременно изменяются и предсказанные активности нейронов слоя, расположенного ниже.

Поэтому для вычисления полной производной необходимо учитывать, каким образом изменение (X_i) влияет на ошибки предсказания этих нижележащих нейронов.

Продолжение — в части 3.

Часть 3​

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

Поэтому, когда мы изменяем активность (X_i) в слое L, для каждого нейрона нижележащего слоя изменяется предсказанное значение пропорционально весу связи, соединяющей их.

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

Заметим следующее.

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

Это можно сделать, увеличив активность нейрона верхнего слоя — при условии, что соединяющий их вес положителен.

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


Полученное элегантное уравнение говорит нам нечто очень важное о динамике нейронов.

Активность каждого нейрона изменяется, пытаясь найти компромисс между двумя конкурирующими воздействиями.

Первый член уравнения заставляет нейрон приблизиться к своему нисходящему (top-down) предсказанию.

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

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


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

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

Ранее мы рассматривали эту ошибку как некую абстрактную операцию вычитания.

Но в реальной биологической системе такое сравнение должно происходить где-то физически.

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

Именно здесь заключается фундаментальная идея предиктивного кодирования.


Нам необходима отдельная популяция нейронов, которая будет явно кодировать ошибки предсказания.

Собственно, именно отсюда и происходит название «предиктивное кодирование».

Нейроны кодируют не сами сигналы, а ошибки предсказания.

В нашей модели можно представить, что в каждом слое рядом с каждым репрезентационным нейроном (X_i), который кодирует представление и передаёт предсказания нижнему слою, существует специальный нейрон ошибки, являющийся его биологическим аналогом.

Этот нейрон кодирует отклонение активности (X_i) от её предсказанного значения.


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

Репрезентационный нейрон (X_i):

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


Теперь необходимо определить, что управляет самими нейронами ошибки.

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

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

Это уравнение показывает ещё один необходимый тип связей.

Нейроны ошибки получают:

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

Теперь у нас имеются две различные популяции нейронов со строго определёнными возбуждающими и тормозящими связями между ними.

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


Однако всё, что мы обсуждали до сих пор, предполагало фиксированные веса связей.

Чтобы модель действительно могла обучаться, необходимо наделить её способностью изменять эти веса.

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


Рассмотрим вес, соединяющий нейрон i слоя L с нейроном k слоя L−1.

Для него можно вывести правило обновления, уменьшающее общую энергию, если двигаться в направлении, противоположном градиенту.

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

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

В результате мы получаем очень красивое правило обучения:

изменение веса пропорционально произведению активности двух нейронов.


Это правило поразительно напоминает хеббовскую пластичность (Hebbian plasticity), известную в нейронауке.

«Нейроны, которые активируются вместе, соединяются сильнее.»

Однако при переносе этого правила на реальные биологические сети возникает проблема.

Предсказания распространяются сверху вниз, когда репрезентационный нейрон i соединяется с нейроном k нижележащего слоя.

Но ошибки предсказания распространяются снизу вверх, от нейрона ошибки обратно к нейрону i.

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

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

Чтобы они всегда были абсолютно одинаковыми, им пришлось бы мгновенно обмениваться информацией — а подобного явления в мозге никогда не наблюдалось.

Эта проблема известна как проблема переноса весов (weight transport problem).

Она касается как алгоритма обратного распространения ошибки, так и предиктивного кодирования.


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

Для двух противоположно направленных синапсов правило обновления практически одинаково.

Оно отличается лишь тем, какой из нейронов считается пресинаптическим, а какой — постсинаптическим.

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

Иными словами, сама физиология процесса обучения естественным образом смягчает проблему переноса весов.


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

После учёта этой нелинейности правила обновления двух противоположных синапсов уже перестают быть математически идентичными.

К счастью, исследования показывают, что идеальная симметрия вовсе не обязательна.

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

Продолжение — в части 4.

Часть 4​

Это правило обучения естественным образом сочетается с динамикой активности нейронов, которую мы вывели ранее.

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

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


Теперь давайте соберём всё вместе и посмотрим, как эта система работает целиком.

Если позволить сети свободно изменять все параметры — и активности нейронов, и веса связей, — она естественным образом придёт к состоянию нулевой энергии.

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

Поэтому в практических реализациях предиктивного кодирования — и, вероятно, в самом мозге — некоторые нейроны оказываются зафиксированными (clamped) на определённых значениях.

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

Именно это ограничение заставляет сеть искать оптимальный компромисс.


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

Активности нейронов и веса связей изменяются согласно локальным правилам обновления, пока не достигнут состояния равновесия — минимума энергии, который кодирует информацию о данном обучающем примере в структуре сети.

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


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

Это можно использовать, например, в генеративных задачах.

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


Для задач обучения с учителем, таких как классификация, верхний слой также фиксируется на правильной метке класса.

Это позволяет сети найти оптимальное соответствие между входными и выходными данными, которое кодируется в весах соединений.

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


Главное преимущество предиктивного кодирования заключается в его локальности.

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

Эта глобальная ошибка должна распространяться через всю сеть.

В предиктивном кодировании всё иначе.

Каждый нейрон и каждый синапс реагирует только на локальные ошибки предсказания:

  • насколько данный слой отклоняется от собственного предсказания;
  • насколько хорошо он сам предсказывает соседний слой.

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

Кроме того, эти идеи можно перенести и в искусственный интеллект.

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

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

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


В заключение​

Подведём итоги того, что мы сегодня рассмотрели.

Рассматривая вывод информации и обучение как задачу минимизации энергии, где каждый слой пытается предсказать активность слоя, расположенного ниже, мы получили алгоритм, который функционирует при полной локальной автономии.

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

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

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


Реклама спонсора​

Раз уж мы заговорили об эффективном обучении, если вы хотите глубже разобраться в фундаментальных идеях, лежащих в основе сегодняшней темы, вам наверняка понравится сегодняшний спонсор — Brilliant.org.

Brilliant помогает осваивать дисциплины STEM, сочетая интерактивные визуализации с практическим решением задач.

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

Особенно к теме сегодняшнего видео относится курс «Introduction to Neural Networks», который последовательно объясняет всё — от определения искусственного нейрона до скрытых слоёв и функций активации, предоставляя практический опыт работы с теми строительными блоками, которые мы сегодня обсуждали.

Brilliant предлагает большой выбор курсов по математике, физике и компьютерным наукам.

Независимо от того, только ли вы начинаете изучать основы или уже являетесь специалистом, осваивающим новые области, каждый сможет найти там что-то полезное.

Если вы готовы вывести своё обучение на новый уровень, переходите на brilliant.org, чтобы получить 30-дневный бесплатный доступ ко всем возможностям платформы, а также 20% скидку на годовую подписку.

Если вам понравилось это видео, поделитесь им с друзьями, подпишитесь на канал, если ещё этого не сделали, и нажмите кнопку «Нравится».

Оставайтесь с нами — впереди ещё больше материалов по нейронауке и машинному обучению.
 

LGBT*

В связи с решением Верховного суда Российской Федерации (далее РФ) от 30 ноября 2023 года), движение ЛГБТ* признано экстремистским и запрещена его деятельность на территории РФ. Данное решение суда подлежит немедленному исполнению, исходя из чего на форуме будут приняты следующие меры - аббривеатура ЛГБТ* должна и будет применяться только со звездочкой (она означает иноагента или связанное с экстремизмом движение, которое запрещено в РФ), все ради того чтобы посетители и пользователи этого форума могли ознакомиться с данным запретом. Символика, картинки и атрибутика что связана с ныне запрещенным движением ЛГБТ* запрещены на этом форуме - исходя из решения Верховного суда, о котором было написано ранее - этот пункт внесен как экстренное дополнение к правилам форума части 4 параграфа 12 в настоящее время.

Назад
Сверху