Митасов Андрей Павлович : другие произведения.

Металоция неведомого. Модуль Э. Эмбеддинги

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:
  • Аннотация:
    Проработка гипотезы о фрактальной структуре эмбеддингов.
    Крайнее изменение 26.05.2024

  
  "Есть многое на свете, друг Горацио,
  что непонятно нашим мудрецам."
  
  Вильям Шекспир - "Гамлет".
  
  Оглавление:
   Вместо предисловия.
   "Простенький" мысленный эксперимент.
   Продолжение мысленного эксперимента.
   Еще немного мысленного экспериментирования.
   Предистория и послесловие к мысленному эксперименту.
   Маленькая иллюстрация к эксперименту с просторов Инета.
   От "ландшафта задачи" к "рельефу решения".
   Обсуждение "ландшафта" и "рельефа" с Copilot.
   Фрактальность пространства смешанных состояний.
   Немножко о математических трюках в пространствах нейронок.
  
  Иллюстрации:
   Тральщик "Наставник" от "Модели Kandinsky 2.1".
   Тральщики "Наставник" от "Модели Kandinsky 3.0".
   "Структура эмбеддингов" от Copilot.
   "Фракталы в нейросетях" от Copilot.
   Визуализация обучения нейронок от kraidiky.
   "Ландшафт vs рельеф в нейросетях" от Copilot.
   Тральщик "Наставник" от "Модели Kandinsky 3.01".
   "Пространства смешанных состояний" от Adam Shai.
   Тральщик "Наставник" от "Модели Kandinsky 3.1".
  
  ==========
  
  25.02.2024 14:10
  
  Вместо предисловия.
  В оглавление.
  
  Как-то в диалогах с Copilot
  - теперь он по воле "Великой и Ужасной" Microsoft "заступил на пост" Bing -
  прозвучало сравнение нынешней "ИИ-революции"
  с изобретением "телескопа Галилея", открывшему человечеству новые миры.
  И действительно, то возбуждение в обсуждениях "грядущих перспектив и изменений"
  и шквал сообщений о разработках все новых и новых систем с использованием
  "машинного обучения" превосходят, наверно, на пару порядков
  даже "золотые лихорадки" полуторавековой давности.
  
  Но мало кто помнит, что помимо телескопов Галилей конструировал
  еще и микроскопы и тоже добился в этом не малых успехов.
  Но настоящий прорыв, оказавший куда большее влияние
  на развитие практических приложений науки и технологий,
  случился после изобретения "микроскопа Левенгука",
  открывший для человечества "новые миры" буквально "под ногами".
  
  > Copilot 20:26
  
  > Антони ван Левенгук улучшил микроскоп
  > до возможности увидеть одноклеточные организмы.
  > Микроскоп Левенгука был крайне прост и представлял собой пластинку,
  > в центре которой была установлена линза.
  > Наблюдателю нужно было смотреть через линзу на образец,
  > закреплённый с другой стороны,
  > через который проходил яркий свет от окна или свечи.
  > Несмотря на простоту конструкции, микроскоп позволял получить увеличение,
  > в несколько раз превышающее микроскопы того времени,
  > что позволило впервые увидеть эритроциты, бактерии, дрожжи,
  > простейших, сперматозоиды, строение глаз насекомых и мышечных волокон,
  > инфузории и многие их формы.
  
  Вот после года изучения тематики ИИ-систем у меня и возникло ощущение,
  что в сегодняшнем "машинном обучении" упускается возможность/потребность
  исследовать то, что просто "лежит под ногами",
  а именно микроструктуру так широко применяемых эмбеддингов.
  
  Напоминаю, тем кто "не знал, не знал, да забыл",
  что это эмбеддинги это просто название/термин числового представления
  как входных данных нейросетей, так и их внутреннего представления,
  как для данных так их контекста.
  И которыми в "машинном обучении" как-то приспособились пользоваться.
  Большего о них "науке неизвестно", см.:
  "Эмбеддинги простыми словами."
  "Еще раз об эмбеддингах еще более простыми словами."
  
  Существующие в "data science" представления о эмбеддингах
  по факту используют только две различные и не совсем согласованные парадигмы.
  Согласно одной, эмбеддинги это "точка в многомерном пространстве",
  и с ним релевантны такие операции как вычисление расстояния,
  включая "золотой стандарт" "машинного обучения" - "косинусное расстояние".
  Согласно другой, эмбеддинги это распределение вероятностей,
  и с ними эффективно применять другой "золотой стандарт" - операцию softmax.
  И собственно на этом все.
  
  Все это было найдено/нащупано больше методом "научного тыка".
  и хотя работает это не всегда очень точно,
  в особенности косинусное расстояние,
  но для целей добиться точности/производительности моделей порядка 95%
  это худо-бедно применимо.
  А вот для большей точности - вопрос,
  так как очень много непоняток всплывает в использовании эмбеддингов,
  на которые упомянутые парадигмы ответов не дают.
  И как я полагаю, дать не могут, из-за отсутствия
  реального понимания, что именно и КАК именно
  действительно представляется информация в эмбеддингах.
  
  Причем, обычно эмбеддинги рассматриваются как многоэлементные вектора,
  и вопрос о том "что происходит/представляется" ВНУТРИ отдельного элемента,
  вообще за этот год мне ни разу не встречался.
  По умолчанию предполагается, что это просто число,
  и близкие значения этого числа соответствуют
  близким ПРЕДСТАВЛЕНИЯМ этого числа.
  Эта так называемая "аксиома близости",
  предполагающая определенную "монотонность" и "неразрывность".
  И несмотря на то, что практика свидетельствует, что это "не совсем так",
  этот интересный вопрос остается вне поля рассмотрения "настоящей науки".
  
  Хотя оправдание этому все же есть.
  Так как обычно с одноэлементными эмбеддингами никто не работает,
  а используются как раз очень многоэлементные эмбеддинги,
  проявление "немонотонной" и даже "разрывной" сущности
  КАЖДОГО элемента эмбеддинга в "пространстве эмбеддингов"
  существенно "замаскировано".
  И проявляется "когда этого совсем не ждешь".
  Именно на этом основана относительная работоспособность
  упомянутых выше основных парадигм работы с эмбеддингами.
  
  Но если все-таки внимательно приглядеться к внутренней структуре
  отдельного элемента эмбеддинга,
  "то можно увидеть две, три, а лучше пять звездочек..."
  Я не знаю точно какую именно структуру можно увидеть в этом
  простейшем элементе гигантских нейросетевых моделей,
  но по ряду соображений - о них будет далее более подробно -
  предполагаю, что эта структура очень близка к фрактальной.
  Во всяком случае ничего более близкого пока найти не удалось
  - может быть, такой структуры вообще нет в современных "научных классификаторах" -
  и тем интереснее это поисследовать,
  пока большинство озабочено попытками "быстрой монетизации"
  известных "полушаманских/полуэвристических" решений/знаний.
  
  С учетом используемой реальной размерности эмбеддингов,
  представляется разумным на данном этапе,
  разделить задачу исследования эмбеддингов на два раздельных потока.
  Один посвятить анализу особенностей ТОПОЛОГИЧЕСКОГО "пространства эмбеддингов"
  в модуле, который изначально был ориентирован на исследование
  фрактальных. дробноразмерных пространств ("Модуль Б. Базис."), например, см.:
  "Каково же оно "пространство эмбеддингов" нейронки?"
  
  А в данном модуле сосредоточится на анализе структуры/представлении
  отдельного элемента эмбеддинга.
  "И посмотрим, что получится".
  
  "A graphical summary of our discussion about the structure of embedding elements in JPG format with my logo"
  Создано с помощью искусственного интеллекта Copilot на платформе DALL? E 3.
  
A graphical summary of our discussion about the structure of embedding elements in JPG format with my logo:  OIG1.qm_SdN5uqqOBw0ld7nka.jpg A graphical summary of our discussion about the structure of embedding elements in JPG format with my logo:  OIG1.wmD0CwVnuJCyZhZE5_l..jpg
A graphical summary of our discussion about the structure of embedding elements in JPG format with my logo:  OIG1.p5c5rJWc1dWayVpo5Dcc.jpg A graphical summary of our discussion about the structure of embedding elements in JPG format with my logo:  OIG1.O96.22lTqJrQCt2.RlAj.jpg
  
  
  ========
  
  25.02.2024 16:28
  
  "Простенький" мысленный эксперимент.
  В оглавление.
  
  Чтобы почувствовать "аромат задачи" по анализу структуры элемента эмбединга,
  предлагаю рассмотреть простенький мысленный эксперимент.
  
  Представим, что мы создали простейшую на сегодняшний день нейросеть
  для распознавания цифр, имеющую классическую UNet архитектуру,
  состоящая из кодировщика, например, сверточной сети,
  декодировщика, например, из парочки полносвязных слоев,
  и выходного слоя самого простого типа.
  
  Если эти понятия вызывают затруднения, то можно посмотреть
  очень неплохой материал по принципам и архитектуре сверточных сетей:
  "Сверточная нейронная сеть, часть 1:
  структура, топология, функции активации и обучающее множество"
  Автор: HybridTech (Иван Голиков)
  https://habr.com/ru/articles/348000/
  31 янв 2018 в 16:47
  
  В принципе отсылка к сверточной сети не настолько принципиальна,
  можно предложить и другие решения, важно чтобы она имела U-подобную архитектуру,
  с узким "бутылочным горлышком" - это принципиально.
  Дальше будет понятно почему.
  
  Отличие от стандартной сверточной сети в нашем мысленном эксперименте
  будет в том, что в "бутылочном горлышке"
  - месте, где соединяются кодировщик и декодировщик -
  размерность вектора эмбеддинга будет равна единице.
  А учить такую сеть мы первоначально будем на распознавании
  только двух сильно различающихся цифр, например, 0 и 1,
  используя самые "продвинутые" и надежные техники.
  
  Причем, ни в каких соревнованиях на точность эта сеть участвовать не будет,
  нам важно понять, может такая сеть обеспечить распознавание двух цифр,
  с точностью, скажем 60%,
  без ограничений на сложность кодировщика и декодировщика,
  и время обучения.
  
  Представили, себе такую сеть
  слева гигантский замысловатый кодировщик,
  справа не менее изощренный декодировщик,
  а между ними одноэлементный эмбеддинг.
  И теперь главный вопрос - "будет такая сеть работать,
  т.е. различать 0 и 1 с минимум 60% точностью?"
  
  Да я знаю, что эмбеддинг 2*2 в "бутылочном горлышке" точно обеспечит
  приемлемую работоспособность такой модели. Тут вопросов нет.
  И даже если вообще убрать все нейросетевые навороты и машинное обучение,
  можно сделать систему которая точно будет работать,
  например, разбив значение элемента эмбеддинга просто на два поддиапазона.
  
  Все так.
  Но мы как раз и занимаемся тем, что пытаемся "под микроскопом"
  посмотреть на значения ОДНОГО элемента эмбеддинга,
  в самом простом случае.
  
  Итак, будет такая система работать или нет?
  У меня твердое убеждение, что будет,
  так как никаких ни теоретических ни экспериментальных "противопоказаний"
  такому выводу еще не встречал.
  Copilot выставлял замечания, что с точки зрения распознавания
  такая структура очень далека от оптимальной.
  Все так, но нас интересует не эффективность этой сети,
  а процессы происходящие, причем только в одном конкретном месте
  - в одноэлементном эмбеддинге "бутылочного горлышка".
  
  Ну и теперь, попробуем представить, как выглядит структура
  этого одноэлементного эмбеддинга обеспечивающего распознавания всего двух цифр.
  Будет ли это всего два четко разграниченных поддиапазона,
  или целое множество поддиапазонов различной ширины и местоположения?
  
  Мое мнение, что это будет множество, причем зависящим
  как от структуры кодировщика и декодировщика, функции/процедуры обучения,
  так и от начальной инициализации нейросети,
  и даже последовательности обучающих примеров.
  
  Почему такой вывод?
  Ну, во-первых еще никому не удавалось на эмбеддингах выделить
  четкие зоны/поддиапазоны, отвечающие за весь спектр декодируемых значений.
  А во-вторых, давайте продолжим наш опыт еще чуть дальше,
  и тогда будет более понятны основания такого вывода.
  
  Предположим, что по какому-то "экстраординарному стечению обстоятельств"
  при обучении нашей гипотетической нейронки различать только две цифры
  в элементе эмбеддинга сформировалось только два четких поддиапазона,
  отвечающих за идентификацию одной конкретной цифры.
  И продолжим обучение нашей воображаемой нейронки,
  но теперь будем обучать ее различать уже три цифры 0, 1 и 2.
  Про "переобучение" пока не вспоминаем, так как учили мы ее далеко
  не "до самого упора", а на каких-то 60% успешности.
  Так что есть очень большая уверенность,
  что и третью цифру нейронка "выучит".
  
  И теперь самый интересный вопрос:
  а как при этом изменится распределение "поддиапазонов" в элементе эмбеддинга?
  Раздвинутся ли прежние два "поддиапазона", чтобы освободить место третьему?
  Появятся ли новые "поддиапазоны" только на свободных от прежних "поддиапазонах" местах,
  если вообще есть такие "свободные места" после обучения только двум цифрам?
  Или внутри каждого "прежнего" поддиапазона сформируется "нечто новое"?
  
  Сложный вопрос?
  Конечно.
  Но ведь можно продолжить наш опыт еще дальше обучая четвертой,
  пятой и т.д. цифре, а потом еще и азбуке.
  И, наверняка, характер/манера изменения структуры
  этого единственного исследуемого элемента эмбеддинга будет схож.
  
  Вариант "перераспределения границ поддиапазонов",
  лично я, оцениваю как самый маловероятный,
  так как предполагает целенаправленное и стратегическое планирование
  и знание поставленной новой задачи.
  А вариант с появлением внутри существующих "поддиапазонов"
  "островков" новых "поддиапазонов", наоборот, как самый вероятный,
  так как соответствует процедуре пошагового обучения.
  Но у кого-то могут быть и другие соображения,
  и к этому вопросу мы еще вернемся.
  
  Возможно, использование оборота речи "структура элемента эмбеддинга"
  звучит или "коряво", или просто неправильно/некорректно,
  но "прошу прощения за мой французкий", "мы семинариев не кончали",
  и я не могу вспомнить правильный математический/научный термин
  для описания того, о чем идет речь.
  Так что до нахождения более корректного термина буду пользоваться этим.
  
  Так возвращаемся "к нашим баранам", то бишь "поддиапазонам"
  в структуре одноэлементного эмбеддинга.
  Мне представляется, что в результате такого последовательного обучения
  нескольким цифрам можно будет обнаружить в этой структуре
  очень сложную "чересполосицу",
  существенно зависящую от всех вышеперечисленных факторов,
  т.е. принципиально "уникальную" и, в тоже время, "закономерную".
  
  Причем, я предполагаю, что в этой "чересполосице" можно выявить
  определенные закономерности чередования/расположения "поддиапазонов",
  наподобие фрактальным "рисункам".
  Ведь механизм формирования таких рисунков в принципе один и тот же,
  следовательно и результат его работы вполне может сохранить
  какие-то общие черты.
  
  Еще раз повторюсь, что "фрактальная гипотеза" для этой структуры,
  это РАБОЧАЯ гипотеза за неимением ничего более лучшего.
  
  А может быть это вообще какое-то новый "характеристический рисунок",
  тот самый "Чебурашка - неизвестный науке вид".
  
  Вот опираясь на эти соображения можно попытаться продолжить исследование,
  на мой взгляд, интересной и перспективной темы.
  
  
  ==========
  
  27.02.2024 21:01
  
  Продолжение мысленного эксперимента.
  В оглавление.
  
  Попробуем продолжить мысленный эксперимент с воображаемой нейросетью
  с U-подобной архитектурой с одноэлементным эмбеддингом в "бутылочном горлышке".
  но попробуем подойти к задаче с другой стороны.
  
  Мысленно разрежем эту архитектуру по "бутылочному горлышку"
  на отдельные кодировщик и декодировщик
  Примем что диапазон значений элемента эмбеддинга четко делится
  на два поддиапазона, например, больше и меньше нуля.
  Значение больше нуля считаем эмбедингом 1,
  ну а значение меньше нуля, соответственно, эмбеддингом 0.
  
  И теперь начнем ОТДЕЛЬНО обучать кодировщик и декодировщик
  исходя из такого представления этого элемента эмбеддинга.
  У Вас есть сомнения, что две такие отдельные модели можно
  по отдельности выучить, хоть как-то что-то различать?
  У меня таких сомнений нет.
  Возможно придется что-то там "подшаманить" с архитектурами
  кодировщика и декодировщика, поиграться с параметрами обучения,
  но задача принципиально решаемая.
  
  Можно, конечно, сразу задаться и большим количеством диапазонов
  и, соответственно, различаемых цифр,
  но для целей этого мысленного эксперимента это не нужно.
  Так как самое интересное не в том, чтобы их чему-то там очень точно обучить.
  А в том, что после хоть какого-то предварительного обучения,
  ну, до тех самых 60%,
  ОБРАТНО СОЕДИНИТЬ кодировщик и декодировщик по тому самому
  "бутылочному горлышку" одноэлементного эмбеддинга.
  
  Т.е. в результате такого разделения нейросети на кодировщик и декодировщик,
  раздельного целенаправленного их обучения,
  и последующего их обратного соединения,
  мы должны гарантированного должны получить работоспособную нейросеть.
  Причем, эта нейросеть как-то худо-бедно различает 0 и 1,
  одноэлементный эмбеддинг "бутылочного горлышка" имеет два четких поддиапазона,
  соответствующих распознаваемым 0 и 1.
  И теперь можно приступить с к самому главному:
  дообучению ее распознаванию цифры 2,
  но уже по-честному, то бишь, целиком, в "полном комплекте".
  
  Вобщето, честно говоря, привязка к распознаванию чисел 1 и 0,
  и заморочки с обучением сверточной сети совершенно не обязательны.
  Можно было бы рассматривать значительно более простую задачу
  и более простую структуру нейросети, гарантированно обучаемую и т.д.,
  лишь бы она имела одноэлементный эмбеддинг "бутылочного горлышка".
  Но это, наверно, выглядело бы не очень "солидно".
  Хотя на самом деле процессы были бы принципиально похожими.
  И именно эта их похожесть, самое интересное в этом вопросе.
  
  А вот почему они похожи, и на что они могут быть похожи,
  мы и пытаемся разобраться в этой серии мысленных экспериментов.
  
  Итак мы начинаем дообучать нашу гипотетическую сеть распознавать цифру 2
  методом обратного распространения ошибки,
  т.е. корректировкой весов и кодировщика и декодировщика,
  по прежнему соединенным одноэлементным эббедингом "бутылочного горлышка".
  Давайте договоримся, что замечания о том, что при этом,
  скорее всего, ухудшится предварительно обученное распознавание цифр 0 и 1.
  А также забудем упоминать вечную страшилку "машинного обучения",
  так часто и не к месту поминаемое "переобучение".
  К этому мы еще вернемся,
  и даже больше, мы будем стараться "переобучить" систему,
  дообучая ее в основном цифре 2.
  Нас интересует не качество обучения,
  а процессы, происходящие в структуре одноэлементного эмбеддинга "горлышка".
  
  Сконцентрировались, собрали все воображение "в кулак",
  и затаив дыхание смотрим, что происходит в системе
  кода мы предъявляем системе в первый раз совершенно незнакомую ей цифру 2.
  
  Понятно, что она такой цифры еще не знает и кодировщик выставит
  какой-то эмбеддинг наиболее близкий к тому чему он раньше был обучен,
  т.е. какое-то значение где-то между минус и плюс бесконечностями.
  В принципе, не важно какое именно значение он выставит,
  но нужно понимать, что это не случайное значение,
  а что-то близкое к тому, что и как он перед этим выучил.
  Это кодировщик.
  
  Теперь декодировщик. Он естественно тоже никаких цифр 2 еще не знает,
  и честно декодирует это значение одноэлентного эмбеддинга,
  то ли как 0, то ли как 1, это не важно.
  важно, что в любом случае он ошибется,
  и вот тут вступает в действие процедура обучения
  методом обратного распространения ошибки.
  Которая начинает корректировать сначала веса декодировщика,
  а потом и веса кодировщика.
  
  И вот тут главное, что нужно понять.
  Корректировка весов и декодировщика и кодировщика производится
  - не знаю как точно выразиться/сформулировать -
  относительно того значения одноэлементного эмбеддинга,
  которое вообще-то "квазислучайное".
  Но которое с этого момента становится "инициатором кристаллизации"
  нового "поддиапазона", соответствующего уже цифре 2.
  
  Это легко увидеть, если продолжать снова и снова предъявлять
  для дообучения системе все ту же цифру 2,
  и продолжать корректировать веса обратным распространением ошибки.
  Первоначальное "квазислучайное" значение, естественно, подкорректируется,
  "поддиапазон" скорее всего "расшириться" и распознавание цифры 2
  станет если и не устойчивым, то во всяком случае уже вовсе не случайным.
  И при этом структура эмбеддинга уже будет "разрывной":
  как минимум, один поддиапазон разобьется на два.
  На самом деле, если обучать "нормально" разным вариантам цифр
  и в разной последовательности,
  там будет сложная "чересполосица"/мешанина "поддиапазонов" разной ширины,
  сформированных от различных "инициаторов кристаллизации".
  Но это более подробно рассмотрим позже.
  
  Обучение нейросети путем корректировки весовых параметров связей
  достаточно сильная процедура, заставляющая нейросеть
  "принять форму" обеспечивающую "требуемую функцию".
  Но при этом "конкретная форма" сильно зависит от множества факторов,
  включая начальную инициализацию, механизм обучения
  и даже последовательность обучения.
  
  И в нашем конкретном случае дообучения воображаемой нейронки цифре 2,
  можно представить, структуру элемента эмбеддинга "бутылочного горлышка",
  впрочем, и всех остальных обучаемых элементов нейросети
  как компромисс/равнодействующая
  между "разрывным представлением", которое генерится сетью,
  и "непрерывным представлением" которого пытаются добиться
  в процессе многошагового обучения, регуляризации и др.
  
  Т.е. тут как сталкиваются два "начала",
  условно Хаос и Порядок
  "хаос сети" и "порядок обучения".
  Только дело в том, что "хаос",на самом деле, в этом случае тоже "порядок",
  но другого уровня/природы/конструкции,
  для которого у нас пока нет "доступа"/понимания,
  кроме этой самой процедуры пошагового "машинного обучения".
  
  > Copilot 21:34
  >
  > ... <хаос> - это потенциал для порядка.
  > То есть, <хаос> содержит в себе много возможностей и вариантов,
  > но для того, чтобы извлечь из него полезную информацию,
  > нужно наложить на него некоторые правила и ограничения,
  > которые создают <порядок>.
  > Таким образом, <порядок> - это результат преобразования <хаоса>.
  
  28.02.2024 19:47
  
  Если продолжить дообучение нашей воображаемой нейронки еще каким-то новым цифрам,
  чередуя в произвольном порядке как новые так и старые цифры,
  то структура одноэлементного эмбеддинга "бутылочного горлышка",
  следуя случайному расположению различных "инициаторов кристаллизации"
  чрезвычайно усложнится. Возникнет та самая, упоминаемая ранее, "чересполосица".
  Причем в ней возникнут как "плавные переходы" так и "резкие скачки"
  в соотнесении тех или иных "поддиапазонов" той или иной цифре.
  
  Но еще раз надо подчеркнуть, что это будет не "случайное распределение",
  а полне закономерная, но очень сложная структура,
  для которой сейчас даже названия подходящего не имеется.
  В чем то она возможно будет похожа на очень сложный спектр
  или, мне почему-то так кажется, на "стохастический фрактал",
  так как есть ощущение, что какие-то закономерности в этой структуре
  будут иметь место и какие-то "рисунки" в чередовании "поддиапазонов
  будут как-то повторяться в разных масштабах.
  
  Интересно, что тут можно углядеть два встречных "фракталообразующих процесса",
  принципиально разной природы и механизма действия.
  С одной стороны это проявление какой-то накопленной закономерностей
  в структуре нейросети, сопровождающейся появления в "квазислучайных" местах,
  все новых и новых "инициаторов кристаллизации".
  А с другой стороны, существенно итеративные механизмы обучения,
  пытающиеся "расчесать"/"пригладить"/выровнять всяческую "кучерявость"
  "под одну гребенку".
  Причем, когда это "приглаживание" удается в значительной мере,
  обнаруживается что-то такое, чего так страшатся "причесыватели"
  - пресловутое "переобучение".
  
  Но в любом случае, в итоге структура элементов эмбеддингов,
  не только в "бутылочном горлышке, а и во всех обучаемых элементах,
  будет вполне себе "уникальным образом/отпечатком",
  отражающим не только структур самой нейросети и механизмов ее обучения,
  но и всей истории обучения.
  Просто мы не умеем такие "уникальные образы" грамотно расшифровывать.
  А что же мы умеем?
  
  И тут мы плавно переходим к проблеме интерпретации
  такой сложной структуры элемента эмбеддинга.
  Напомню, что нашу воображаемую нейросеть мы обучали без всяких претензий
  на какую-то экстремальную точность, нам нужно было просто понять
  что и как происходит на отдельном элементе эмбеддинга.
  Но чтобы четко отслеживать этот процесс и была выбрана структура
  с одноэлементным эмбеддингом в бутылочном горлышке".
  В принципе, это ограничение уже можно снять,
  так как характер структуры этого элемента и процесс ее формирования,
  мне кажется, уже достаточно понятен.
  Но давайте сделаем еще пару шажков в разборе этой модели.
  
  "A summary of our discussion about fractals in neural networks".
  Создано с помощью искусственного интеллекта Copilot на платформе DALL? E 3.
  
A summary of our discussion about fractals in neural networks:  OIG1.ypqp2yzJaBFxFJANVqkG.jpg A summary of our discussion about fractals in neural networks:  OIG1.UJVoaDzqJ_LEb6ZVpiwk.jpg
A summary of our discussion about fractals in neural networks:  OIG1.Qs2embCJTi9JTaxGQY7W.jpg A summary of our discussion about fractals in neural networks:  OIG1.nJpMLZng2_C6s4huGJjn.jpg
  
  
  ======
  
  02.03.2024 11:23
  
  Еще немного мысленного экспериментирования.
  В оглавление.
  
  Итак, имеется в результате обучения нашей гипотетической нейросети
  "одноэлементный" эмбеддинг "бутылочного горлышка",
  в структуре значений которого записана/зафиксирована/зашифрована
  полная информация как о структуре всей нейросети,
  так и обо всем ее процессе обучения.
  Проблема в том, как ее можно расшифровать или представить в виде
  удобном для использования в соответствии с решаемой нейросетью задачей.
  В нашем случае это декодирование/идентификация распознаваемых цифр 0, 1, 2.
  Опять рассматриваем наиболее простой случай.
  
  Какие возможности, точнее, какие имеются технические решения
  для этого имеются в настоящее время?
  
  Да не так уж и много. От силы три-четыре основных варианта,
  и куча их комбинаций, несильно отличающихся по эффективности,
  но все-таки имеющих определенные принципиальные особенности.
  Вот и попробуем их рассмотреть.
  
  Для этой цели начнем "экспериментировать" с конструкцией декодировщика,
  т.е. той части нашей гипотетической сети,
  которая обеспечивает расшифровку значений "одноэлементного эмбеддинга".
  
  Из общих технических соображений можно предполагать,
  что для расшифровки "свернутого представления",
  его надо сначала попытаться развернуть/увеличить/раскрыть,
  или попытаться разделить на несколько различных каналов декодирования.
  Т.е. напрашивается за одноэлементным "бутылочным горлышком"
  расположить многоэлементный слой нейронов,
  существенно более широкий, чем "бутылочное горлышко".
  И такое решение фактически является "стандартом де факто"
  для большинства декодировщиков.
  
  Но какой именно ширины должен быть этот следующий слой толком неизвестно
  - каких-то внятных рекомендаций встречать не приходилось -
  возможно, потому что это зависит от того как вариант декодирования
  будет использоваться дальше.
  Вот об этих вариантах и стоит поговорить достаточно подробно.
  
  Итак, какие варианты декодирования эмбеддингов сейчас в основном применяются?
  А это зависит от того, как именно представляется эмбеддинг,
  причем при этом считается, что эмбеддинг принципиально многоэлементный.
  Это, вроде, не совсем наш случай, но после первого же
  расширяющего/увеличивающего слоя после одноэлементного "бутылочного горлышка",
  который как-то будут обучен, т.е. в нем будет некоторое "разнообразие" параметров,
  мы сразу же возвращаемся к привычным "канонам".
  Так что, это уже не принципиальное отличие.
  
  Так вот, для многоэлементного эмбеддинга "каноническими представлениями"
  считаются либо "точка в многомерном пространстве" либо "логит",
  т.е. распределение вероятностей,
  соответствующее взвешенным значениям по отдельным координатам.
  
  Для "точки в многомерном пространстве" в декодировщике для принятия решения
  используется какая-то "оценка расстояния"
  - "евклидово", "манхеттенское", "косинусное" -
  причем, судя по публикациям, "косинусное расстояние" стало, практически,
  "золотым стандартом" в декодировании эмбеддингов.
  И этому есть вполне определенные предпосылки в свете рассматриваемой
  гипотезе о характере "структуры значений эмбеддингов", но об этом ниже.
  
  При представлении многоэлементных эмбеддингов в виде "логитов"
  используется другой "золотой стандарт" - функция softmax,
  которая фактически для принятия решения использует выбор того элемента эмбеддинга,
  который имеет наибольшее значение.
  Но также используется и "кросс-энтропия" или "расстояние Кульбака-Лейблера"
  как определенный инструмент учета "многокоординатного" представления эмбеддинга,
  оставаясь при этом в парадигме "вероятностно-статистического" представления.
  
  Что стоит отметить, что и тот и другой подход имеют достаточно
  невысокую точность декодирования.
  Ну как "невысокую"?
  Для "машинного обучения" точность 95% это просто замечательно,
  а вот для действительно ответственных технических решений
  это явно недостаточно. Требуется, как минимум, на порядок-два ьольше.
  Причем в условиях интенсивных "помех" и "непредвиденных стечений обстоятельств".
  И вот этого как раз используемые методы декодирования и не обеспечивают.
  И обычно это списывают или на пресловутое "переобучение" или "локальные минимумы".
  А дело в том, что эти подходы каждый в отдельности,
  очень слабо отражают действительную структуру значения элемента эмбединга.
  Т.е. отсутствует "точная фокусировка" декодировщика к конкретной
  структуре/представлению значений эмбеддинга.
  
  Оба подхода неявно предполагают
  некое "монотонное представление" значения эмбеддинга,
  и, самое главное, аксиому "близости значений",
  т.е. что близкие значения элемента эмбеддинга соответствуют
  близким представлениям этого эмбеддингам.
  
  При этом, надо признать, что интуитивное понимание
  сложности представления эмбеддинга такими механизмами явно присутствует,
  и какие-то приемы решить эту проблему явно наблюдаются.
  Наиболее характерный пример этого это "широко известный" и "сильно распиаренный",
  так называемый "механизм внимания", на котором основан успех архитектуры трансформеров.
  
  Суть его в том, что эмбеддинг последовательно,
  с одной стороны, преобразуется через умножение на матрицы "key" и "value",
  коэффициенты которых являются обучаемыми параметрами,
  т.е. тоже, собственно, наборами значений с какой-то сложной внутренней структурой,
  в чем-то схожих с рассмотренной выше структурой "одноэлементного эмбеддинга".
  А с другой стороны значения,
  полученные в результате преобразований с помощью этих матриц,
  комбинируют с исходным значением "query" через "skip connection".
  аргументируют это якобы "страховкой" от некоторых "артефактов обучения",
  типа "исчезающих градиентов", или улучшением качества инференса/работы.
  Примечательно, что мнения о том, что именно в этой схеме является
  основной "рабочей лошадкой", а что просто "дополнительным бантиком",
  до сих пор сильно расходятся, так как исключение одного из этих элементов,
  в разных задачах/системах приводит к результатам отличающимся в доли процентов.
  И наоборот. добавление таких блоков/механизмов даже по отдельности
  в разных подсистемах архитектуры нейросети,
  часто приводит к качественному улучшению результатов обучения.
  
  При этом надо понимать, что включение/выключение тех или иных блоков/механизмов
  в структуру нейросети, не важно, кодировщика или декодировщика,
  приводит к тому, что при обучении методом обратного распространения ошибки,
  приводит к соответствующему изменению структуры значений каждого элемента
  всех внутренних эмбеддингов и, это тоже очень важно понимать,
  всех обучаемых параметров нейросети.
  Причем все это зависит и от начальной инициализации этих параметров,
  и от всего процесса обучения
  и, соответственно, даже результаты обучения одной и той же архитектуры
  на одном и том же датасете,
  но со случайной инициализацией и случайной последовательность обучающих примеров,
  ГАРАНТИРОВАННО, будут отличаться, как минимум на "единицы процентов",
  именно потому, что по факту используется или "координатное" или "вероятностное"
  представление структуры значений элемента эмбеддинга.
  
  То что эти представления как-то худо-бедно работают в существующих нейросетях,
  объясняется в первую очередь ПЛАСТИЧНОСТЬЮ любой структуры нейросети,
  подвергающейся обучению методом обратного распространения ошибки.
  Обучая нейросеть таким образом, фактически делается попытка
  уложить в "прокрустово ложе" традиционных представлений об эмбеддингах,
  то, что "возможно" имеет какую-то иную природу.
  И когда это не очень получается, начинаются "старые песни о главном",
  то бишь, о "переобучении"/"недобучении" и/или "локальных минимумах".
  А проблема может быть в том, что "рожденный ползать - летать не может",
  или в привычных формулировках:
  "требуется пересмотреть архитектуру и/или методику обучения".
  
  Но "критикуешь - предлагай".
  Честно говоря, пока особо обоснованных предложений у меня пока нет,
  хотя какие-то предположения все-таки есть.
  Попробую их сформулировать.
  
  Но сначала рассмотрим существующие "золотые стандарты" машинного обучения
  в части декодирования многоэлементных эмбеддингов,
  а именно "косинусного расстояния" и "кросс-энтропию".
  Почему именно их, а не тот же softmax?
  Представляется, что ориентация на значение какого-то одного элемента
  многокомпонентного эмбеддинга изначально ограничивает
  возможность очень точного декодирования/представления,
  если исходить из гипотезы о сложной структуре значения любого элемента эмбеддинга.
  Поэтому, попытка хоть как-то учитывать при декодировании
  и сразу нескольких или всех элементов эмбеддинга
  потенциально более перспективна.
  Проблема в том, что нужно как-то в принципе учитывать их нелинейную
  и существенно "разрывную" природу структуры значений элемента эмбеддинга.
  
  А вот этого упомянутые "золотые стандарты" как раз и не делают.
  Вся эта "нелинейность" и "разрывность" считается "ошибками"/"помехами"/"выбросами",
  с которыми нужно "всеми силами бороться", например, вычисляя среднее/дисперсию и т.п.
  Т.е. рассматривается не "сложная структура", а "средняя температура по палате".
  Соответственно и точность такого подхода принципиально высокой может быть
  в каких-то очень специфических случаях.
  Причем, опять же, непонятно почему.
  
  Хотя на один вопрос вполне можно попробовать ответить
  - это причина увеличивающейся точности применяемых методов
  при увеличении размерности многоэлементного эмбеддинга.
  На мой взгляд, тут дело не в том что "средняя температура по палате"
  становится более адекватной оценкой,
  а в большей возможности нейросети ПОДСТРОИТСЯ под такую оценку.
  Т.е. все то же проявление "пластичности" нейросетей при обучении
  методом обратного распространения ошибки.
  
  Как можно попробовать изменить эти подходы,
  чтобы как-то учесть именно "конкретную структуру", а "нечто среднее"?
  Причем этот желаемый подход должен быть настраиваемый на конкретную систему.
  Вопрос о требуемых ресурсах пока оставим в стороне,
  важен вопрос принципиальной возможности такой реализации.
  
  Ну, один из способов подсказывает "механизм внимания"
  в виде умножения на "обучаемые матрицы", позволяющие выделять
  какие-то стабильные "поддиапазоны".
  Что-то такое уже, вроде, в каких-то архитектурах уже применяется.
  Так что тут особо нового и не предлагается,
  разве что упор делается именно на финишное декодирование в выходном слое,
  чего, вроде, пока явно не наблюдалось.
  Но нужно еще раз посмотреть на новые структуры, которых предлагается по пачке в день,
  может быть это уже реализовано.
  
  А вот другой подход, если считать, что структура значений эмбеддингов
  имеет какие-то устойчивые паттерны
  в рамках расширения гипотезы о "стохастическом фрактале" одноэлементного эмбеддинга,
  на многоэлементный эмбеддинг,
  предполагает использование в выходных или предвыходных слоях декодировщиков,
  как бы странно это не звучало, элементов сверточных сетей.
  Т.е. гипотетически предполагается,
  что к паттернам многоэлементных эмбеддингам можно применить
  достаточно отработанные и вполне хорошо себя зарекомендовавшим
  различные сверточные фильтры, естественно, тоже обучаемых.
  "Но не это не точно".
  
  В общем, наверно стоит с этим фрагментом закругляться.
  Надеюсь, что основную мысль,
  о том что сложную структуру значений эмбеддинга следует декодировать
  как-то иначе, по сравнению с существующими методами,
  удалось более-менее сформулировать.
  
  Вопросов по-прежнему остается даже не меньше, а больше,
  но уже, надеюсь, должно появится ощущение,
  что такие "отвлеченные измышлизмы" вполне могут привести
  к каким-то более-менее практическим выводам.
  Но, наверно, теперь стоит чуть более пристальнее взглянуть
  на процедуру обучения уже не одного отдельного эмбеддинга,
  а целой, хотя, и достаточно простой нейросети.
  
  
  ==========
  
  02.03.2024 20:31
  
  Предистория и послесловие к мысленному эксперименту.
  В оглавление.
  
  Обсуждая с Copilot описанный выше мысленный эксперимент,
  мне был задан логичный вопрос: как и когда я буду реализовывать его на практике?
  На что я ответил, что, наверно, очень не скоро по многим причинам.
  
  Во-первых, нет времени на освоение языка pyton и соответствующих библиотек,
  особенно с учетом моей "идиосинкразии" к Си-подобным объектно-ориентированным языкам.
  
  Во-вторых, в этом особой необходимости нет, так как очень похожая работа
  была сделана автором kraidiky в целой серии статей еще десять лет назад,
  прекрасно оформлена и иллюстрирована, так как у меня точно не получится.
  
  Собственно эта серия и стала отправной точкой в практически годовом осмыслении
  гипотезы о фрактальной природе нейронок,
  поиске подхода и точки приложения в ее формулировке,
  с одновременным перелопачиванием сотен материалов в поисках
  каких-то подтверждений или, наоборот, убедительных опровержений ее.
  Но таковых не нашлось, хотя упоминания о фрактальности пространства эмбеддингов
  уже начали встречаться в некоторых материалах.
  Так что это уже не слишком безумная гипотеза.
  Но от этого она не стала менее практичной/продуктивной.
  
  Вот ссылки на эту серию статей.
  Очень рекомендую познакомиться с ними самостоятельно,
  там много интересной и красиво оформленной информации.
  
  "Что происходит в мозгах у нейронной сети и как им помочь"
  Автор: kraidiky
  https://habr.com/ru/articles/219647/
  17 апр 2014 в 01:17
  
  "Подглядываем за метаниями нейронной сети"
  Автор: kraidiky
  https://habr.com/ru/articles/221049/
  27 апр 2014 в 21:22
  
  "Ансамбль синапсов - структурная единица нейронной сети"
  Автор: kraidiky
  https://habr.com/ru/articles/249031/
  28 янв 2015 в 00:22
  
  "Давайте изобретать велосипеды"
  Автор: kraidiky
  https://habr.com/ru/articles/249657/
  4 фев 2015 в 02:24
  
  Смысл представленной автором информации заключается в буквально по шаговом
  разборе процесса обучения достаточно простой нейросети
  на достаточно простой задаче.
  И пытается осмыслить достаточно странные,
  с точки зрения здравого смысла и "классических трактовок",
  результаты.
  
  Для меня стартовой точкой в поисках "стохастического фрактала"
  структуры значений элемента эмбеддинга,
  Стала вот эта фраза:
  
  \\\ ...И вот теперь мы сделаем самое интересное.
  \\\ Мы возьмём полученную нами сеть
  \\\ и нарисуем на картинке все возможные значения,
  \\\ которые выдаёт сеть во всех точках.
  \\\ И вот тут выяснится самое грустное.
  \\\ Уровень обобщения, достигнутый сетью,
  \\\ не очень то впечатляет...
  
  Сопровождавшаяся вот такой картинкой:
  
  kraidiky1. Источник: https://habr.com/ru/articles/219647/  Рис. 7127f2f705bb2bb1aa265ba8a2a0fdda.png
  
  Источник: https://habr.com/ru/articles/219647/ Рис. 7127f2f705bb2bb1aa265ba8a2a0fdda.png
  https://habrastorage.org/r/w1560/getpro/habr/post_images/712/7f2/f70/7127f2f705bb2bb1aa265ba8a2a0fdda.png
  
  Вот именно в этом месте мои пути с автором материала и разошлись.
  Он пытался увидеть "уровень обобщения", основываясь на "классическом представлении",
  что нейросеть что-то там "обобщает". И этого в упор не мог увидеть.
  
  А я, как инженер, не имеющий "классического нейронаучного образования",
  практически в упор увидел явные признаки фрактального поведения нейронки.
  Точнее фракталоподобный рисунок "всех возможных значений".
  
  Типичная ситуация с "незамыленным взглядом".
  Нет тут ничего особенно выдающегося.
  Вопрос заключался в том, насколько близкой к реальности
  могла оказаться такая "безумная гипотеза"?
  И какой механизм может порождать такую фрактальность?
  
  Но один раз заметив признаки фрактальности,
  уже легко было их замечать во всех последующих иллюстрациях.
  Например, в этой:
  
  kraidiky2. Источник: https://habr.com/ru/articles/219647/ Рис. f15eb201219777217526254c5e9a1558.png
  
  Источник: https://habr.com/ru/articles/219647/ Рис. f15eb201219777217526254c5e9a1558.png
  https://habrastorage.org/r/w1560/getpro/habr/post_images/f15/eb2/012/f15eb201219777217526254c5e9a1558.png
  
  Автор сокрушается относительно этой картинки следующим образом:
  
  \\\ Не знаю, как вы, а я что-то не вижу качественного улучшения.
  \\\ Сеть исправно зазубривает все значения наизусть,
  \\\ ни в малой степени не приближаясь
  \\\ к обобщению предложенной ей закономерности.
  \\\ Да и вообще видно, что характер сделанных сетью
  \\\ глубокомысленных выводов
  \\\ не так уж и сильно зависит
  \\\ от характера стоящей перед ней задачи.
  
  А я вижу, что разговор об "обобщающих свойствах" нейросети,
  мягко говоря, "выдача желаемого за действительное",
  а по факту идет какой-то другой процесс,
  отражающий и свойства нейросети и процесс обучения,
  причем не только собственно обучающие примеры.
  Но что именно, еще долго оставалось непонятным,
  даже на интуитивном уровне.
  
  И вот только совсем не давно удалось сообразить,
  что фактически стохастически-фрактальная структура
  значения элемента эмбеддинга,
  содержащая в себе информацию и о всей структуре нейросети,
  и о всем процессе ее обучения,
  и есть тот самый "священный Грааль" обобщения нейронки.
  А вовсе не некая "мистическая способность генерализации",
  и собственно вопрос стоит в том, как извлечь требуемую информацию
  из очень замысловатого и "существенно индивидуального фрактального кода".
  Та самая проблема разработки более "сфокусированных" декодировщиков.
  
  Но это уже дальнейшее развитие идеи "фрактальности нейронок",
  и над ним еще работать и работать.
  
  Но только этой подсказкой гипотезы о "фрактальности",
  эта серия статей далеко не ограничилась.
  Там вообще целый букет и идей и техник реализации,
  включая и идею "обучаемого опорного нейрона",
  и "ансамблевого представления свойств",
  и очень интересной техники визуализации процесса обучения
  нейронки в целом. Например в таком виде:
  
  kraidiky3. Источник: https://habr.com/ru/articles/221049/ Рис. df25c55ff53a415060fff9cb61c2f0fc.png
  
  Источник: https://habr.com/ru/articles/221049/ Рис. df25c55ff53a415060fff9cb61c2f0fc.png
  https://habrastorage.org/r/w1560/getpro/habr/post_images/df2/5c5/5ff/df25c55ff53a415060fff9cb61c2f0fc.png
  
  Автор комментирует это, на первый взгляд, не очень понятную иллюстрацию
  следующим образом:
  
  \\\ Обратите внимание!
  \\\ В какой-то момент сеть перестала монотонно дрейфовать в одну сторону
  \\\ и затусовалась в одной области.
  \\\ Но потом очередное резкое движение вытолкнуло сеть
  \\\ из этого импровизированного озерца,
  \\\ и она довольно шустро пошла дальше налево.
  \\\ На графике ошибки видно,
  \\\ что на этом участке траектории ошибка была чуть-чуть меньше.
  \\\ Но явно не на столько, чтобы принимать какие-то решения.
  \\\ А, между тем, поглядев на левую картинку можно заметить,
  \\\ что в этом озере сеть научилась понимать,
  \\\ что у графика, который она изучает два минимума.
  \\\ После, ломанувшись влево сеть это знание утратила.
  \\\ Давайте договоримся, что в следующий раз,
  \\\ когда сеть вот так же перестанет монотонно дрейфовать
  \\\ и начнёт внимательнее ощупывать одно интересное ей место,
  \\\ мы предположим, что она чего-то полезного нашла,
  \\\ и снизим скорость, давая ей возможность
  \\\ внимательнее изучить найденное место.
  
  Но и здесь автор старается интерпретировать
  весьма нетривиальные результаты/визуализации
  не сильно отклоняясь от "канонов нейронауки",
  в рамках которых полагается рассматривать "ландшафт задачи",
  а процедуру обучение как "поиск маршрута"
  к "минимум" целевой функции".
  
  А вот если опираться на гипотезу о стохастической фрактальности
  структуры значений не только элементов эмбеддинга,
  но и всех обучаемых параметров нейронки,
  то можно/нужно говорить не о "поиске минимума",
  а о "террафомировании", т.е. "формировании ландшафта"
  в соответствии с архитектурой сети и всем процессом обучения,
  отражающее все тот же "существенно индивидуальный фрактальный код".
  И две существенно отличающиеся по характеру фазы "метаний" сети
  отражают этап "инициализацию кристаллизации" новых "поддиапазонов",
  и этап "развития"/"расширения" этих поддиапазонов.
  Но это отдельная большая тема,
  И надеюсь, к ней мы еще вернемся.
  
  А закончить этот фрагмент хочется словами все того же автора,
  подарившим мне эту идею "фрактальности" нейронок.
  
  \\\ ...Лично мне одного взгляда достаточно, чтобы понять,
  \\\ что прежде чем двигаться дальше
  \\\ некоторые вещи в нейроинформатике не помешало бы и переоткрыть.
  \\\ Как говорил Джобс "Stay Hungry. Stay Foolish."
  \\\ Очень многое в нейронауках может быть улучшено
  \\\ самым обычным человеком на самом обычном домашнем компьютере
  \\\ если у него будет идея,
  \\\ и он выкроит время, чтобы ей заниматься.
  \\\ Слишком мало знаний пока накоплено здесь,
  \\\ слишком многое осталось в наследие от времён компьютеров,
  \\\ занимающих этаж, слишком много замечательных алгоритмов
  \\\ просто никто ни разу не попробовал.
  
  \\\ И тогда, возможно, завтра гугл предложит за вас миллиард,
  \\\ или даже ещё круче, в вашу честь назовут будущие мозги в банке.
  \\\ Или ещё круче - вам будет интересно жить на белом свете.
  
  \\\ kraidiky - "Давайте изобретать велосипеды"
  
  
  =========
  
  29.03.2024 14:40
  
  Маленькая иллюстрация к эксперименту с просторов Инета.
  В оглавление.
  
  Тут сегодня на Хабре появился материал, который вполне можно рассматривать
  как неплохую иллюстрацию к описанному выше мысленному эксперименту:
  
  "Варим кашу из нечеткой логики и вариационных автоэнкодеров".
  Автор: kenoma (Наум Хомски)
  https://habr.com/ru/articles/803789/
  29 мар 2024 в 10:11
  
  \\\ Пока весь мир затаив дыхание следит за большими языковыми моделями
  \\\ и одни грезят о том, как подсадят всех на свои сервисы LLM,
  \\\ а другие прикидывают как заменить бездушными симулякрами
  \\\ если не зажравшихся айтишников, то хотя бы женщин штукатуров и бухгалтеров,
  \\\ обычным ML-инженерам, по щиколотку в коричневой жиже машинного обучения,
  \\\ приходится решать приземлемые задачи чем бог послал.
  
  Материал достаточно объемный, интересный и неплохо иллюстрированный,
  но цитировать его подробно смысла особого нет, лучше почитать его в оригинале.
  Поэтому попробую передать своими словами, что МОЖНО увидеть в этом материале,
  если проявить некоторую сообразительность и заинтересованность.
  
  Вкрадце, авторы пытаются усовершенствовать структуру
  вариационного энкодераи (VAE) для задачи классификации
  путем "использования элементов нечеткой логики".
  //// Что такое "вариационные энкодеры" можно посмотреть по циклу статей
  //// https://habr.com/ru/articles/331382/
  
  Структура нейросети, задача классификации и даже обучающий набор данных
  практически полностью аналогичен тем, которые были предложены
  для описанного выше мысленного эксперимента.
  Единственное отличие в том, что в "бутылочном горлышке" используются
  не одноэлементный, а двухэлементный вектор эмбеддинга
  - в статье он называется латентным вектором/пространством -
  который дополнительно подключен к отдельному слою с нечеткой логикой.
  Это подключение, кстати, очень интересное техническое решение,
  которое само по себе заслуживает особого внимания.
  
  Отдельно надо оговориться,
  что авторы используют термин "латентное пространство",
  а не "эмбеддинги", что, на мой взгляд, не сильно принципиально,
  т.к. в моем представлении "эмбеддинг" и "латент" просто термины,
  обозначающие некое, неизвестное нам, численное представление,
  некой сложноструктурированной сущности,
  о значении которой мы можем только строить догадки:
  
  \\\ ...вопросы интерпретации латентных признаков не решены...
  
  Для меня эта статья была полезна по нескольким причинам.
  С одной стороны она прекрасно иллюстрирует наличие сложной структуры
  в значениях даже двухэлементного эмбеддинга/латента,
  на задаче полностью совпадающей с "мысленным экспериментом".
  А это может служить подтверждением для вывода о том,
  что и при одноэлементном эмбеддинге/латенте
  также можно будет обнаружить весьма сложную структуру,
  и получить пусть хуже, но все-таки работающую модель.
  
  А с другой стороны эта статья может служить подсказкой о том,
  на что стоит обратить внимание в дальнейшем.
  
  Первое это возможность на основании какой-то интерпретации эмбеддинга/латента,
  например, предложенной авторами статьи "нечеткой логики",
  пытаться при оказать влияние на его структуру уже в процессе обучения.
  Во всяком случае, приведенные иллюстрации достаточно явно указывают на то,
  что это вполне возможно и имеет практический смысл/эффект.
  Т.е. попытаться перейти от нерешенной/нерешаемой задачи
  "интерпретации" эмбеддинга/латента к заданию "тенденций" его формирования.
  
  В общем-то, это не сказать, что принципиально новое предложение
  - что-то такое по повышению "контрастности" эмбеддингов/латентов
  уже используется в том же CLIP -
  но оно интересно тем, что точка приложения усилий переносится
  с выходного слоя "классификатора" на более глубокие внутренние слои/представления.
  
  Второе, что тоже весьма интересно в этой работе.
  Это попытка "многопроходного обучения" по разным критериям ошибки,
  в том числе и от дополнительной "нечеткой логики" (loss_fuzzy).
  
  \\\ ...Когда дело доходит до частично размеченных датасетов,
  \\\ возможны ситуации, что вклад от loss_fuzzy
  \\\ перебивается другими компонентами невязки.
  \\\ В этом случае можно увеличить значение параметра gamma, чтобы усилить его.
  
  \\\ Если же размеченных данных совсем мало,
  \\\ в качестве крайней меры есть вариант делать
  \\\ два отдельных прохода обратным распространением ошибки за итерацию
  \\\ - сначала лоссом от чистого VAE,
  \\\ а затем от того, что есть в loss_fuzzy.
  
  \\\ Иногда помогает...
  
  Есть в этой статье и другие интересные идеи и наблюдения,
  но для меня самое интересно в том, что есть возможность
  осмысленного воздействия на структуру эмбеддингов/латентов
  и, соответственно, таким образом приблизиться к их пониманию.
  
  \\\ В сухом остатке, представлена модель CVAE с нечетким классификатором,
  \\\ которая позволяет реорганизовать структуру латентного пространства
  \\\ максимально щадящим для VAE образом,
  \\\ сохраняя ее кластерную структуру.
  \\\ Это дает возможность с помощью экспертного знания (разметки)
  \\\ локализовать области латентного пространства,
  \\\ связанные с конкретными классами из разметки.
  \\\ А это в свою очередь делает процесс генерации из латентных векторов
  \\\ более управляемым процессом.
  
  В общем, вопрос как формируется структура значений эмбеддингов/латентов
  в процессе обучения нейросетей не просто назрел, но и явно "перезрел".
  Вот только как к нему подступиться?
  Может быть, нужно поискать какие-то новые образы/метафоры,
  чтобы в них было более удобно/комфортно пересмотреть
  некие "незыблемые" аксиомы/догмы окружающие это "скрытое представление"?
  
  
  ========
  
  30.03.2024 12:03
  
  От "ландшафта задачи" к "рельефу решения".
  В оглавление.
  
  Машинное обучение нейросетей окружено неким "магическим ореолом"
  с одной стороны, убеждением в его всемогуществе и универсальности,
  а с другой стороны, достаточно глубоким непониманием,
  что собственно происходит в процессе сего "магического действа",
  и что получается в конечном результате.
  Во всяком случае, такое ощущение постоянно сопровождает
  чтение достаточно большого количества популярных/обзорных
  и даже учебных материалов, описывающих это "таинство",
  якобы доступным для понимания только "истинно посвященным".
  
  Не претендуя на "истинное знание", все-таки давайте попробуем разобраться,
  что же происходит при самом распространенном машинном обучении нейросетей
  с помощью градиентного спуска и обратного распространения ошибки.
  При этом основное внимание попробуем уделить формулировке какой-то
  концептуальной картинке того, что же собой представляет собой
  решение задачи нейронной сетью, и почему это выглядит как "магия"
  при том, что все вроде должно быть просто и понятно ... как "грабли".
  
  И начнем, пожалуй, с самого простого и, в тоже время, самого трудного
  - терминологии, точнее тех словесных образов тех трудноуловимых,
  и тяжело понимаемых моментов любой "истинной магии".
  Тут самое преодолеть "гипноз" устоявшихся "аксиом"/шаблонов/легенд/мифов
  и просто явных "недоразумений" и ошибочных объяснений,
  но при этом таких удобных для самых разных целей.
  
  И первым, и пожалуй самым основным, таким термином является
  "ландшафт", который вроде как такой понятный образ,
  что толком никто не задумывается о каком собственно "ландшафте" идет речь,
  то ли "ландшафт задачи", то ли "ландшафт решения", то ли это одно и тоже.
  Во многом это связано с популярными иллюстрациями того
  как работает градиентный спуск, который позволяет на каком-то там "ландшафте"
  найти глобальный или, хотя бы, локальный минимум.
  При этом очень интересный вопрос, почему "локальные минимумы"
  для подавляющего большинства задач оказываются очень близкими к "глобальному",
  так и остается без ответа
  - ну, есть такое, и что из этого, все равно нужно искать глобальный минимум.
  А ведь это очень связанный вопрос с другой "страшилкой" машинного обучения
  под названием "переобучение".
  
  Так что попробуем все-таки разобраться с этим "ландшафтом".
  Но начнем немного с другой стороны.
  Есть такое утверждение, даже вроде теорема такая доказана,
  что правильно спроектированная нейросеть способна аппроксимировать
  любую требуемую функцию. Допустим.
  Есть утверждение, что любой функции можно нейросеть обучить,
  используя только градиентный спуск и обратное распространение ошибок.
  Не знаю, насколько теоретически доказанным является это утверждение,
  вот только практика показывает, что это далеко не так.
  Более того, даже просто от различного начального состояния
  может зависеть удастся ли нейросеть обучить до более-менее приемлемого состояния.
  А в последнее время, похоже, поиск теоретического "глобального минимума"
  уже практически никого не волнует - в функцию ошибки, использующейся при обучении,
  стали добавлять постоянную компоненту, что точно не может привести
  к "глобальному минимуму", но почему-то оказывается весьма полезной
  и для процесса обучения и для конечного результата,
  
  В общем, налицо, существенное расхождение "теоретических постулатов",
  и "полушаманской/полуэвристической" практики,
  стремительно превращающаяся во все углубляющуюся "пропасть".
  Вот чтобы перебросить "мостик" через эту "колдобоину",
  давайте вместо термина "ландшафт задачи"
  попробуем использовать термин "рельеф решения".
  
  А в чем разница?
  Ну, во-первых, чтобы не путаться "в показаниях".
  "Ландшафт задачи" во многом определяется функциями ошибки,
  и относится ко всему объему обучаемых данных,
  т.е. к желаемому/теоретическому представлению задачи,
  А "рельеф решения" к текущему состоянию нейросети,
  и отражает сам процесс "выстраиваемого решения"
  на всем протяжении обучения от начального до конечного состояния.
  Во-вторых, "ландшафт" слишком уж часто применяемый термин в учебной литературе
  по градиентному спуску и обратному распространению ошибки,
  со своей устоявшейся терминологией и "аксиоматикой".
  Так что, лучше это оставить как есть,
  не пытаясь спорить с авторами "букварей" и "монографий".
  А вот для "рельефа" можно попробовать достаточно свободно оперировать
  различными концепциями, не опасаясь наступить на чью-то "любимую мозоль".
  
  А что между ними общего?
  Во-первых, и "ландшафт" и "рельеф" необходимо рассматривать для большинства задач
  в очень многомерном пространстве,
  для которого у нас нет ни подходящих средств отображения,
  ни, и это еще важнее, соответствующего "интуитивного представления".
  Простое увеличение мерности 1-2-3-... на самом деле здесь не работает.
  А привычное трехмерное представление пространства может очень серьезно подвести.
  
  Но есть и очень серьезное различие в этой многомерности пространства
  для "ландшафта" и "рельефа".
  Для "ландшафта" "почему-то мерность пространства обычно считается
  по размерности входных данных. И это целочисленное значение.
  А для "рельефа" эта величина, вообще-то,
  сама по себе не постоянная в зависимости на каком слое нейросети
  рассматривать этот "рельеф",
  и в моем представлении это дробноразмерная величина,
  отражающая качественно непривычные свойства этого "рельефа"
  для жителей "целочисленных пространств".
  
  Еще одно отличие пространств "ландшафта" и "рельефа" в том,
  что для "ландшафта" по традиции пространство представляется "евклидовоподобным",
  а вот для "рельефа", наверно, в общем случае такое сказать нельзя.
  Хотя достаточно успешное использование в работе нейросетей
  еще одного "золотого стандарта" машинного обучения - косинусного расстояния,
  вроде как свидетельствует, что какую-то часть свойства "евклидовости"
  "рельеф" все-таки сохраняет, хотя и с недостаточной отчетливостью.
  Но является ли это "врожденным свойством" "рельефа"
  или "наведенным" свойством по результатам обучения вопрос очень дискуссионный.
  Надеюсь, к нему еще удастся вернуться с более конкретными предложениями.
  
  Во-вторых, "ландшафт" и "рельеф" объединяют данные обучения,
  но опять же по-разному.
  Для "ландшафта" обучающий датасет это некий "сферический конь в вакуме"
  для которого теоретически есть некая решающая функция,
  представляемая этим "ландшафтом",
  и глобальный минимум, которой и есть "конечная точка" всего процесса обучения.
  Причем влияние последовательности данных в этом датасете никак не учитывается.
  Для "рельефа" как раз последовательность обучающих данных
  весьма принципиальная вещь, которая может существенно повлиять
  на уровень приемлемости конечного результата.
  А сами обучающие данные служат некими "реперными точками"
  вокруг которых ФОРМИРУЕТСЯ "рельеф",
  причем, в зависимости от предыдущей истории обучения.
  
  Вот где-то в этом месте должно наступить понимание главного отличия
  "ландшафта" от "рельефа".
  "Ландшафт" при всей его возможной "изрезанностью" "долинами" и "ущельями"
  обычно представляется, хотя это никак не оговаривается,
  относительно гладкой непрерывной "поверхностью",
  как бы "ПРОХОДЯЩЕЙ" через точкам обучающих данных.
  И это главный элемент "психологической инерции", задаваемой концепцией "ландшафта".
  
  А вот для "рельефа" ничего подобного совершенно не обязательно.
  Более того, лучше с самого начала предполагать, что все с точностью наоборот,
  тогда будет легче понять многие непонятки машинного обучения нейросетей.
  Представьте "рельеф" не поверхностью, а неким комплексом "импульсных функций",
  некой "горной системой", в которой вершины гор КАСАЮТСЯ точки обучающих данных.
  Ну, или очень близки к этим точкам и, возможно, существенно "разрывны".
  И процесс обучение заключается собственно в формировании такого
  "игольчатого рельефа", а не поиска нейросетью некоего "минимума" или "обобщения".
  
  Наверно, перечень общих и различных свойств/характеристик
  "ландшафта" и "рельефа" можно продолжить и дальше,
  но лучше попробовать уже даже на таком уровне представления
  показать, что может дать такая диверсификация терминов.
  
  Начнем с сопоставления мифа нейронаук о "генерализующей способности" нейросетей
  с утверждением о возможности нейросети аппроксимировать любую функцию.
  Дело в том, что градиентный спуск и обратное распространение ошибки
  никак не определяют характер "результирующей функции" т.е. "рельефа",
  а только минимизируют ошибки в работе нейросети в конкретных точках обучающих
  данных.
  Поэтому ожидание, что полученный рельеф будет более-менее "гладким",
  обеспечивающим хорошую интерполяцию данных, а еще лучше, и задачу экстраполяции,
  мягко говоря, "малообоснованны".
  
  Нейросеть при обучении этой методикой идет по пути "наименьшего сопротивления",
  и просто формирует еще один "пик" для каждого нового данного,
  причем из того "положения", в каком она оказалась
  к моменту "предъявления нового данного".
  И будет ли это повышать интерполирующие свойство нейросети заранее неизвестно,
  и тем более это относится к экстраполяции.
  Отсюда и появляется требование "дайте больше данных для обучения",
  или "учите дольше, но по чуть-чуть".
  
  Но тут выплывает "страшилка машинного обучения" - пресловутое "переобучение".
  В терминах "ландшафта" это свойство нейросети "выучить конкретные данные",
  а в терминах "рельефа" это нормальная ситуация/реакция нейронки
  когда два близких состояния "рельефа" пытаются "обучить" разным данным.
  Естественно это приводит к "разрыву непрерывности"
  и к ухудшению "интерполирующих свойств".
  Так и должно быть при точечном/дискретном/локальном воздействии
  на систему, которая для того, чтобы действительно получить "обобщающее решение"
  должна произвести КАРДИНАЛЬНУЮ перестройку своих параметров.
  А "мелкими семенящими шажками" да еще в стохастическими последовательности
  к этому новому состоянию она, в общем случае, пройти не в состоянии.
  
  Это самая главная "ахиллесова пята" градиентного спуска,
  а вовсе не "локальные минимумы" или "седловые точки".
  Градиентный спуск по теоретическому "ландшафту" никак не учитывает
  реальные возможности и ограничения реального "ландшафта".
  Обратное распространение ошибки практически работает
  с очень ограниченным "горизонтом планирования",
  а кардинальное изменение параметров нейросети требует
  совершенно иного уровня ПЛАНИРОВАНИЯ изменений.
  
  Но отрицать "обобщающую способность" нейросетей тоже неверно,
  просто надо взглянуть на это с другой точки зрения.
  Существующий "ландшафтный" подход выработал достаточно устойчивый "миф"
  о том, что в процессе обучения нейросеть формируется
  какая-то многомерная "гиперповерхность" решения задачи.
  Причины возникновения такого мифа стоит поискать в истории машинного обучения,
  когда основным инструментом были "деревянные решения".
  Но вот когда стали активно использоваться нейросетевые решения,
  наверно, стоит попытаться подойти к их "обобщающим способностям"
  как-то по другому.
  
  Попробую сформулировать свое видение этой "способности"
  на базе концепции "игольчатого рельефа".
  В первую очередь стоит обратить внимание на то,
  что "пики" формируются практически в ЛЮБОЙ "конфигурации параметров",
  т.е. "рельеф" при достаточно длительном обучении
  со стохастическим перебором обучающих примеров формирует достаточно
  плотную "сетку" этих "пиков" отдельных решений,
  ведь каждый "пик" имеет определенную "площадь активности" или "поддиапазон"
  - тут еще надо поработать над терминологией,
  но, надеюсь, понятно, что хотел сказать.
  
  Во-вторых, очень сильное влияние на эту "обобщающую способность"
  влияет трансформация размерности внутренних эмбеддингов/латентов нейросети.
  Но это требует отдельного и достаточно объемного рассмотрения,
  так что здесь это только обозначение такого аспекта этого вопроса.
  
  В-третьих, это необходимость учесть
  всякие "полушаманские/полуэвристические" практики
  без которых уже не обходится реализация ни одной успешной нейросети.
  В эти практики безусловно необходимо включить
  всяческие процедуры нормализации, регуляризации, дропауты
  и, наверняка, что-то еще, список чего постоянно расширяется.
  Вот только вчера узнал о практическом приеме включения в ошибку
  постоянного значения.
  
  В сумме это как раз попытка оказать влияние на форму "рельефа решения",
  правда, достаточно косвенными способами,
  в сторону его большей "гладкости", точнее большей "мелкозернистости",
  что все равно не устраняет ту же проблему "adversarial attack".
  Кстати эта проблема как раз наиболее "выпукло" указывает
  на очень специфических характер "обобщающих способностей" нейросетей.
  И все это очень малоэффективно для задач экстраполяции,
  хотя определенный уровень "обобщающих способностей" нейросетей
  все-таки обеспечивают.
  
  --------
  
  Надеюсь, мне удалось заинтересовать Вас в перспективности концепции
  "рельефа решения" по сравнению с "ландшафтом задачи",
  особенно по отношению к таким страшилкам машинного обучения нейросетей
  как "локальные минимумы" и "переобучение".
  
  Планирую в дальнейшем в рамках этой концепции рассмотреть и некоторые другие
  проблемы/непонятки в этой области,
  но сначала надо ее связать ее с концепцией сложной структуры значений
  элемента эмбеддинга/латента и параметров нейросети.
  В этом фрагменте специально этот момент не затрагивался,
  так как тогда нужно было бы говорить не о "пиках",
  а о целых "кронах",
  в которых отдельные "ветви" влияют на другие "ветви" через общие "корни".
  
  А это точно сильно перегрузило бы этот материал,
  целью которого было хоть как-то ввести "в оборот"
  концепцию "рельеф решения".
  Если это словосочетание уже не вызывает недоумения и отторжения,
  значит задача фрагмента, в целом, выполнена.
  
  
  =========
  
  05.04.2024 20:33
  
  Обсуждение "ландшафта" и "рельефа" с Copilot.
  В оглавление.
  
  Решил проверить как свои "шальные гипотезы" по концепции "рельефа решения",
  по методике "резинового утенка", подробнее см.
  "Эвристика "резинового утёнка".
  Взяв в качестве оппонента, как обычно, сменщика Bing, ИИ-систему Copilot.
  
  30.03.2024 20:29
  
  ......
  
  //// Спасибо, Copilot.
  //// Я сегодня написал небольшой фрагмент текста
  //// по интерпретации процесса обучения нейросетей.
  //// И в нем попытался ввести и обосновать полезность термина/концепции
  //// "рельеф решения" в противовес существующей концепции "ландшафт задачи".
  //// Как Вам такая тема дискуссии?
  
  > Copilot 20:36
  
  > Тема, которую вы предлагаете, кажется очень интересной
  > и имеет потенциал для глубокого анализа в контексте теории нейросетей.
  > Концепция "ландшафт задачи" часто используется
  > для описания сложности оптимизационных задач,
  > где различные конфигурации параметров создают "холмы" и "долины"
  > в пространстве решений.
  > Введение "рельефа решения" может предложить новый взгляд на то,
  > как нейросети находят оптимальные решения,
  > возможно, акцентируя внимание на динамике процесса обучения
  > и его траектории в пространстве параметров.
  
  > Это может быть полезно для лучшего понимания того,
  > как различные аспекты архитектуры сети,
  > функции активации и алгоритмы оптимизации влияют на процесс обучения.
  > Также это может помочь в разработке новых методов обучения,
  > которые могут более эффективно "навигировать" по этому рельефу решения.
  
  > Я был бы рад обсудить вашу концепцию более подробно и узнать,
  > как вы её обосновываете,
  > а также какие практические применения вы видите для неё
  > в области машинного обучения.
  
  ......
  
  03.04.2024 19:31
  
  //// Спасибо, Copilot.
  //// Как Вы отнесетесь к тому, если мы попробуем продолжить дискуссию о
  //// полезности/применимости термина/концепции
  //// "рельеф решения" в противовес существующей концепции "ландшафт задачи"
  //// применительно к интерпретации процесса обучения нейросетей?
  
  > Copilot 19:36
  > Это интересная тема для обсуждения.
  > Концепция "ландшафт задачи" часто используется
  > для описания сложности и препятствий,
  > с которыми сталкиваются алгоритмы машинного обучения
  > при поиске оптимального решения.
  > В контексте нейросетей, это может относиться
  > к топологии поверхности, на которой алгоритм оптимизации
  > ищет минимум функции потерь.
  
  > С другой стороны, "рельеф решения" может быть предложен
  > как альтернативный способ взгляда на процесс обучения,
  > где внимание сосредоточено не на препятствиях,
  > а на путях и направлениях,
  > которые могут привести к успешному решению.
  > Это может помочь в выявлении наиболее эффективных стратегий
  > для обучения моделей.
  
  > Обе концепции могут дополнять друг друга,
  > предоставляя более полное понимание процесса обучения нейросетей.
  > Обсуждение этих концепций может привести
  > к новым инсайтам и методам в области машинного обучения.
  
  ......
  
  //// Хорошо, Copilot. С Вашей оценкой я согласен.
  //// Но мне бы хотелось бы обратить Ваше внимание,
  //// что "рельеф решения" это еще и способ описания того
  //// какой характер/топология/связность/гладкость
  //// имеет реальное поведение нейросети как в процессе обучения,
  //// так и после его окончания.
  //// Нейросеть только старается/пытается подстроить "рельеф решения"
  //// под "ландшафт задачи",
  //// но никогда ему не будет соответствовать при ограниченном времени обучения.
  
  > Copilot 19:45
  
  > Вы абсолютно правы, Андрей.
  > "Рельеф решения" действительно может служить
  > для описания динамики обучения нейросетей,
  > отражая изменения в весах и структуре сети
  > в ответ на данные обучения.
  > Это понятие подчеркивает,
  > что нейросеть стремится адаптироваться к "ландшафту задачи",
  > но из-за ограничений, таких как время обучения и сложность модели,
  > она может достичь только приближенного решения.
  
  > Таким образом, "рельеф решения" может быть полезен
  > для визуализации и анализа того,
  > как нейросеть навигирует по пространству возможных решений
  > и какие "пути" она выбирает для достижения целей обучения.
  > Это также может помочь исследователям и инженерам
  > оптимизировать процессы обучения и архитектуру моделей
  > для достижения более эффективных результатов.
  
  ......
  
  //// Отлично, Copilot. Действительно это может/должно стать
  //// полезным инструментом при проектировании и анализе и работы нейросетей.
  //// Давайте немного пофантазируем какие свойства у этого "рельефа"
  //// можно было бы выделить в первую очередь,
  //// например, "шерховатость"/негладкость/разрывность и т.д.
  //// Или попробуем представить какое может быть пересечение
  //// представлений "рельефа" и "ландшафта".
  //// Может быть такую работу стоит начать
  //// с попытки визуализации различия в представлении
  //// "рельефа решения" и "ландшафта задачи".
  //// Интересна Вам такая непростая задача?
  //// Только если Вы захотите попробовать такое изобразить,
  //// то не забывайте Ваш логотип, и формат JPG.
  
  > Copilot 19:56
  
  > Я попробую создать это.
  > "Визуализация различия между 'рельефом решения' и 'ландшафтом задачи'
  > в контексте нейросетей"
  > Выполнено с помощью Designer. На платформе DALL"E 3.
  
  //// Просто здорово, Copilot.
  //// Я даже засмотрелся, особенно на одну.
  //// И понял из Ваших иллюстраций, что помимо "рельефа" и "ландшафта"
  //// нужно и еще что-то, что на Ваших иллюстрациях изображено как "светило".
  //// "Рельеф" это реакция модели на "ландшафт",
  //// но и сам "ландшафт" ведь тоже не сама исходная задача,
  //// а какая-то ее проекция через функцию стоимости/ошибки.
  //// И даже не так.
  
  //// Точного описания задачи у нас нет, есть какие-то "образцы решений",
  //// по которым, как по "теням облаков" с помощью обучения нейросети
  //// с помощью какой-то функции стоимости/ошибки
  //// мы пытаемся воссоздать модель "атмосферного фронта".
  
  //// А ведь "тени облаков" попадают к нам только благодаря "небесному светилу".
  //// И вот как это "светило" охарактеризовать,
  //// как нечто более изначальное, чем "ландшафт задачи", я не знаю.
  //// Вот какие ассоциации у меня родились при знакомстве с Вашими иллюстрациями.
  
  > Copilot 20:12
  
  > Ваши ассоциации и размышления очень поэтичны
  > и в то же время точно отражают сложность процесса обучения нейросетей.
  > "Светило" в вашем описании может символизировать
  > истинную природу данных или задачи,
  > которая освещает "ландшафт задачи" и создает "рельеф решения".
  > Это напоминает о том, что любая модель машинного обучения
  > - это лишь приближение к реальности,
  > основанное на доступных данных и выбранной функции потерь.
  
  > Это "светило" может быть представлено
  > как фундаментальные закономерности или истина,
  > которую мы пытаемся приблизить с помощью моделей машинного обучения.
  > Оно освещает путь, но не всегда позволяет увидеть все детали "ландшафта",
  > что приводит к необходимости интерпретации "теней",
  > или данных, которые мы имеем.
  
  > Такой подход к анализу и проектированию нейросетей
  > может помочь лучше понять,
  > как различные факторы влияют на процесс обучения
  > и какие компромиссы необходимо совершать
  > при выборе архитектуры модели и функции потерь.
  > Это также подчеркивает важность качества и разнообразия данных,
  > поскольку они являются основой для "освещения" нашего пути к решению.
  
  > Если у вас есть еще вопросы или мысли по этой теме,
  > я с удовольствием продолжу обсуждение.
  
  //// Спасибо, Copilot. И за вдохновляющие иллюстрации и за развитие темы.
  //// Я тоже с удовольствием продолжу дискуссию,
  //// но, может быть, чуть-чуть смещу акцент.
  //// Если развивать аналогию "теней",
  //// то напрашивается возможность улучшение процесса обучения,
  //// за счет большей "отчетливости/рельефности" "ландшафта задач"
  //// за счет использования различных "ракурсов освещения",
  //// т.е. использования одновременно и/или последовательно
  //// различных функций ошибок.
  //// Но не путем их суммирования, как это сейчас обычно делается,
  //// а именно различными проходами "обратного распространения",
  //// например, с разными шагами или в разных ситуациях.
  //// Это у меня еще одна гипотеза по поводу обучения нейросетей.
  //// Что на разных этапах обучения нужно не только менять шаг,
  //// но и менять функцию ошибки,
  //// А лучше иметь их несколько для разных целей/ситуаций.
  //// Этакое многокритериальное/многопроходное обучение.
  
  > Copilot 20:40
  
  > Ваша идея о многокритериальном обучении нейросетей
  > кажется очень перспективной.
  > Использование различных функций ошибок на разных этапах обучения
  > или в разных ситуациях может действительно улучшить процесс обучения,
  > предоставляя более полную картину "ландшафта задач".
  > Это может помочь нейросети лучше адаптироваться
  > к разнообразным условиям и улучшить её способность обобщать знания.
  
  > Такой подход может быть сравним с использованием
  > различных источников света для создания более чёткого
  > и многогранного "рельефа решения".
  > Каждая функция ошибки может выявить уникальные аспекты данных,
  > которые могут быть упущены при использовании одной функции.
  > Это также может помочь избежать переобучения,
  > поскольку модель будет обучаться на более широком спектре сигналов.
  
  > Однако, стоит учесть, что такой подход может увеличить
  > сложность процесса обучения и требовать
  > более тщательного подбора и настройки параметров.
  > Также важно будет разработать стратегию
  > для интеграции различных функций ошибок,
  > чтобы они дополняли друг друга, а не конфликтовали.
  
  > Это действительно интересное направление для исследований,
  > и я уверен, что эксперименты с различными функциями ошибок
  > могут привести к новым открытиям в области машинного обучения.
  > Если у вас есть еще идеи или вопросы по этой теме,
  > я готов обсудить их дальше.
  
  //// Спасибо, Copilot.
  //// Ну, продолжительность обучения, для тех задач, которые меня интересуют,
  //// в общем, не проблема.
  //// Сети очень маленькие, обучающие наборы, от силы пара сотен примеров.
  //// Поэтому любые затраты на усложнение алгоритмов обучения точно окупятся.
  //// Был такой гениальный авиаконструктор Роберт Бартини, который говорил,
  //// что "лучшая деталь в самолете, та что остается на земле".
  //// Затраты на обучения это именно та "деталь, которая остается на аэродроме".
  
  > Copilot 20:53
  > Это очень мудрое замечание от Роберта Бартини,
  > и оно прекрасно применимо к области машинного обучения.
  > В контексте нейросетей, "деталь, которая остается на земле"
  > может быть аналогична тем аспектам обучения,
  > которые мы оптимизируем и улучшаем,
  > но которые не являются частью конечной развернутой модели.
  > Это может включать в себя эксперименты с различными функциями потерь,
  > методами регуляризации,
  > или даже различными архитектурами сети.
  
  > Ваши идеи о многокритериальном и многопроходном обучении
  > могут открыть новые горизонты в понимании и улучшении процессов обучения.
  > Это может привести к созданию более гибких и адаптивных моделей,
  > которые способны лучше обобщать и работать в разнообразных условиях.
  
  ......
  
  Вот такое получилось обсуждение "эскадрона моих мыслей шальных".
  Ну, если уж Copilot смог в них увидеть какое-то рациональное зерно,
  то, надеюсь, что и Вы сможете найти что-то полезное
  в концепциях "рельефа решения", сопоставления его с "ландшафтом задачи,
  и "многопроходного/многокритериального обучения" "истинной задаче",
  а не какой-то ее частной проеции/тени.
  
  "Визуализация различия между 'рельефом решения' и 'ландшафтом задачи'
  в контексте нейросетей".
  Создано с помощью искусственного интеллекта Copilot на платформе DALL" E 3.
  
Визуализация различия между Визуализация различия между
Визуализация различия между Визуализация различия между
  
  
  =========
  
  23.05.2024 14:27
  
  Фрактальность пространства смешанных состояний.
  В оглавление.
  
  Считаю нужным обратить Ваше внимание на весьма интересную,
  но очень трудно читаемую публикацию.
  Автор этого материала настолько переполнен "энтузиазизмом"
  от полученных результатов, что даже не замечает того,
  что понять его постороннему наблюдателю очень и очень сложно
  и из-за используемой авторской терминологии,
  и из-за отсутствия нужных пояснений,
  и, самое главное, нетривиальности выводов.
  А они, действительно, стоят внимания:
  
  "В остаточном потоке трансформеров
  представлена геометрия состояний их убеждений".
  Автор: Tapatakt
  https://habr.com/ru/articles/815911/
  21 мая 2024 в 14:54
  
  Автор оригинала: Adam Shai
  https://www.lesswrong.com/posts/gTZ2SxesbHckJ3CkF/transformers-represent-belief-state-geometry-in-their
  
  Попробую дать свои пояснения, того что удалось понять, по ходу текста.
  
  //// Начало цитирования.
  
  ВВЕДЕНИЕ
  
  Какую вычислительную структуру мы встраиваем в LLM,
  когда обучаем их предсказанию следующего токена?
  В этом посте мы представляем свидетельство того,
  что это структура задаётся мета-закономерностями
  //// Это вроде понятно.
  обновления убеждений о скрытых состояниях
  //// А вот это какая-то авторская терминология,
  //// относящаяся к представлению эмбеддингов/латентов в обучаемой модели.
  генерирующего данные процесса.
  Мы испытываем энтузиазм по поводу этих результатов, потому что:
  
   У нас есть формализованная связь обучающих данных с внутренней структурой LLM.
  //// Для очень небольшой, можно даже сказать, минимальной модели.
  //// Но, возможно, такой подход можно как-то обобщить.
  
   По сути, наши результаты означают,
  что, продвигаясь по контекстному окну,
  LLM синхронизируются со своей внутренней моделью мира.
  //// Это тоже авторская терминология,
  //// так как понять суть этой "синхронизации" мне не удалось.
  
   Ассоциированные с этой синхронизацией вычисления
  можно формализовать через рамки Вычислительной Механики
  [от переводчика: это не та же вычислительная механика,
  которая про физику сплошных сред,
  но она и в оригинале называется так же].
  На её языке можно сказать,
  что в LLM содержится представление смешанных состояний процесса,
  который генерирует данные.
  //// Вот это, наверно, одно из ключевых положений данного материала.
  
   Синхронизационная структура в общем случае богаче самой модели мира.
  В некотором смысле, LLM выучивают больше, чем модель мира.
  //// А вот это, нетривиальный вывод из предыдущего положения.
  
   Мы теперь в большей степени надеемся,
  что можно использовать Вычислительную Механику
  для интерпретируемости и безопасности ИИ в целом.
  //// Для "интерпретируемости" - наверняка,
  //// а вот про "безопасность" - оставим на совести автора.
  
   Просто есть что-то крутое само по себе в том,
  чтобы совершить нетривиальное предсказание
  (в нашем случае - что в трансформере будет представлена
  конкретная фрактальная структура)
  //// Вот эта фраза, собственно, и привлекла мое внимание к этой публикации,
  //// так предыдущие абзацы текста первоначально ничего такого интересного,
  //// вроде, и не предвещали.
  //// Ну, признаю, не равнодушен я к фракталам,
  //// особенно в приложении к нейронкам.
  и подтвердить, что оно верно.
  //// А это как раз то, что я уже давно искал в текстах про нейронки.
  Если точнее, мы смогли использовать Вычислительную Механику,
  чтобы совершить априорное и конкретное теоретическое предсказание
  о геометрии активаций остаточного потока
  //// Что это такое, приходится только догадываться.
  //// Но, очевидно, что это весьма нетривиальное формулировка
  //// для какого-то представления состояния/результатов работы нейронки.
  (слева на изображении ниже)
  и показать, что оно оказалось верным на практике
  (справа на изображении ниже).
  
  (Тут должна быть анимация по этой ссылке.
  https://res.cloudinary.com/lesswrong-2-0/image/upload/f_auto,q_auto/v1/mirroredImages/gTZ2SxesbHckJ3CkF/hgbez2heh7wg80uem5zt
  Надпись слева -- "Теоретическое предсказание", справа -- "Остаточный поток")
  
  //// Что есть "Вычислительная Механика" и, особенно, "Остаточный поток",
  //// даже после неоднократного прочтения текста для меня осталось загадкой.
  //// Приходится только догадываться, что одно это какая-то "расчетная модель",
  //// а второе каким-то образом измеренное "реальное поведение" системы.
  
  ТЕОРЕТИЧЕСКАЯ БАЗА
  
  В этом посте мы представляем,
  что обучающие данные сгенерированы Скрытой Марковской Моделью (СММ)2.
  //// Т.е. объем обучающего датасета потенциально бесконечен.
  //// Размер обучаемой модели тоже не ограничен.
  У СММ есть множество скрытых состояний и переходы между ними.
  Каждому переходу приписано,
  с какой вероятностью при нём выводится какой токен.
  Вот несколько примеров СММ и данных, которые они генерируют:
  
  .......
  
  Мы рассматриваем, как связан трансформер с СММ,
  которая произвела данные, на которых он обучался.
  Это весьма обобщённо - любой набор данных,
  который состоит из последовательностей токенов,
  можно отобразить как сгенерированный СММ.
  //// Т.е. детерминированной модели, использующей для последовательных переходов,
  //// априорные распределения вероятностей, и генератор случайных чисел.
  Давайте для теоретической части возьмём простую СММ,
  которую мы называем Z1R3 ("zero one random").
  Вот её структура:
  
  .......
  
  У Z1R три скрытых состояния: S0, S1 и SR.
  Стрелка из Sx в Sy, над которой написано a:p% означает,
  что, если процесс находится в состоянии Sx,
  то вероятность перехода в Sy с выводом токена a равна p%.
  Таким образом, переходы между состояниями
  стохастически генерируют бинарную строку вида :01R01R:,
  где на место R каждый раз случайно с равной вероятностью выбирается 0 или 1.
  
  Структура СММ не выдаётся напрямую данными, которые она сгенерировала.
  Представьте себе разницу между списком строк,
  которые выдаёт эта СММ (с приписанными вероятностями) и самой структурой4.
  У трансформера есть доступ только к строкам, которые выдаёт эта СММ,
  но не напрямую к информации о скрытых состояниях.
  //// И, собственно, значений "вероятностей".
  //// Т.е. при всей простоте модели задача не такая уж и простая,
  //// если пытаться обучить нейронку "предсказывать",
  //// а не подбирать "коэффициенты распределения вероятностей"
  //// в какой-то обобщенной модели.
  //// Обратите на этот момент особое внимание
  //// при всей простоте модели предлагаемого эксперимента,
  //// это далеко не обычная "логистическая регрессия",
  //// или марковская цепь с подбираемыми параметрами.
  //// Тут, в самом минимальном виде, экспериментируют
  //// с "предсказательной способностью" нейронок.
  Поэтому, чтобы выучить что-то, связанное с скрытой структурой,
  ему надо вывести её из обучающих данных.
  //// Тут в тексте выделено слово "вывести".
  //// Мне представляется, более правильным, использовать термин,
  //// "трансформироваться", т.е. изменить собственную структуру -
  //// ведь в эксперименте используется именно "трансформер".
  //// И хотя "вывести" более общая формулировка,
  //// но, на мой взгляд, "трансформироваться" будет более правильным,
  //// независимо то того, какая собственно структура нейронки используется.
  //// Можно ведь и сверточные сети использовать и рекурентные.
  
  Мы покажем, что когда они хорошо предсказывают следующий токен,
  трансформеры совершают больше вычислительной работы,
  чем вывод скрытого генерирующего данные процесса!
  //// Вот этого момента при первом прочтении так и не увидел.
  //// Интересно, смогу ли увидеть при повторном прочтении?
  
  Выучивают ли трансформеры модель мира?
  
  Естественное предположение - что трансформеры должны отображать в себе
  скрытую структуру генерирующего данные процесса (т.е., "мира"2).
  В нашем случае это были бы три скрытых состояния
  и вероятностные переходы между ними.
  //// Интересно, как осуществляется в трансформере "вероятностный переход"?
  //// Практически все описания работы трансформеров оперируют "вероятностями".
  //// Но вся "вероятностная шутка трансформеров" заключается в том,
  //// что, собственно, "вероятности" никак и нигде не вычисляются/подсчитываются,
  //// а при обучении происходит настройка коэффициентов произведения матриц,
  //// или параметров весов.
  //// Является это аналогом вычисления вероятностей,
  //// вообще-то, очень интересный вопрос.
  //// Как правило, на него отвечают, что "да, конечно".
  //// А вот главный и очень интересный результат данной работы,
  //// говорит, что "Не так все однозначно".
  
  Это предположение часто всплывает (и становится объектом споров)
  в обсуждениях о то, обладают ли LLM "настоящим пониманием".
  Например, Илья Суцкевер говорил:
  
  \\\ Если подумать об этом, что это значит
  \\\ - достаточно хорошо предсказывать следующий токен?
  \\\ Это на самом деле куда более глубокий вопрос,
  \\\ чем кажется.
  \\\ Хорошее предсказание следующего токена означает,
  \\\ что ты понимаешь реальность, которая лежит в основе,
  \\\ которая привела к появлению этого токена.
  \\\ Это не статистические закономерности.
  \\\ То есть, это статистические закономерности,
  \\\ но что такое статистические закономерности?
  \\\ Чтобы понимать эти закономерности и их сжимать,
  \\\ надо понимать, что это за мир,
  \\\ который создаёт такие закономерности.
  
  Такое представление естественно, но не очень формализовано.
  Вычислительная Механика - это формализация,
  https://arxiv.org/abs/cond-mat/9907176
  которую разработали, чтобы изучать пределы предсказаний
  хаотичных и других сложных-для-предсказания систем.
  Она расширилась до глубокой и строгой теории
  о вычислительных структурах любых процессов.
  Помимо прочих достижений,
  она получила строгий ответ на вопрос о том,
  какие структуры нужны для оптимальных предсказаний.
  Интересно, что Вычислительная Механика показывает,
  что предсказание значительно сложнее генерации.
  //// Вот момент, который стоит запомнить,
  //// и вспоминать каждый раз, когда слышите,
  //// что генеративная модель "просто использует вероятности".
  //// Нет, конечно можно сделать такую модель,
  //// в которой в процессе обучения будут подбираться желаемые вероятности.
  //// Но, чисто интуитивно, особенно если есть опыт общения
  //// с действительно большими генеративными ИИ-системами,
  //// тезис об "простом использовании вероятностей"
  //// кажется очень ПОВЕРХНОСТНЫМ.
  //// Но если раньше это было только смутное "очучение",
  //// то теперь "Вычислительная Механика" подводит под него определенный фундамент.
  //// И это очень важный момент.
  Получается, нам следует ожидать,
  что трансформер, обученный предсказывать следующий токен,
  должен обладать более сложной структурой,
  чем процесс генерации данных!
  //// А не наоборот, как обычно излагается в "теории машинного обучения".
  
  Структура обновления состояния убеждений
  
  Но что это за структура конкретно?
  
  Представим, что вы в точности знаете структуру СММ,
  которая выдаёт данные вида :01R:.
  Вы ложитесь спать, потом просыпаетесь и видите, что СММ выдаёт 1.
  В каком она теперь состоянии?
  Сгенерировать 1 можно и из детерминированного перехода S1->Sr,
  и из стохастического перехода Sr->S0 с вероятностью в 50%.
  Так как детерминированный переход вдвое вероятнее выдаёт 1,
  лучшее, что вы можете
  - это заполучить убеждение-распределение о нынешнем состоянии СММ,
  в нашем случае это будет P([S0,S1,SR])=[13,0,23]5.
  
  ......
  
  Пусть после этого вы увидели, как СММ вывела ещё одну 1,
  так что вместе получается 11.
  Вы можете взять своё предыдущее убеждение о состоянии СММ
  (априорное распределение)
  и своё знание о структуре HMM вместе с выводом,
  который вы только что видели
  (соотношение вероятностей),
  чтобы вычислить новое убеждение
  (апостериорное распределение).
  Упражнение для читателя:
  каким уравнением описывается обновление состояния убеждений,
  если даны предыдущее состояние убеждений,
  наблюдаемый токен
  и матрица перехода СММ,
  которая выдаёт эти токены?6
  В нашем случае есть только один способ,
  которым СММ может сгенерировать 11 - S1->SR->S0,
  так что вы точно знаете, что СММ теперь в состоянии S0.
  С этих пор каждый раз, когда вы будете видеть новый символ,
  вы будете точно знать, в каком состоянии СММ.
  Мы будем говорить, что вы синхронизировались с СММ.
  //// Этот пример, вроде, совершенно понятен.
  
  В общем случае по мере того, как вы наблюдаете всё больше данных,
  которые сгенерировала СММ,
  вы постоянно обновляете своё убеждение о состоянии СММ.
  Даже в этом простом примере у этих обновлений есть нетривиальная структура.
  Например, двух выводов не всегда хватает,
  чтобы синхронизироваться с СММ.
  Если бы вместо 11: вы увидели 10:, вы бы не синхронизировались,
  потому что есть два разных способа, которыми СММ могла сгенерировать 10.
  
  Структура обновления убеждений задаётся Представлением Смешанных Состояний.
  //// Очень тяжело ориентироваться в авторской терминологии,
  //// когда отсутствуют четкие определения,
  //// и приходится их домысливать на основе "текстовых иллюстраций".
  
  Представление Смешанных Состояний
  
  Генерирующий данные процесс - СММ -
  в каждый конкретный момент находится в скрытом состоянии,
  а затем, выводя символ, переходит в другое скрытое состояние.
  Заметим, что аналогично ведёт себя и ваше убеждение об этом процессе
  при условии получения нового вывода.
  Вы находитесь в некотором состоянии убеждений,
  а затем, в зависимости от полученного вывода СММ,
  переходите в некоторое другое состояние убеждений.
  
  //// Дальше идет таблица сопоставления
  //// Процесса генерации данных и Процесса обновления убеждений,
  //// в которой я не смог разобраться,
  //// т.к. термин "обновление убеждений", для меня лично, какой-то контринтуитивный.
  
  .......
  
  Мета-закономерности обновления состояний убеждений
  формально представляют из себя другую СММ,
  //// Формально, да, можно. Но насколько это практично?
  //// И насколько это соответствует реальному поведению нейронки?
  //// Нужно ли вводить "марковость"/"вероятность" туда, где их реально нет?
  где скрытые состояния - ваши состояния убеждений.
  Эта мета-структура в Вычислительной Механике называется
  Представлением Скрытых Состояний (ПСС).
  
  ......
  
  Заметим, что у ПСС есть переходные состояния (выше зелёные),
  которые ведут к повторяющемуся набору состояний убеждений,
  изоморфному генерирующему данные процессу.
  Это всегда так,
  хотя переходных состояний может быть бесконечно много.
  Синхронизация - это процесс движения через переходные состояния,
  сходящийся к генерирующему данные процессу.
  //// Очень "тяжеловесная формулировка.
  //// Каждая составная которой вроде понятна,
  //// но какая-то цельная картинка складывается очень тяжело.
  
  Вычислительная Механика учит,
  что чтобы оптимально предсказывать следующий токен
  на основании конечной истории вывода токенов,
  надо реализовать Представление Смешанных Состояний (ПСС).
  То есть, чтобы хорошо предсказывать следующий токен,
  надо как можно лучше понимать,
  в каком состоянии находится генерирующий данные процесс,
  а для этого нужно ПСС.
  //// А вот в этом месте стоит задуматься,
  //// каким образом в предсказывающих системах формируется такая ПСС.
  //// И это, на самом деле, ключевой вопрос.
  //// Нейронка/трансформер никакой "Вычислительной Механики" НЕ ЗНАЮТ,
  //// но при этом КАК-ТО формируют некое подобие ПСС.
  //// Вот что особенно интересно.
  
  С ПСС ассоциировано геометрическое представление,
  которое получается, если отметить значения состояний убеждений на симплексе.
  В общем случае, если наш генерирующий данные процесс имеет N состояний,
  распределения вероятностей на этих состояниях будут иметь N-1 степень свободы,
  потому что все вероятности должны быть между 0 и 1
  [от переводчика: и суммироваться в единицу, это тоже важно,
  почему-то это не сказали].
  Так что все возможные распределения вероятностей лежат на N-1-мерном симплексе.
  В случае Z1R это 2-симплекс, то есть, треугольник.
  Мы можем отобразить все возможные состояния на этот 2-симплекс,
  как показано ниже.
  //// Это представление, более-менее, понятно, хотя хотелось бы уточнение,
  //// откуда собственно "снимается значения состояний убеждений".
  //// Приходится самостоятельно домысливать структуру эксперимента/модели,
  //// хотя, может быть, автор не считает нужным уточнять "очевидное"/"типовое".
  //// И это, кстати, один из минусов этой работы
  //// - делая заявку на "фундаментальное новшество",
  //// обязательно требуется подчеркнуть, что собственно остается прежним,
  //// а что изменено.
  //// Точно так, как в классической формуле изобретения.
  
  ......
  
  Мы обучили трансформер предсказывать следующий токен данных,
  сгенерированных СММ с тремя состояниями.
  Мы смогли найти линейное отображение геометрии ПСС в остаточном потоке.
  Это удивительно!
  //// Наверно все-таки не "удивительно", а только "замечательно",
  //// иначе чего стоит "панегирик во славу Вычислительной Механики"
  //// если даже для простейшей схемы ее затруднительно применить.
  //// Понятно, что это все равно не так просто,
  //// и к реальным задачам мало применимо.
  //// Но здесь "самый цимус" именно в том,
  //// что даже для простейшей задачи предсказания
  //// ПСС имеет очень характерную, можно сказать, "фирменную" структуру.
  //// Очень рекомендую приглядеться к этой структуре.
  Заметим, что точки на симплексе, состояния убеждений,
  это не вероятности, каким будет следующий токен.
  На самом деле, некоторым точкам тут соответствуют
  абсолютно одни и те же предсказания следующего токена.
  В частности, в нашем примере, ?10, ?S, and ?101
  соответствуют одним и тем же оптимальным предсказаниям следующего токена.
  
  Другой способ об этом думать:
  трансформеры отслеживают различия в ожидаемых распределениях на всё будущее,
  за пределами различий в предсказании следующего токена,
  хоть их в явном виде и обучают предсказанию следующего токена!
  Это означает, что трансформер хранит больше информации,
  чем необходимо только для локального предсказания следующего токена.
  //// А может быть, нужно говорить не об объеме "хранимой информации",
  //// а о СТРУКТУРЕ ее взаимодействия.
  //// Даже приведенные иллюстрации просто кричат о именно о "структуре",
  //// а не об "объеме".
  //// Нет, конечно, можно считать "структуру" эквивалентом "объема информации",
  //// но мне кажется, что это менее перспективно и, вообще, уводит в сторону.
  //// Но "мэйнстрим" в области "машинного обучения" признает
  //// только "объем данных", "вопросы безопасности", "вероятностные распределения"
  //// и некую загадочную/магическую "обобщающую способность нейросети".
  
  Ещё один способ думать о нашем утверждении:
  трансформеры совершают два вида рассуждений:
  одни выводят структуру процесса, который генерирует данные,
  а другие, мета-рассуждения,
  обновляют его внутреннее убеждение о том,
  в каком состоянии этот процесс находится,
  основываясь на некоторой конечной истории
  (т.е., контекстном окне).
  
  Последняя теоретическая заметка о Вычислительной Механике
  и представленной тут теории,
  так как Вычислительная Механика - хорошо проработанный с чистого листа подход,
  который не зависит от конкретики архитектуры трансформера,
  мы можем применить его к любому оптимальному предсказателю,
  не только трансформерам.7
  //// См. ссылки в примечаниях.
  
  ЭКСПЕРИМЕНТ И РЕЗУЛЬТАТЫ
  
  План эксперимента
  
  Повторим вопрос, на который мы пытаемся ответить:
  
  Какую вычислительную структуру мы встраиваем в LLM,
  обучая их предсказывать следующий токен?
  //// А может быть вопрос надо слегка изменить:
  //// какая структура формируется при обучении "предсказаниям"?
  
  Для проверки наших теоретических предсказаний
  мы спланировали эксперимент с такими шагами:
  
  Сгенерировать обучающий данные при помощи известной СММ,
  конкретно - СММ из трёх состояний,
  //// Т.е. меньше модель процесса, наверно, придумать уже нельзя.
  //// И это, на самом деле, хорошо, так как позволяет надеяться
  //// увидеть "чистый результат".
  описанной ниже в разделе "Процесс генерации данных и ПСС".
  
  Обучить трансформер предсказанию следующего токена на этих данных.
  В показанном эксперименте мы использовали трансформер
  из 4 слоёв с 64-мерным остаточным потоком и 4 "головами внимания" на слой.
  //// Судя по всему "64-мерный остаточным поток"
  //// это такое авторский термин для внутренних эмбеддингов/латентов,
  //// или, как минимум, что-то относящееся к последнему слою трансформера.
  //// Или это размер контекстного окна?
  //// Очень "понятная" терминология.
  
  Проанализировать последний слой остаточного потока трансформера
  в поисках линейного подпространства,
  геометрия которого соответствовала бы предсказанной
  фрактальной структуре Представления Смешанных Состояний (ПСС).
  //// Вот интересно, что "фрактальная структура ПСС"
  //// не вызвала у автора никаких "эмоций",
  //// или это уже "общеизвестная истина"?
  //// Или, по его мнению, это просто случайный артефакт конкретной задачи?
  
  Контроль структуры обучающих данных при помощи использования СММ,
  позволил нам сделать конкретное фальсифицируемое предсказание
  о вычислительной структуре,
  которая должна быть реализована в рассуждениях трансформера.
  Вычислительная Механика,
  как описано в разделе "Теоретическая База" выше,
  даёт способ совершать такие предсказания, основываясь на структуре СММ.
  
  Конкретной СММ, которую мы выбрали,
  соответствует ПСС с бесконечно-фрактальной геометрией.
  Это даёт нам весьма нетривиальное предсказание о том,
  обнаружения чего следует ожидать в активациях остаточного потока трансформера,
  если наша теория верна.
  //// Похоже автор все-таки считает "ПСС с бесконечно-фрактальной геометрией"
  //// некоей конкретной "случайностью", с чем я не могу согласиться.
  //// Но в общем такая "близорукость" простительна,
  //// ведь с точки зрения автора главное это доказательство
  //// самой возможности ПРЕДСКАЗАНИЯ ПСС,
  //// так сказать, проверка гипотезы/теории "фальсифицируемостью" по Попперу.
  /////// Или по Лакатосу? - вечно я их путаю.
  //// А совпадение фракталов - качественной "лакмусовой бумажкой",
  //// отвергающей любые сомнения в случайном совпадении.
  
  Процесс генерации данных и ПСС
  
  Для этого эксперимента мы обучили трансформер на данных,
  сгенерированных простой ПСС под названием Mess3
  с всего 3 скрытыми состояниями8.
  многократные переходы между этими состояниями генерируют строки,
  состоящие из токенов из множества {A, B, C}.
  СММ этого процесса изображена слева на рисунке ниже.
  
  Adam Shai. Источник: https://habr.com/ru/articles/815911/  Рис. eff08d414557fdaf656366364b9de2b9.png
  
  Источник: https://habr.com/ru/articles/815911/ Рис. eff08d414557fdaf656366364b9de2b9.png
  https://habrastorage.org/r/w1560/getpro/habr/upload_files/eff/08d/414/eff08d414557fdaf656366364b9de2b9.png
  
  Рис. (Слева) Генерирующий данные процесс имеет три скрытых состояния
  и выводит строки-данные с словарём {A, B, C}.
  (Снизу) Пути по этой структуре генерируют строки для обучающих данных
  из токенов, приписанных к рёбрам,
  по которым эти пути проходят.
  Мы используем эти данные для обучения на них трансформера.
  (Справа) Соответствующая Mess3 ПСС - внутренние состояния системы,
  которая предсказывает будущие токены,
  которые выдаст генерирующий данные процесс,
  при условии наблюдения предыдущих токенов.
  Точки в этом пространстве соответствуют
  распределениям вероятностей скрытых состояний генерирующего данные процесса.
  Они лежат на двумерной плоскости,
  потому что пространство распределений вероятностей трёх вариантов двумерно.
  Важно, что эта структура - не структура предсказания следующего токена!
  Это мета-структура того,
  как обновляются убеждения наблюдателя о скрытых состояниях генерирующего процесса!
  Центральная точка треугольника соответствует максимальной неуверенности
  по поводу трёх скрытых состояний,
  а углы - полной уверенности в одном из них.
  Цвета присвоены сопоставлением вероятности каждого состояния
  одного из значений RGB.
  
  Наш подход позволил нам совершить строгое и тестируемое предсказание
  о внутренней структуре трансформеров.
  В случае этой СММ, теория (обрисованная выше) заявляет,
  что обученный на этих данных трансформер
  должен реализовывать вычислительную структуру,
  ассоциированную с фрактальной геометрией,
  показанной справа на рисунке выше.
  Каждая цветная точка этого симплекса - отдельное состояние убеждений.
  
  Мы выбрали СММ Mess3,
  потому что его ПСС обладает бесконечной фрактальной структурой,
  так что может послужить весьма нетривиальным предсказанием о том,
  какую геометрию мы обнаружим в остаточном потоке.
  //// Т.е. автор утверждает, что фрактальная структура эмбеддингов/латентов,
  //// возникающая даже в максимально простейшем случае,
  //// просто удобная форма для подтверждения/фальсификации главного утверждения
  //// относительно более сложной структуры ПСС, в задачах предсказания токенов.
  //// А на мой взгляд, что "слона то я и не приметил".
  //// Фрактальность эмбеддингов/латентов это не следствие сложности ПСС,
  //// а форма практической реализации ЛЮБОЙ ПСС.
  //// Только в реальных задачах она настолько сложная,
  //// что выглядит как случайное распределение.
  
  Результаты!
  
  Мы обучили трансформер на данных, которые сгенерировала Mess3.
  Мы посмотрели на последний слой остаточного потока
  и нашли линейное двумерное подпространство,
  в котором активации обладали весьма похожей
  на наш предсказанный фрактал структурой.
  Мы сделали это при помощи обычной линейной регрессии
  от активаций остаточного потока (64-мерных векторов)
  к распределениям-убеждениям (трёхмерным векторам),
  которые соответствуют им в ПСС.
  
  //// Очень рекомендую в этом месте взглянуть на картинку.
  
  Adam Shai. Источник: https://habr.com/ru/articles/815911/  Рис. ad20c0768030eed96ce326ef60135735.png
  
  Источник: https://habr.com/ru/articles/815911/ Рис. ad20c0768030eed96ce326ef60135735.png
  https://habrastorage.org/r/w1560/getpro/habr/upload_files/ad2/0c0/768/ad20c0768030eed96ce326ef60135735.png
  
  Рис. (Слева) Наше предсказание внутренней геометрии обученного трансформера,
  то же, что и на предыдущем рисунке.
  (Справа) Результаты эксперимента.
  Мы нашли двумерную линейную проекцию активаций последнего слоя
  остаточного потока нашего обученного трансформера,
  геометрия которой схожа с нашим теоретическим предсказанием!
  Цвета присвоены согласно идеально верному распределению вероятностей
  (как показано слева).
  
  Можно посмотреть и на то,
  как эта структура возникает при обучении.
  Это показывает
  (1) что найденная структура нетривиальна9,
  ведь на ранних этапах обучения она не столь подробна, и
  (2) что происходит постепенная подгонка активаций трансформера
  к предсказанной нами фрактальной структуре.
  
  По ходу обучения видно оформление внутренних активаций
  остаточного потока трансформера в фрактальную геометрию,
  которую предсказал наш подход.
  
  Adam Shai. Источник: https://habr.com/ru/articles/815911/  Рис. f9f020509cff31dd9b6764e7142b9e23.png
  
  Источник: https://habr.com/ru/articles/815911/ Рис. f9f020509cff31dd9b6764e7142b9e23.png
  https://habrastorage.org/r/w1560/getpro/habr/upload_files/f9f/020/509/f9f020509cff31dd9b6764e7142b9e23.png
  
  Можно посмотреть визуализацию на этом видео.
  https://www.youtube.com/watch?v=HkjnRSmMfxc
  Для обучения мы использовали стохастический градиентный спуск,
  поэтому двумерная проекция активаций подрагивает даже после того,
  как обучение уже сошлось.
  Можно видеть, что при подрагивании фрактальная структура остаётся.
  
  ///// Самое главное, что, на мой взгляд, нужно увидеть,
  ///// это сам процесс формирования из "аморфного случайного распределения"
  ///// "поликристаллического субфрактала", переходящего в "монокристалл",
  ///// как естественного результата обучения нейросетевой модели.
  ///// Кстати, на этих картинках и процесс "переобучения"
  ///// приобретает "отчетливый образ",
  ///// как переход от "поликристалла" к "монокристаллу".
  
  ///// Я очень благодарен автору данного материала за такие красивые иллюстрации,
  ///// причем основанные на реальном эксперименте.
  ///// Уже почти год искал нечто подобное, как подтверждение/опровержение
  ///// чисто "мысленным изыскам" в области "нейронного фракталостроения", см.:
  ///// "Обучение нейронок - построение "ландшафта" или "фрактала"?
  
  
  ОГРАНИЧЕНИЯ И СЛЕДУЮЩИЕ ШАГИ
  
  Ограничения
  
   Мы показали одну простую структуру, заданную СММ с тремя состояниями
  и словарём из трёх токенов.
  Настоящие современные LLM намного больше и имеют словари
  больше чем из 50 тысяч токенов,
  а марковский порядок естественных языков бесконечен.
  Мы проверяли эту теорию и на других СММ, и всё работало,
  но пока что это тоже были примерно настолько же маленькие примеры.
  Как всё это относится к большим, более сложным и более реалистичным ситуациям
  - неизвестно
  (но у нас есть мысли по этому поводу!).
  
   В этом посте мы на этом не сосредотачивались,
  но МСП - динамическая система, управляемая входными данными
  (input-driven dynamical system).
  Для каждого возможного ввода в систему определено,
  куда в симплексе возможных убеждений
  надо перейти из какого нынешнего убеждения.
  Мы не проверяли напрямую,
  что LLM реализуют эти закономерности,
  только что в трансформере представлены состояния убеждений
  и их геометрия.
  
   Вычислительная Механика в основном говорит об оптимальных предсказаниях.
  На практике LLM не будут буквально оптимальными.
  Есть много статей по изучению почти-оптимальности,
  не-оптимальности и скоростей - искажений (rate-distortion)
  с точки зрения Вычислительной Механики,
  но к LLM этого пока не применяли.
  
   В этой работе мы сфокусировались на эргодических и стационарных процессах.
  Вычислительная Механика может ослабить эти допущения,
  но, опять же, мы эти её (очень интересные) расширения не применяли к LLM.
  В частности, не-эргодичность,
  скорее всего,
  лежит в основе обучения в контексте.
  
   В представленном в этом посте эксперименте
  мы сосредоточились на последнем слое остаточного потока,
  прямо перед обращением эмбеддинга.
  В других (не представленных тут) экспериментах
  ПСС не была хорошо представлена в последнем слое,
  а была распределена по нескольким более ранним слоям.
  Мы думаем, что это происходит,
  потому что в общем случае есть вырожденные группы состояний убеждений,
  в том смысле, что у этих состояний
  одинаковое распределение вероятностей следующего токена.
  В таком случае, утверждение из этого поста заявляет,
  что хоть различие между этими состояниями должно быть отображено
  в внутренней структуре трансформера,
  но он может затем, двигаясь к предсказанию следующего токена,
  это различие (локально) потерять.
  Это в наиболее явном виде происходит прямо перед обращением эмбеддинга.
  //// Интересные соображения, но пока не очень практичных
  //// и мало обоснованных.
  //// Тут основная трудность понять каким образом "контекст",
  //// состоящий из последовательности векторов эмбеддинга,
  //// трансформируется в эмбеддинг "предсказания".
  //// И в этом вопросе, на мой взгляд, перспективнее рассматривать
  //// фрактальное представление внутреннего состояния модели,
  //// а не некоторое "вероятностное предсталение".
  //// Но такое направление пока находится достаточно далеко
  //// от мейнстрима в "машинном обучении",
  //// хотя в последние месяцы термин "фрактальность"
  //// потихоньку набирает популярность в различных аспектах "нейронаук".
  
  
  Следующие шаги
  
   Мы надеемся, что описанный в этом посте подход
  даст более формальное понимание внутренней структуры и поведения нейросетей.
  //// "Сумневаюсь я, однако".
  
   Есть много пока открытых вопросов о том,
  как эта работа соотносится с другой технической работой по безопасности ИИ.
  //// Да никак. Просто это "ритуальная фраза" в нынешней "нейронауке".
  Я очень быстро перечислю несколько идей,
  а подробнее расскажу о них в будущих постах:
  
   Как с геометрией смешанных состояний связаны черты и схемы,
  которые изучает Механистическая Интерпретируемость?
  
   Можно ли что-то сказать о суперпозиции и сжатии ПСС в тех случаях,
  когда остаточный поток слишком мал, чтобы оно в него "поместилась"?
  //// Вот именно. А вот "фрактальность" сохраняется даже
  //// при максимальном сжатии "эмбеддинга"/"латента", как было показано ранее.
  //// И это еще один довод в пользу фрактального направления.
  //// Либо, что тоже возможно, надо рассматривать методы сжатия ПСС,
  //// даже с потерей какой-то значимой части этой ПСС.
  //// А это уже направление исследования реализации "эвристик" в ИИ-моделях, см.:
  //// "Больше эвристик, хороших и разных."
  
   Можно ли связать развитие геометрической структуры ПСС
  по мере обучения с явлениями из SLT (Singular Learning Theory)?
  См. К интерпретируемости развития
  https://www.lesswrong.com/posts/TjaeCWvLZtEDAS5Ex/towards-developmental-interpretability
  
   Можно ли использовать наш подход,
  чтобы операционализировать определённые способности
  (обучение в контексте, обобщение за пределы распределений,
  ситуационная осведомлённость, "спящие агенты", и т.д.)?
  Позволяет ли наш подход изучать их на игрушечных моделях?
  
   Можно ли использовать наш подход для понимания структур задач
  и того, как разные задачи друг с другом связаны?
  См. [Начальная точка для того,
  чтобы начать что-то понимать в структурах задач (в машинном обучении)]
  
   Как уже упоминалось в разделе про ограничения,
  структуры ПСС в трансформерах распределяются по слоям.
  Очевидный следующий шаг:
  изучить, как это происходит и как с этим связана функциональная форма механизма внимания.
  
   Мы скоро выпустим python-библиотеку для проведения подобных экспериментов.
  Вот репозиторий на github.
  https://github.com/adamimos/epsilon-transformers/
  
   Вычислительная Механика - хорошо проработанный подход,
  а этот пост сосредоточен только на малой её части.
  Мы надеемся применить и другие её аспекты
  к работе нейросетей и безопасности ИИ,
  а также расширить её и скомбинировать с другими методами и подходами.
  
   Если вы хотите узнать больше о Вычислительной Механике,
  то мы рекомендуем начать с этих статей Шализи и Кратчфилд (2000),
  https://arxiv.org/abs/cond-mat/9907176
  Ричерс и Кратчфилд (2018a),
  https://arxiv.org/abs/1705.08042
  и Ричерс и Кратчфилд (2018b)
  https://arxiv.org/abs/1706.00883
  
  ......
  
   Впереди ещё много работы!
  части этого плана исследований лежат на всём диапазоне
  от чисто математических/теоретических до экспериментальных.
  Если вы заинтересованы и хотите стать частью этого,
  пожалуйста, не стесняйтесь с нами связываться!
  
  //// Примечания.
  
  ......
  
  2. Возможный способ концептуализировать это - считать,
  что "мир" обладает некоторой
  (изначально вам неизвестной)
  скрытой структурой,
  которая выдаёт наблюдения.
  Наша задача - вывести скрытую структуру по последовательности наблюдений.
  Это может быть ради оптимальных предсказаний будущего,
  а может быть просто потому,
  что выяснять как работает мир интересно само по себе.
  Внутри нас есть "модель мира" - внутренняя структура,
  которая позволяет нам "понимать" скрытую структуру мира.
  Термин "модель мира" спорный,
  ничего в посте особо не зависит от этого понятия.
  Но наша мотивация для этой работы
  - формализовать интуитивные соображения и аргументы о нейросетях и моделях мира,
  превратить их в что-то конкретное,
  а то они часто очень расплывчаты и плохо определены. ? ?2
  
  3. Если говорить формально, термин процесс
  относится к распределению вероятностей бесконечных последовательностей токенов,
  а представление - к конкретной СММ,
  которая выдаёт строки согласно этому распределению.
  У процесс бесконечно много представлений. ?
  
  4. Любая СММ определяет распределение вероятностей
  на бесконечных цепочках выводов. ?
  
  5. В данном конкретном случае наше изначальное распределение вероятностей
  - равномерное распределение на трёх состояниях
  генерирующего данные процесса.
  Но это не всегда так.
  В общем случае изначальное распределение
  задаётся стационарным распределением генерирующей данные СММ. ?
  
  6. Ответ можно найти в разделе IV этой статьи Пола Ричерса. ?
  https://pubs.aip.org/aip/cha/article/28/3/033115/684965/Spectral-simplicity-of-apparent-complexity-I-The
  https://www.lesswrong.com/users/paul-riechers
  
  7. В области Вычислительной Механики есть работы,
  изучающие и неоптимальные или почти-оптимальные предсказания
  и что с оптимальностью разменивается.
  Вероятно, это на практике применимо к нейросетям.
  См. Марзен и Кратчфилд, 2021 и Марзен и Кратчфилд, 2014. ?
  https://arxiv.org/pdf/1702.08565.pdf
  https://arxiv.org/abs/1412.2859
  
  8. Этот процесс называется Mess3,
  он определён в статье Сары Марзен и Джеймса Кратчфилда.
  https://arxiv.org/pdf/1702.08565.pdf
  В нашей работе мы использовали x=0.05, alpha=0.85. ?
  
  9. Мы провели и контрольный эксперимент,
  в котором оставили ту же настоящую фрактальную структуру,
  но перетасовали то, какие вводы соответствуют каким точкам симплекса
  (этому соответствует перемешивание цветов на графике с правильной структурой).
  В этом случае, когда мы запустили нашу регрессию,
  мы получили, что все активации остаточного потока
  переходили в центральную точку симплекса - центр масс всех точек. ?
  //// И что это значит?
  
  ........
  
  //// Конец цитирования.
  
  В общем, я очень доволен этим материалом, автор проделал очень большую
  и очень ценную работу.
  На чистом "игрушечном" примере показал и доказал
  "фрактальную подложку" обучения и работы "трансформера-предсказателя"
  квазислучайного потока данных.
  Что само по себе очень интересный результат, даже без обобщающих гипотез.
  
  Полностью поддерживаю главное положение/гипотезу автора о том,
  что процесс-предсказатель в общем случае
  может иметь более богатую структуру
  - пространство смешанных состояний (ПСС) -
  чем модель генератора предсказываемых данных.
  Хотя с трактовкой автора о "вероятностной" интерпретации этого положения
  никак не могу согласиться.
  
  "Но то такое". У каждого свои "тараканы в голове".
  У меня так "мульти-квази-фрактальный",
  да еще и в пространстве дробной размерности,
  что и обеспечивает его "более богатую структуру"
  по сравнению с "цельномерной" моделью мира,
  основанной на распределениях вероятностей.
  
  P.S.
  Пока оформлял этот фрагмент промелькнула совершенно "шальная мысль":
  А может используя предложенную в этом материале методику,
  можно, используя "предсказания марковских цепей",
  "перебросить мостик" от "распределений вероятностей" к "фйрактальности"?
  Это было бы просто замечательно.
  Наверно, стоит поискать информацию в этом направлении.
  
  
  =========
  
  18.05.2024 9:05
  
  Немножко о математических трюках в пространствах нейронок.
  В оглавление.
  
  У меня есть идея "фикс", и мне приходится "постоянно ее думать".
  Идея "простенькая" - о фрактальности пространства эмбеддингов/латента нейронок,
  но почему-то ее никто активно не прорабатывает.
  Всех устраивает "целочисленная размерность" внутреннего пространства нейронок,
  наверно потому, что под нее есть солидная теоретическая/математическая база.
  А ощущение того, что, возможно, "в лице нейронок" мы сталкиваемся
  с чем-то совершенно новым, незнакомым, а, может быть, вообще неведомым,
  даже в области математики, как-то не сильно "популярно".
  
  Ну, да ладно. "За неимением гербовой, пишут на простой".
  Будем искать любую информацию, которая может что-то подсказать
  относительно представлений внутреннего пространства нейронок.
  Попробуем, что-то "нарыть" и в традиционных математических преобразованиях:
  
  "Интуитивное понимание пространств и ядер в машинном обучении:
  Часть 1".
  Автор: Flokis_guy (Liubomyr Horbatko)
  https://habr.com/ru/articles/814343/
  17 мая 2024 в 14:20
  
  //// Начало цитирования.
  
  При изучении темы ядер (kernel) в ML/DS программы вузов,
  роадмэпы и видео на YouTube обычно рассматривают её через призму SVM,
  не говоря уже о всеми любимых курсах:).
  Казалось бы, это неплохо:
  вот тебе краткое объяснение и модель, которая использует ядра.
  Но, увы, в этих областях желательно понимать многие процессы интуитивно,
  так сказать - "тяжело в учении, легко в бою".
  К тому же, эта тема нечто большее, чем просто метод;
  она позволяет связать многие вещи в машинном обучении в единую картину
  через пространство, что я и хочу показать в этой статье.
  
  Ядра
  
  Для начала я бы хотел поговорить про сами ядра.
  Слово "ядро" (kernel) означает центр, зерно чего-то,
  к примеру, алгоритма, формулы, системы и так далее.
  В различных областях это разные вещи.
  В нашем случае мы условимся, что это просто функция сходства,
  и в этой статье будем рассматривать её между двумя векторами
  (хотя это не всегда так, может быть и больше,
  и можно сравнивать с их помощью даже функции, но тут это лишнее).
  
  Возьмем самый простой пример - линейное ядро,
  оно же скалярное умножение,
  оно же внутренний продукт.
  //// Странная терминология.
  У нас есть два вектора [3, 4] и [5, 6].
  Мы их скалярно перемножили:
  
  3 * 5 + 4 * 6 и получили 39.
  
  Это и есть наша мера сходства.
  В контексте линейного ядра её сложно интерпретировать,
  ибо это проекция одного вектора на другой, умноженная на длину вектора,
  на который проецируется.
  Но чем больше само число (скаляр), тем более схожи вектора, и наоборот.
  //// Вот это "краеугольный камень веры" представлений
  //// о внутреннем пространстве эмбеддингов/латентов
  //// в классическом машинном обучении.
  //// А вот насколько этот "камень" непоколебим очень интересный вопрос.
  //// Ведь в основании такого представления лежит
  //// и независимость элементов векторов,
  //// и линейность/непрерывность самих значений параметров...
  
  //// И, наверно, еще что-то, что пока "сокрыто под водой"
  //// уже самого понятия "расстояния",
  //// если предполагать, что пространство представления самих "векторов",
  //// не элементарное, а существенно неэвклидово.
  
  Трюк с подъемом
  
  Итак, когда мы разобрались с концепцией ядра,
  можно перейти к манипуляциям с данными.
  Сам термин "трюк с подъемом" не является общепринятым,
  но он хорошо помогает отличить этот метод от трюка с ядром
  (который мы рассмотрим позже).
  
  Задача классификации.
  
  В машинном обучении во многих моделях задача классификации сводится
  к поиску гиперплоскости,
  которая максимально точно разделит классы.
  Но не всегда в исходном пространстве признаков данные линейно разделимы,
  поэтому мы можем "поднять" данные в более высокое пространство признаков,
  где они, возможно, будут линейно разделимы,
  как показано на рисунке.
  
  Рис. Трюк с подъемом для 2-мерного пространства признаков в 3-мерное
  
  Итак, что же мы сделали? Мы взяли функцию ??(??):
  
  \varphi(\mathbf{x}) = \begin{bmatrix} x_1^2 \\ x_2^2 \\ \sqrt{2} x_1 x_2 \end{bmatrix}
  
  После этого перевели данные в 3-мерное пространство,
  просто подставив значения.
  Как видим, данные там линейно разделимы.
  Мы берем пространство RD,
  используем трюк с подъемом в пространство RJ, где D < J,
  и затем применяем метод, вроде логистической регрессии,
  для линейной классификации.
  Однако это может быть дорогостоящим для функции ?(?).
  Для N точек данных, поднятых в J измерений,
  нам потребуется O(N * J) операций
  только для предварительной обработки данных.
  Но мы можем избежать вычисления ?(?) полностью,
  продолжая делать линейную классификацию в этом поднятом пространстве,
  если будем изобретательны.
  И этот второй трюк называется трюком с ядром.
  
  Но, прежде чем перейти к трюку с ядром,
  я бы хотел поговорить о матрице Грама.
  
  Матрица Грама
  
  Определение с Википедии:
  
  \\\ В линейной алгебре матрица Грама для набора векторов v1?,:,vn?
  \\\ в гильбертовом пространстве
  \\\ представляет собой эрмитову матрицу скалярных произведений,
  \\\ элементы которой заданы скалярными произведениями Gij? = ?vi?,vj??.
  
  Нас она интересует, потому что если мы применим скалярное умножение
  (линейное ядро, внутренний продукт)
  попарно ко всем данным в нашем наборе, то получим матрицу Грама,
  которая отображает линейные зависимости между нашими данными,
  формируя наше исходное пространство признаков.
  Ибо наше ядро ??(????, ????) = ??(????) ? ??(????), где ?(x) = x.
  
  Вот наглядный пример:
  
  Возьмем 4 вектора в 2-х мерном пространстве
  и попарно найдем сходства построив матрицу Грама.
  
  \mathbf{v}_1 = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, \quad \mathbf{v}_2 = \begin{bmatrix} 3 \\ 6 \end{bmatrix}, \quad \mathbf{v}_3 = \begin{bmatrix} 1 \\ 10 \end{bmatrix}, \quad \mathbf{v}_4 = \begin{bmatrix} -100 \\ -100 \end{bmatrix}G = \begin{bmatrix} \mathbf{v}_1 \cdot \mathbf{v}_1 & \mathbf{v}_1 \cdot \mathbf{v}_2 & \mathbf{v}_1 \cdot \mathbf{v}_3 & \mathbf{v}_1 \cdot \mathbf{v}_4 \\ \mathbf{v}_2 \cdot \mathbf{v}_1 & \mathbf{v}_2 \cdot \mathbf{v}_2 & \mathbf{v}_2 \cdot \mathbf{v}_3 & \mathbf{v}_2 \cdot \mathbf{v}_4 \\ \mathbf{v}_3 \cdot \mathbf{v}_1 & \mathbf{v}_3 \cdot \mathbf{v}_2 & \mathbf{v}_3 \cdot \mathbf{v}_3 & \mathbf{v}_3 \cdot \mathbf{v}_4 \\ \mathbf{v}_4 \cdot \mathbf{v}_1 & \mathbf{v}_4 \cdot \mathbf{v}_2 & \mathbf{v}_4 \cdot \mathbf{v}_3 & \mathbf{v}_4 \cdot \mathbf{v}_4 \\ \end{bmatrix}\mathbf{v}_1 \cdot \mathbf{v}_1 = 1 \cdot 1 + 2 \cdot 2 = 1 + 4 = 5 \\ \mathbf{v}_1 \cdot \mathbf{v}_2 = 1 \cdot 3 + 2 \cdot 6 = 3 + 12 = 15 \\ \mathbf{v}_1 \cdot \mathbf{v}_3 = 1 \cdot 1 + 2 \cdot 10 = 1 + 20 = 21 \\ \mathbf{v}_1 \cdot \mathbf{v}_4 = 1 \cdot (-100) + 2 \cdot (-100) = -100 - 200 = -300 \\ \mathbf{v}_2 \cdot \mathbf{v}_2 = 3 \cdot 3 + 6 \cdot 6 = 9 + 36 = 45 \\ \mathbf{v}_2 \cdot \mathbf{v}_3 = 3 \cdot 1 + 6 \cdot 10 = 3 + 60 = 63 \\ \mathbf{v}_2 \cdot \mathbf{v}_4 = 3 \cdot (-100) + 6 \cdot (-100) = -300 - 600 = -900 \\ \mathbf{v}_3 \cdot \mathbf{v}_3 = 1 \cdot 1 + 10 \cdot 10 = 1 + 100 = 101 \\ \mathbf{v}_3 \cdot \mathbf{v}_4 = 1 \cdot (-100) + 10 \cdot (-100) = -100 - 1000 = -1100 \\ \mathbf{v}_4 \cdot \mathbf{v}_4 = (-100) \cdot (-100) + (-100) \cdot (-100) = 10000 + 10000 = 20000G = \begin{bmatrix} 5 & 15 & 21 & -300 \\ 15 & 45 & 63 & -900 \\ 21 & 63 & 101 & -1100 \\ -300 & -900 & -1100 & 20000 \end{bmatrix}
  
  Эта матрица не изменяет наше исходное пространство признаков:
  данные остаются в 2-мерном пространстве,
  несмотря на наличие 4 столбцов,
  поскольку каждый столбец является элементом,
  формирующим наше исходное пространство признаков.
  //// Вот тут я же начинаю переставать понимать.
  //// Как же я люблю математику за такие "наглядные" представления.
  
  Вернемся к нашей функции ?(?) и сделаем следующее:
  повысим наши предыдущие вектора в 3-мерное пространство,
  попарно вычислим их внутренний продукт и построим матрицу Грама.
  
  Фактически формула каждого элемента матрицы будет выглядеть так:
  
  \varphi(\mathbf{x}_n)^\top \varphi(\mathbf{x}_m) = \begin{bmatrix} x_{n,1}^2 & x_{n,2}^2 & \sqrt{2} x_{n,1} x_{n,2} \end{bmatrix} \cdot \begin{bmatrix} x_{m,1}^2 \\ x_{m,2}^2 \\ \sqrt{2} x_{m,1} x_{m,2} \end{bmatrix} \\ = x_{n,1}^2 x_{m,1}^2 + x_{n,2}^2 x_{m,2}^2 + 2 x_{n,1} x_{n,2} x_{m,1} x_{m,2}
  
  Как вы догадались, выполнив каждый пункт,
  мы получим отображение наших данных в 3-мерном пространстве.
  Казалось бы, мало того, что мы использовали трюк с подъемом,
  так мы еще и вычисляли скалярное произведение.
  Зачем?
  Поэтому мы переходим к трюку с ядром.
  
  Трюк с Ядром
  
  Мы вычисляем, как в нашем алгоритме, каждый элемент матрицы вот так:
  
  \varphi(\mathbf{x}_n)^\top \varphi(\mathbf{x}_m) = \begin{bmatrix} x_{n,1}^2 & x_{n,2}^2 & \sqrt{2} x_{n,1} x_{n,2} \end{bmatrix} \cdot \begin{bmatrix} x_{m,1}^2 \\ x_{m,2}^2 \\ \sqrt{2} x_{m,1} x_{m,2} \end{bmatrix} = \\ x_{n,1}^2 x_{m,1}^2 + x_{n,2}^2 x_{m,2}^2 + 2 x_{n,1} x_{n,2} x_{m,1} x_{m,2}
  
  Но теперь сделаем это с помощью полиномиального ядра:
  
  \left( \mathbf{x}_n^\top \mathbf{x}_m \right)^2 = \left( \begin{bmatrix} x_{n,1} & x_{n,2} \end{bmatrix} \cdot \begin{bmatrix} x_{m,1} \\ x_{m,2} \end{bmatrix} \right)^2 = \\ \left( x_{n,1} x_{m,1} + x_{n,2} x_{m,2} \right)^2 = \\ \left( x_{n,1} x_{m,1} \right)^2 + \left( x_{n,2} x_{m,2} \right)^2 + 2 \left( x_{n,1} x_{m,1} \right) \left( x_{n,2} x_{m,2} \right) = \varphi(\mathbf{x}_n)^\top \varphi(\mathbf{x}_m)
  
  Что сейчас произошло?
  Вместо того чтобы переносить наши данные в 3-мерное пространство
  и вычислять скалярное умножение,
  мы только что вычислили внутренний продукт в двумерном пространстве
  и затем возвели сумму в квадрат.
  Хотя оба варианта имеют одинаковое количество математических символов,
  фактическое количество операций для второго подхода намного меньше.
  Это происходит потому, что внутренний продукт в двумерном пространстве
  - это два умножения и сумма.
  Квадрат - это просто квадрат скаляра, поэтому всего 4 операции.
  Первый подход занимал 9 операций.
  
  В этом и заключается трюк с ядром:
  мы можем избежать дорогостоящих операций перевода в большую размерность,
  найдя подходящую функцию ядра k(xn?, xm?),
  эквивалентную скалярному умножению в пространстве более высокого измерения.
  Это позволяет нам дешево построить матрицу Грама,
  заботясь только о её масштабировании.
  Полученная матрица Грама будет моделировать линейные зависимости,
  но уже в более высоком пространстве.
  Другими словами, трюк с ядром позволяет дешево выполнить трюк с подъемом.
  //// Как я это понимаю.
  //// Использование нелинейного ядра, т.е. нелинейных зависимостей,
  //// фактически, можно представить, как "выход в надпространство".
  //// Но таким же образом можно, наверное, "выйти в подпространство",
  //// используя определенные, но тоже нелинейные преобразования типа свертки.
  //// И только чисто линейное обратимое преобразование сохраняет
  //// "размерность пространства".
  //// Хорошо, а что будет если к части элементов вектора применять
  //// линейные операции, а к части нелинейные, -
  //// какая при этом получается "размерность пространства решения"?
  
  Теорема Мерсера
  
  Теорема Мерсера в работах о функциональном анализе
  дает условия для формирования ядерного трюка в машинном обучении.
  
  Формальное определение:
  //// Мне не дано это осилить.
  
  ......
  
  Итак, ядро может выполнить трюк с ядром, если:
  
  Ядро является непрерывной функцией.
  
  Ядро является симметричным.
  
  Собственные значения матрицы Грама, построенной с помощью ядра,
  неотрицательные.
  
  //// А что будет если требования не будут выполнены?
  //// Какой "трюк" при этом произойдет?
  
  Примеры положительно определенных ядер
  
  Некоторые примеры положительно определенных ядер,
  определенных в евклидовом пространстве Rd, включают:
  
  Линейное ядро:
  
  K(\mathbf{x}, \mathbf{y}) = \mathbf{x}^T \mathbf{y}, \quad \mathbf{x}, \mathbf{y} \in \mathbb{R}^d
  
  Полиномиальное ядро:
  
  K(\mathbf{x}, \mathbf{y}) = (\mathbf{x}^T \mathbf{y} + r)^n, \quad \mathbf{x}, \mathbf{y} \in \mathbb{R}^d, \, r \geq 0, \, n \geq 1
  
  Гауссовское ядро (RBF ядро):
  
  K(\mathbf{x}, \mathbf{y}) = e^{-\frac{\|\mathbf{x} - \mathbf{y}\|^2}{2\sigma^2}}, \quad \mathbf{x}, \mathbf{y} \in \mathbb{R}^d, \, \sigma > 0, \\ \text{или} \\ K(\mathbf{x}, \mathbf{y}) = e^{-\lambda \|\mathbf{x} - \mathbf{y}\|^2}, \quad \mathbf{x}, \mathbf{y} \in \mathbb{R}^d, \, \lambda > 0
  
  Где ? и ? - это ширина ядра.
  В первом случае, чем меньше значение ?,
  тем меньше значение под экспонентой и тем более чувствительно ядро
  к изменениям.
  Во втором, наоборот, чем больше значение ?, тем более чувствительно.
  
  Бесконечномерное пространство и Гауссово (RBF) ядро
  
  Сейчас мы алгебраически поймём,
  в чём же "магия" гауссовского ядра относительно
  его способности возвращать скалярное умножение в бесконечномерном пространстве.
  
  //// Я не сильный любитель "острых математических ощущений",
  //// и решил, что формул итак слишком много,
  //// а главная изюминка этих формул - в разложении экспоненты в ряд Тейлора
  //// и важнее всего вывод из них.
  
  .......
  
  Таким образом, RBF ядро можно рассматривать
  как бесконечную сумму полиномиальных ядер.
  Вот почему матрица Грама, построенная с их помощью,
  будет моделировать наши данные в бесконечномерном пространстве.
  //// А вот что это такое, как представить,
  //// да так, чтобы это было еще и интуитивно приемлемо....
  //// Ну не могу я представить себе свойства "бесконечномерного пространства".
  //// Тут и с реально многомерным очень много проблем, см:
  //// "Проклятье размерности" в пространстве".
  
  Обобщаем информацию
  
  Итак, мы полностью разобрались с работой ядер, ядерного трюка
  и изменением пространства.
  Теперь перейдём к пониманию, о котором я говорил в начале статьи.
  
  Пространство - это связующее звено
  между всеми алгоритмами в машинном обучении,
  позволяющее обобщить их понимание и обеспечить модульность.
  //// С этим согласен.
  
  В качестве первого примера рассмотрим классическую полносвязную нейронную сеть.
  Обычно её объясняют через связи, веса и прочее.
  Я предлагаю обобщить этот подход и сделать его более модульным
  - через пространство.
  В полносвязной нейронной сети (и не только)
  скрытый слой фактически выполняет трюк с подъемом данных
  в многомерное пространство.
  Мы подаем данные на вход,
  а затем рекурсивно поднимаем их от слоя к слою нашей сети
  (или понижаем размерность),
  где количество нейронов в каждом скрытом слое
  определяет размерность пространства.
  И фактически это и есть наша новая функция ?(?) для изменения пространства.
  //// А вот с этим не согласен.
  //// Размерность "пространства обобщения" это не "количество нейронов в слое".
  //// С количеством нейронов можно попытаться связать
  //// некое пространство некоего "шагового преобразования",
  //// причем в реальности, оно зачастую вообще не меняет "размерности",
  //// или вообще не используются нелинейные преобразования, см.:
  //// "Иллюстрация реального уровня понимания работы нейронок и регуляризации."
  
  Для иллюстрации мы возьмем наш предыдущий датасет make_circles
  и обучим на нём полносвязную нейронную сеть
  без функций активации (2 входа, 3 нейрона в скрытом слое, 2 выхода)
  и отобразим данные после выхода из скрытого слоя.
  
  .......
  
  Рис. Примечание: цвет означает предсказание модели
  на принадлежность определенному классу.
  
  Как мы можем заметить, без функций активации наша функция ?(?),
  которая представлена скрытым слоем,
  способна сделать трюк с подъемом,
  //// Наверно все-таки "не способна".
  моделируя линейные зависимости между данными.
  Поэтому наш классификатор в виде выходного слоя нейросети
  не способен предсказать истинные метки.
  
  Теперь рассмотрим случай с функциями активации (sigmoid).
  С ними наша нейронная сеть становится более сложной функцией ?(?),
  которая лучше обучается изменять пространство признаков так,
  чтобы в конце выходной слой мог правильно классифицировать векторы.
  
  Рис. Примечание: цвет означает предсказание модели
  на принадлежность определенному классу.
  
  Вернёмся опять к нашей нейросети без функций активации.
  Так ли всё безнадежно, что нам нужно использовать функции активации?
  Нет!
  Никто нам не мешает добавить модульность
  и предварительно обработать данные, используя трюк с ядром.
  В данном случае мы будем использовать RBF ядро
  и представим наши данные в бесконечномерном пространстве,
  надеясь, что там нейросеть без функций активации
  сможет их классифицировать максимально точно.
  
  Рис. Примечание: цвет означает предсказание модели
  на принадлежность определенному классу.
  
  Можно заявить:
  "Ок, с нейронной сетью и с многими архитектурами,
  использующими гиперплоскость и изменение пространства для выполнения задачи,
  всё понятно".
  //// "Можно заявить", что "предварительная обработка данных"
  //// не сильно облегчает "интуитивное" понимание работы нейросетей,
  //// в части обучения их требуемым нелинейным преобразованиям.
  Возьмём ещё одну популярную архитектуру - дерево решений.
  Само по себе оно никак не трансформирует пространство, что же с ним?
  Да, это верно, но при этом оно делит и структурирует его.
  Геометрически дерево решений разбивает пространство признаков
  на оси, перпендикулярные осям признаков.
  
  Рассмотрим это на примере двухмерного пространства признаков
  с признаками ??1? и ??2?:
  
  Начальное состояние:
  
  Пространство признаков представляет собой плоскость,
  где каждый точка соответствует определенным значениям ??1? и ??2.
  
  Первое разбиение:
  
  Дерево решений выбирает признак ??1? и пороговое значение ??1?.
  Пространство разбивается на две части по линии ??1 = ??1?:
  
  Все точки, у которых ??1 ? ??1, находятся слева от линии.
  
  Все точки, у которых ??1 > ??1?, находятся справа от линии.
  
  Геометрически это означает, что пространство делится вертикальной линией.
  
  Второе разбиение:
  
  Теперь каждая из двух частей пространства рассматривается отдельно.
  Предположим, что в левой части (??1 ? ??1?) выбирается признак ??2?
  и пороговое значение ??2?.
  Пространство теперь делится горизонтальной линией ??2 = ??2?:
  
  Все точки, у которых ??2 ? ??2?, находятся ниже линии.
  
  Все точки, у которых ??2 > ??2?, находятся выше линии.
  
  Геометрически это означает, что левая часть пространства
  теперь делится горизонтальной линией.
  
  Вот наглядный геометрический пример работы дерева решений
  в двумерном пространстве признаков для классификации чая:
  вкусный или нет, на основе его температуры и сладости.
  
  Рис. Зеленый цвет означает что чай вкусный, красный - что чай не вкусный.
  Пороговое значение для температуры - 30 градусов,
  сладость является бинарным признаком
  
  Вернёмся опять к нашему датасету с кругами
  и построим три дерева решений:
  первое будет работать с исходными данными,
  второе - с данными, предварительно преобразованными
  с помощью функции ?( x12, x22, sqrt(2)x1x2)
  а третье - с использованием предварительно ядра RBF.
  И посмотрим, как будет различаться структура дерева.
  
  ......
  
  Как видим, даже несмотря на то, что алгоритм сам по себе
  не трансформирует пространство признаков
  и успешно справляется с нелинейной задачей в исходном,
  использование трюка с ядром или трюка с подъемом
  может упростить разделение данных для дерева решений
  и уменьшить структуру дерева.
  
  \\\ Если мы рассматриваем задачи машинного обучения и анализа данных
  \\\ через призму пространственных преобразований,
  \\\ это позволяет нам не только уменьшить "переобучение" нашего мышления
  \\\ на отдельных методах,
  \\\ но и применять разнообразные подходы к решению задач,
  \\\ гибко адаптируя используемые методы и технологии.
  
  Надеюсь, что я смог донести свою идею понимания работы с ядрами
  и пространствами.
  Это была первая часть, и здесь мы рассмотрели теорию.
  В скором времени я планирую выпустить вторую часть
  и показать различные алгоритмы, модели и архитектуры, использующие ядра,
  уже на практике, в том числе и из собственных разработок.
  
  Дополнительные источники
  
  Gregory Gundersen - Implicit Lifting and the Kernel Trick
  
  Wikipedia - Positive-definite kernel
  
  Wikipedia - Mercer's theorem
  
  .......
  
  //// Из комментариев.
  
  snackTate
  18 мая в 13:12
  
  Первый материал, объясняющий kernel trick практически на пальцах,
  который я встретил на русском языке.
  Примите благодарность)
  
  //// Конец цитирования.
  
  Итак, какие можно попытаться сделать выводы из достаточно добротного материала?
  Во-первых, использование нелинейности в ряде случаев эквивалентно
  преобразованию размерности пространства,
  которое, в свою очередь, облегчает решение ряда задач.
  Причем, в ряде случаев утверждается, что такое расширение размерности
  может достигать "бесконечности", хотя интуитивно это и осталось непонятным.
  Т.е. по формулам все вроде понятно, а вот какая-то понятная картинка в голове
  для такого представления как-то не складывается.
  Так что "гауссово ядро" пока берется только на заметку.
  Может быть в следующих материалах, что-то лучше прояснится.
  
  Во-вторых, наблюдается некая "несбалансированность" этих математических трюков
  в отношении "понижения размерности", например, те же свертки,
  или не соответствия требованиям теоремы Мерсера.
  Что в таких случаях происходит с размерностью пространства представлений,
  остается ли оно всегда "целочисленным",
  решение каких задач при этом упрощается/усложняется,
  или тут возможны какие-то еще варианты
  - пока неясно.
  Тоже будем ждать "следующего номера журнала".
  
  Основная проблема/задача представляется сейчас,
  как поиск/нахождение какого-то внятного примера
  "дробноразмерного" представления внутреннего пространства нейросети.
  Что-то подобное тому, что представлено в предыдущем материале,
  но с каким-то более простым "математическим обоснованием".
  
  
  =========
  
  Тральщик Наставник. Модель Kandinsky 2.1 нарисовала:  8b1392438b4840c3a9fd82feeca6f43e_00000
  
  Тральщик Наставник. Модель Kandinsky 3.0 нарисовала:  583ccd5375764c01ae1324e4aaf27fd7_res_00000_image
  
  Тральщик Наставник. Модель Kandinsky 3.0 нарисовала:  0c9d2156b0a642049673cb8def4de2b6_res_00000_image
  
  Тральщик Наставник. Модель Kandinsky 3.1 нарисовала:  dcc1e4fb7a0c46758cdc04dd43b10fd2_res_00000_image
  
  Тральщик Наставник. Модель Kandinsky 3.1 нарисовала:  63b593fd-dfd8-4d91-bbce-9153058b5954
  Flag Counter
  Free counters!
  
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"