All streams
Search
Write a publication
Pull to refresh
-5
8
Сергей @tac

Программист

Send message

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

Update. Более сложные эксперименты (на задаче кода Грея) показывают, что на стабильность и сходимость A→A слой слабо влияет, и мешает сделать существенную доработку. Поэтому по принципу бритвы Оккамы, мы его просто уберем, превратив архитектуру в обычный SAR перцептрона Розенблатта, что никак не сказывается на его свойствах. Думаю на следующей неделе некоторые результаты экспериментов и коррекции в архитектуре и процедуре обучения тут опубликую.

трёхслойный MLP с функцией активации Хевисайда

это называется простейший перцептрон Розенблатта

И что важно: " нормализация применяется не как отдельный слой нормализации (BatchNorm/LayerNorm), а как часть механизма коррекции весов, что существенно меняет её роль. "

проклятие размерности

Так его нет даже для перцептрона розенблатта SAR. Такие странные утверждения, я не раз видел в статьях, но они ни на чем не основываются. Архитектура 16 бит вход - 2^16 скрытый слой - это и есть ваше "проклятие размерности" ?

Каких еще ньюансов сразу не видно из статьи.

  • Нормализация активаций A (AFieldNorm = Normalize(AField))
    — Уже сама по себе нормализация масштабирует величину обновлений S→A: коррекции пропорциональны AFieldNorm[j], а не «сырым» случайным суммам. Это уменьшает разброс размера шага и делает обновления сопоставимыми между разными примерами и разными A-нейронами. (см. AActivation() и LearnedStimulSA()).

  • Хранение активаций по всем примерам (Activations[argStimulNumber] = AField) и использование Information Gain
    — В Learned() ты собираешь Activations для каждого примера и вычисляешь gainValue = gain.CalculateInformationGain(Activations, ACount); затем gainNorm и счётчики gainNormCount используются для очистки неинформативных A. Это — явный глобальный механизм, который агрегирует статистику по всей обучающей выборке и отбирает признаки на основании распределения активаций по всему множеству примеров. Такое агрегирование снижает эффект «обучения только в окрестности одного примера».

  • Весовые обновления A→R аккумулируются по всем активным A при ошибке
    LearnedStimulAR() увеличивает/уменьшает WeightAR[i][j] для всех активных A на каждом примере. Эти накопления по эпохам формируют глобальную картину вклада каждого A в R и не являются чисто «одноточечной» корректировкой.

  • Итеративная обработка всех примеров + пермутация (Shuffle) в каждой эпохе
    — В Learned() на каждой итерации ты проходишь все HCount примеров (в перемешанном порядке). Это — классическая стохастически-градиентоподобная схема (SGD style): локальные обновления, но усреднённые во времени по множеству примеров. То есть обучающий процесс вбирает статистику по всему множеству, не только «локально».

  • Пороговая A→A и пороги в диапазоне [-10,10]
    — Пороги привносят регуляризацию / сжатие динамики: многие мелкие колебания входов отбрасываются, активируются только стабильные пути — это ещё один фактор уменьшения шума апдейтов.

  • Вероятностная поздняя подстройка (p>0.99)
    — Эта эвристика намеренно уменьшает частоту S→A изменений в поздней фазе (когда OldError мал), что снижает дисперсию и предотвращает разрушение уже накопленных глобальных параметров.

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

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

Что имели в виду:

  1. "вы в точности изобрели оптимизационную постановку задачи RL"
    – Рецензент намекает, что твоя схема обучения похожа на то, как решаются задачи в Reinforcement Learning (обучение с подкреплением).
    Там тоже есть вознаграждение (reward), и агенты корректируют свои стратегии на основе ошибок. У тебя — это вероятность подстройки весов через энтропию и ошибка реакции R-слоя.
    [Подтверждаю именно такая и была цель]

  2. "и оптимизируете ее солвером 0 порядка"
    – «Солвер 0 порядка» = метод оптимизации, который не использует градиенты.
    То есть, ты обновляешь веса стохастически, по вероятностному правилу, без вычисления ∂E/∂w (градиента ошибки).
    В их языке это называется zero-order optimization (методы типа эволюционных стратегий, random search и т.д.).
    [Подтверждаю, именно такое ограничение я для себя выбрал.]

  3. "никто в здравом уме никогда такую схему использовать не будет"
    – Тут он резко высказался 🙂. Аргумент: такие методы обычно очень шумные (огромная дисперсия «градиента»).
    Ты не знаешь точного направления, куда корректировать веса, а только «угадываешь» на основе случайностей.
    Из-за этого обучение может быть медленным или неустойчивым.
    [По сути, ChatGpt все опроверг. Да такая проблема есть обучение сильно зависит от ряда констант, которые я пока НЕ свел воедино, поэтому может показаться, что обучение не устойчивое.]

  4. "вы же в каждый момент времени не оптимизируетесь на всем многообразии, а только в области"
    – Они намекают: твой алгоритм видит только один стимул за раз, и корректировка делается локально, не глобально.

    [Подтверждаю, это именно то, что я хотел и что на порядок лучше глобальной итерации бэкпропа. Именно, за локальными изменениями будущие.]
    Градиентные методы смотрят на всю функцию ошибки (или на её батч), а ты фактически корректируешь только «вблизи текущего примера».
    Отсюда у них мысль про «большую дисперсию».

Почему это важно:

Тебе говорят:

  • «Ты придумал RL-like схему, но решил её самым наивным способом — случайными подстройками (0 порядок), а это неэффективно».

  • Однако (!) твоя идея принципиально другая: у тебя не просто «random search», а энтропийно-взвешенная селекция признаков + разреженный саморекурсивный резервуар, что даёт устойчивость.

👉 То есть критика «по шаблону»: мол, «если не градиент — значит мусор».
Но в биоинспирированных системах (и в reservoir computing, и в нейроморфике) как раз уход от градиента и ценен, потому что он даёт:

  • локальное обучение,

  • устойчивость к шуму,

  • биологическую правдоподобность,


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

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

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

Согласен, в том то и дело.

Бродят аналогичные мысли касательно ассоциативных слоёв.

Можете попробовать запрограммировать

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

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

Эко Вы быстрый :) это много букв, не всё сразу .. ну, и потом, вначале с мат. частью нужно таким как вы разобраться.

Давайте вот, что адекватно относится к результатам. Между in vitro и in vivo большая пропасть, но без первого никогда не бывает второго.

Тестировал я его на задаче четность до 16 бит. Но любой может мне написать и помочь в дальнейшем его развитии. Именно, так это работает. И кстати, посмотрите оригинальную статью о backpropagation - какие там были представлены результаты, вы наверно к своему удивлению обнаружите, что ничего большего, чем решение задачи XOR и четность с 4 битами :) И вот за это дали нобелевку, а вы говорите результаты ))

Заминусуйте его кто нить , я на исправлении :)

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

Оставьте ваше мнение при себе, рецензент мне тут нашелся ))

Читал он больше, да ничего не знает ))

У перцептрона есть ограничения, только совсем не те, и не так примитивно интерпретируемые вами ...

Мой уровень понимания НС - я могу ОБУЧАТЬ модели в 200 Гб ... Дома.

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

Совершенно ничего не понятно, если у вас есть альтернативные методы обучения перцептрона - напишите код и выложите, так будет понятнее )

а интерпретация и оптимизация перцептрона где?

Но в статье написано же:

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

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

Но если без пафоса, Вас то самого устраивает уровень интерпретации ИНС? Понимания их работы?

Гарантий линейной разделимости всего что поступает в R слой нет

Именно, что есть.

все остальное вообще не относится к нашему разговору.

Нет, 100% , если число A элементов > 1000 и >= N (N - количество примеров обучающей выборки)

Например, задача четность для 16 бит, всего возможных примеров 2^16 = 65536, в теории нужно именно 65536 А-элементов (на практике хватает 3000, из-за свойств самой задачи, на самом деле задачи где нужно как в теории нету, разве что совсем рандом, но не псевдорандом, а настоящий, псевдо рандом тоже решается меньшим количеством). От R-элементов число A-элементов не зависит, т.е. отображается на сколько угодно классов.

Всё тоже самое будет справедливо для backpropagation

Ну, выучите уже, это не сложно.

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

Посмотрели как решается задача XOR перцептроном? Или я зря теряю с вами время?

А открыть, вместо искаженных учебных материалов, оригинал работ Розенблатта- видимо не судьба?

P.S. А Бред писали и куда более именитые ученные, кроме собственно Минского, или там Румельхарда с Хинтоном - если вы у них найдете, такого же уровня бред, то ок. Но не найдете. Все остальные несут бред, если говорят, что перцептрон не решает XOR. И уж левый курс - это совсем не авторитетный источник.

Давайте по шагам - XOR решает? Уже ознакомились как? Посыпали голову пеплом? Тогда пойдем дальше, но не раньше.

P.S.S. Ну и потом я глянул, эту вашу ссылку. Из-за ваших поверхностных знаний вы не понимаете, что в той главе вам объясняют. Вас вводят в заблуждение, то что анализируемое там называют перцептроном. Это не перцептрон. Это исключительно A-R слой перцептрона. Да он решает задачу, если обучающие множество линейно разделимо (как там и сказано). Но слой SA - это слой, который обеспечивает линейную разделимость причем гарантировано - а как я все ссылки дал, идите и учите, за вас это никто не будет делать.

Дам только последнею подсказку - внимательно прочитайте раздел Offset, и подумайте что дает увеличение размерности пространства.

Ясно, вы в самом начале своего пути и начитались бреда. То что там описывается, это не перцептрон Розенблатта. У перцептрона Розенблатта три слоя элементов S-A-R , где они у Ryan Peters ?

Ну, собственно, Ryan Peters - это и есть распространитель мифов, о которых я и пишу в своей статье. Если вы как то аффилированы с ним, попросите его не распространять фейки в науке. А сами внимательно читайте, что есть перцептрон. Мне вы видимо не поверите, поэтому откройте оригинал.

Но начните пожалуй с Википедии статья Перцептрон, это я её писал еще лет 15 назад, так вот посмотрите там вначале как решается задача XOR перцептроном.

Бред о линейной разделимости отпадет сам собой.

1
23 ...

Information

Rating
744-th
Registered
Activity

Specialization

Game Developer, Software Architect
Lead
C#
OOP
ASP.Net
MSSQL
Game Development
C++
Programming microcontrollers
Software development
WPF
Unity3d