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

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

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Проработка гипотезы о фрактальной структуре эмбеддингов.
    Крайнее изменение 05.11.2024

  
  "Есть многое на свете, друг Горацио,
  что непонятно нашим мудрецам."
  
  Вильям Шекспир - "Гамлет".
  
  Оглавление:
   Вместо предисловия.
   "Простенький" мысленный эксперимент.
   Продолжение мысленного эксперимента.
   Еще немного мысленного экспериментирования.
   Предистория и послесловие к мысленному эксперименту.
   Маленькая иллюстрация к эксперименту с просторов Инета.
   От "ландшафта задачи" к "рельефу решения".
   Обсуждение "ландшафта" и "рельефа" с Copilot.
   Фрактальность пространства смешанных состояний.
   Немножко о математических трюках в пространствах нейронок.
   "Black box AI is bad AI".
   Эксперименты с комплексной фазой в структуре эмбеддинга.
   Задача о "многоуровневом" RGB-пространстве эмбеддингов. F
   А что будет, если немного повращать эмбеддинги?
   Разреженные эмбеддинги и сгруппированные ансамбли нейронов.
   А теперь еще и "контекстные" эмбеддинги.
   К вопросу о сравнении эмбеддингов разными "расстояниями".
  
  Иллюстрации:
   Тральщик "Наставник" от "Модели 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 практически на пальцах,
  который я встретил на русском языке.
  Примите благодарность)
  
  //// Конец цитирования.
  
  Итак, какие можно попытаться сделать выводы из достаточно добротного материала?
  Во-первых, использование нелинейности в ряде случаев эквивалентно
  преобразованию размерности пространства,
  которое, в свою очередь, облегчает решение ряда задач.
  Причем, в ряде случаев утверждается, что такое расширение размерности
  может достигать "бесконечности", хотя интуитивно это и осталось непонятным.
  Т.е. по формулам все вроде понятно, а вот какая-то понятная картинка в голове
  для такого представления как-то не складывается.
  Так что "гауссово ядро" пока берется только на заметку.
  Может быть в следующих материалах, что-то лучше прояснится.
  
  Во-вторых, наблюдается некая "несбалансированность" этих математических трюков
  в отношении "понижения размерности", например, те же свертки,
  или не соответствия требованиям теоремы Мерсера.
  Что в таких случаях происходит с размерностью пространства представлений,
  остается ли оно всегда "целочисленным",
  решение каких задач при этом упрощается/усложняется,
  или тут возможны какие-то еще варианты
  - пока неясно.
  Тоже будем ждать "следующего номера журнала".
  
  Основная проблема/задача представляется сейчас,
  как поиск/нахождение какого-то внятного примера
  "дробноразмерного" представления внутреннего пространства нейросети.
  Что-то подобное тому, что представлено в предыдущем материале,
  но с каким-то более простым "математическим обоснованием".
  
  
  =========
  
  01.06.2024 17:30
  
  "Black box AI is bad AI".
  В оглавление.
  
  Появилась коротенькая заметка о новом методе дообучения/настройки нейросетей,
  представляющая очень большой интерес именно в контексте данного модуля,
  так как в его основе лежит попытка, если и не понимания природы эмбеддингов,
  то попытка просто воздействовать на него "методом грубой силы":
  
  "Как устроен Representation Finetuning,
  родившийся из идеи интерпретируемости LLM"
  Автор: derunat (Natalia Deryugina)
  https://habr.com/ru/articles/818357/
  30 мая 2924 в 15:04
  
  //// Начало цитирования.
  
  Black box AI is bad AI
  - гласит слоган исследовательской группы Pr(AI)2R
  (Practical AI Alignment and Interpretability Research).
  Её основал прошлым летом стэнфордский автор Аттикус Гигер (Atticus Geiger).
  Своей миссией группа считать превратить AI в "хороший AI",
  то есть сделать его интерпретируемым.
  
  Пока авторы выпустили три работы:
  Rigorously Assessing Natural Language Explanations of Neurons
  https://arxiv.org/abs/2309.10312
  (лучшая статья 2023 по версии BlackBoxNLP),
  в которой попытались провести интерпретацию на уровне нейронов,
  Linear Representations of Sentiment in Large Language Models,
  https://arxiv.org/abs/2310.15154
  где исследовали репрезентацию настроения в LLM и
  RAVEL: Evaluating Interpretability Methods on Disentangling Language Model Representations,
  https://arxiv.org/abs/2402.17700
  где представили бенчмарк для оценки интерпретируемости.
  Есть и более ранние работы Гигера,
  в частности, он предложил исследовать внутренности LLM с помощью интервенций
  (изменения внутренних состояний).
  Суть проста: если зафиксировать скрытое состояние,
  и выход модели поменяется так,
  как будто какой-либо компонент производил это состояние,
  то это даёт нам право установить причинно-следственную связь.
  Но тут расскажем о том,
  к каким конструктивным идеям приводит исследование интерпретируемости.
  Как говорится, критикуешь - предлагай.
  
  Работы по интерпретируемости LLM приводят к выводу
  - скрытые состояния трансформера скрывают в себе
  много семантической информации.
  Именно они, а не веса.
  //// Т.е. любой эмбеддинг является "сверткой" семантической информации,
  //// а "веса" нейросети больше средств по ее расшифровке/преобразованию.
  Опираясь на это авторы из Стэнфорда, в том числе и Гигер,
  пришли к гипотезе
  - донастройка модели должна модифицировать не веса,
  а скрытые состояния.
  //// Т.е. оказать влияние на эмбеддинг/латент.
  Да, обновление небольшой доли весов LLM
  действительно позволяет эффективно донастроить её под нужную задачу,
  и эта мысль породила успешные и ставшие классическими LoRA и DoRA,
  но если учесть интерпретируемость,
  то результаты оказываются ещё лучше.
  
  Новый метод авторы назвали по аналогии с PEFT (Parameter-efficient finetuning)
  - ReFT, Representation Finetuning (статья).
  https://arxiv.org/pdf/2404.03592.pdf
  Он основан на тех самых интервенциях, которые предложил Гигер.
  Модифицировать будем не веса,
  а прямо самые скрытые состояния.
  Интервенция (I) состоит из трёх компонентов
  - собственно функции интервенции (Ф) и своего рода координат L и P.
  Первая "координата" указывает на то,
  какой слой скрытых состояний мы изменяем,
  а вторая - какие из токенов.
  
  ......
  
  На примере с картинки выше интервенция касается
  только репрезентаций двух токенов (1 и 3) со слоя 2.
  Другие состояния при этом не затрагиваются.
  Это тоже важное отличие от PEFT методов,
  в которых обновляются все внутренние состояния.
  Ф забирает значение состояния сразу же,
  как только оно посчитано и возвращает в то же место.
  То есть на следующий слой подаётся уже измененное состояние.
  
  Этот подход определяет сразу целое семейство методов.
  Один из возможных методов реализовали сами авторы в той же работе.
  Это Low-Rank Linear Subspace ReFT (LoReFT).
  Функция интервенции в этом случае содержит три обучаемых параметра
  - две матрицы R и W, и вектор b
  
  .......
  
  В экспериментах с LoReFT изменяли только состояния
  для двух первых и двух последних токенов.
  Остальные не трогали.
  В блоге авторы признаются, что вообще-то не ожидали большого успеха от метода.
  Интерес был скорее теоретический, с точки зрения интерпретируемости.
  А вышло, что LoReFT обошла текущий state-of-the-art
  //// Что и следовало ожидать, так воздействие на эмбеддинги/латтенты
  //// более гибкое воздействие и, потенциально, более тонкая настройка
  //// на конкретную задачу, чем воздействие на всю структуру сети,
  //// при использовании весов параметров и даже функций активации нейронов.
  
  .......
  
  Что же из этого следует?
  Во-первых, обнаружилось,
  что интервенция во входные токены влияет на токены всех поколений.
  То есть можно контролировать все поколения,
  поместив несколько начальных токенов в нужные состояния.
  Например, на картинке сверху на графике для instruct-tuning,
  LoReFT обошла текущего лидера,
  с помощью интервенции в 4 токена 4 первых слоев.
  Во-вторых, ReFT даёт новые инсайты
  для дальнейшего изучения интерпретируемости.
  //// Но это только потенциально - каких-то действительно новых "инсайтов",
  //// вроде, пока не наблюдается.
  Пока авторы делают вывод,
  что возможно сопоставлять нейроны каким-то словам вообще не имеет смысла.
  //// Ну, наконец-то, хоть кто-то заметил, "что четвертой стороны у сарая нет".
  Возможно, у них нет никакой "специализации",
  //// А это уже совсем серьезно. А что тогда есть?
  точнее есть, но меняется с каждым новым входным запросом.
  //// Т.е. есть некое согласование между структурой эмбеддинга/латента
  //// и "специализацией нейрона".
  //// И как такое согласование/соответствие обычно называется?
  //// А если вспомнить такое слово как "голограмма" - "инсайты" не появятся?
  Что еще более важно,
  то, что кодируют нейроны,
  зависит от исходных вычислений,
  в которых они участвуют.
  //// Так и просится на язык термин "интерференция", "фазовая автоподстройка".
  //// Ну ладно, подождем терминов "принятых мировым сообществом ...".
  
  Почему LoReFT работает?
  Иронично, но авторы пока не очень понимают,
  снова получается black box.
  //// Просто блеск.
  Но надеются понять из экспериментов
  - изучать численные пределы
  и из этого попробовать выяснить секрет действия.
  //// А попробовать рассмотреть не "пределы", а "структуру" - слабо?
  Например, авторы взяли один промпт на английском
  и обучали интервенции восстанавливать начало Алисы в стране чудес.
  То есть пытались проверить сколько слов может удержать одна интервенция,
  изменяя количество слоёв и токенов.
  Оказалось - до 2048 слов.
  //// О, какая может быть "информационная емкость" одного токена.
  
  ......
  
  Чтобы легче было перейти с PEFT на ReFT,
  авторы создали библиотеку pyreft - можно пробовать.
  https://github.com/stanfordnlp/pyreft
  
  ........
  
  //// И ни одного комментария. Наверное, ни у кого нет слов.
  //// Настолько всем все стало "понятно".
  
  //// Конец цитирования.
  
  Не знаю как Вам, а для меня это прям как "бальзам на душу".
  Ну хоть кто-то всерьез заинтересовался возможностью
  целенаправленно воздействовать на эмбеддинги/латенты,
  а не просто использовать их "как есть",
  и сразу же, просто по приколу, получили state-of-the-art (SOTA)
  - заветную цель каждого истинного "датасатаниста".
  Может это хоть как-то стимулирует интерес к этой области исследований.
  
  
  ========
  
  01.06.2024 18:41
  
  Эксперименты с комплексной фазой в структуре эмбеддинга.
  В оглавление.
  
  А вот достаточно интересный эксперимент с попыткой обнаружения
  в структуре эмбеддингов "комплексной фазы":
  
  "WaveSync: Новый путь к нелинейному анализу эмбеддингов".
  Автор: Flokis_guy (Liubomyr Horbatko)
  https://habr.com/ru/articles/798447/
  06 мар 2024 13:31
  
  //// Начало цитирования.
  
  Немного патетики
  
  Для семантического анализа обычно используется косинусное сходство
  - довольно привычный и всем понятный инструмент.
  В современном мире NLP часто отдается предпочтение
  более эффективным эмбеддингам на основе LLM
  в отличие от более классических CountVectorizer
  или, скажем, TF-IDF.
  И казалось бы, да, у нас есть многомерный вектор,
  мы вычислили сходство, оно работает,
  ведь в самом эмбеддинге зашито множество семантических связей,
  и все круто и классно.
  Но иногда хочется посмотреть на это все с другой стороны,
  со стороны нелинейных и потенциально более мощных алгоритмов,
  ведь есть вариант улучшить либо само качество эмбеддингов,
  либо то, как мы их сравниваем.
  И так как в статье мы будем рассматривать второй вариант,
  то сразу скажу,
  что можно использовать взаимную информацию или коэффициент D Хеффдинга.
  Но здесь речь пойдет о временных рядах
  и немного о частичке теории динамических систем и теории хаоса,
  что довольно удивительно.
  Надеюсь, я заинтриговал, и поэтому сейчас расскажу
  о мотивации использования этих подходов, алгоритме
  и, вообще, в чем вся суть.
  
   Код алгоритма доступен на GitHub.
  
   Для создания всех эмбеддингов будет использоваться модель UAE-Large-V1.
  
  Мотивация
  
  Возможно, некоторые из читателей задались вопросом,
  как мы можем применить способы анализа временных рядов к нашему эмбеддингу.
  
  Так вот:
  
  Эмбеддинги являются, в основном, многомерными векторами.
  Возьмем, ради примера, длину вектора в 1024 единицы.
  Нам никто не мешает его разложить на временной ряд,
  просто представив, что каждый индекс
  - это определенный момент времени.
  Собственно, почему бы и нет, главное - чтобы был результат.
  
  Вот как выглядит наш эмбеддинг,
  если его подать как временной ряд, немного похож на сигнал, не так ли?
  
  Рис. Эмбеддинг предложения "A man is playing music."
  разложенный как временной ряд.
  
  Красные точки - это наши значения вектора,
  фактически их можно считать как локальные экстремумы нашего временного ряда,
  то есть они несут самую ценную информацию о нем.
  
  Предлагаю также посмотреть на эти <сигналы>,
  которые похожи по семантическим связям, а которые нет.
  Вот, кстати, попробуйте понять, кто схож, а кто нет.
  
  Если вы смогли понять, что 1 и 3 являются более похожими,
  то это круто,
  но не всегда это бывает возможным.
  Поэтому я предлагаю посмотреть на алгоритм,
  который как раз таки на это способен.
  
   Первый вектор был - "A man is playing music."
  
   Второй вектор был - "A panda is climbing."
  
   Третий вектор был - "A man plays a guitar."
  
  Алгоритм
  
  Я провёл некоторые исследования,
  и главными критериями была точность и скорость выполнения.
  Так вот, лучше всего себя показали вейвлет-преобразования
  в связке с коэффициентом фазовой синхронизации.
  
  Сам алгоритм выглядит следующим образом:
  
  Нормализация векторов
  
  Первым шагом алгоритма является нормализация векторов.
  Этот процесс важен для обеспечения того,
  чтобы все векторы имели единую длину.
  
  Преобразование в комплексные векторы
  
  Этот шаг включает в себя преобразование обычных векторов в комплексные,
  что позволяет нам работать не только с амплитудой значений,
  но и с их фазой.
  Для этого мы разделяем каждый нормализованный вектор на две части:
  первая половина становится действительной частью комплексного числа,
  а вторая - мнимой.
  Этот процесс обогащает наши данные,
  добавляя дополнительный уровень информации,
  который будет использован в дальнейшем анализе.
  
  Вот пример работы:
  
  Возьмём вектор V = [ 1, 2, 3, 4].
  
  Шаг 1: Разделение вектора
  
  Первое, что нам нужно сделать, это разделить вектор на две части.
  Поскольку в нашем векторе четыре измерения,
  мы разделяем его пополам:
  
   Первая половина: [ 1, 2]
  
   Вторая половина: [ 3, 4]
  
  //// Это главное новшество данного эксперимента.
  //// Причем, метод разбиения, на самом деле, оказывается не так важен.
  
  Шаг 2: Создание комплексного вектора
  
  Теперь мы преобразуем эти две части в комплексный вектор,
  где первая половина будет действительной частью,
  а вторая половина - мнимой.
  Таким образом, каждый элемент первой половины соединяется
  с соответствующим элементом второй половины
  для формирования комплексных чисел:
  
   Комплексный элемент 1: 1 + 3i
  
   Комплексный элемент 2: 2 + 4i
  
  Результат
  
  Итак, наш исходный вектор V = [ 1, 2, 3, 4] преобразуется в комплексный вектор:
  
  Vкомплекс? = [ 1 + 3i , 2 + 4i ].
  //// Представление эмбеддинга в виде комплексного
  //// или, даже, гиперкомплексного вектора,
  //// на самом деле не суть важно.
  //// Просто под такое представление есть отработанные методы.
  
  Вычисление вейвлет-преобразования
  
  Далее, применяя вейвлет-преобразование
  к полученным комплексным векторам,
  мы разлагаем каждый вектор на компоненты,
  которые лучше описывают локальные особенности данных.
  Вейвлет-преобразование позволяет анализировать эмбеддинги на разных масштабах,
  выделяя как высокочастотные, так и низкочастотные особенности.
  
  Вычисление фазовых характеристик и средней фазовой синхронности
  
  После вычисления вейвлет-коэффициентов
  мы переходим к анализу фазовых характеристик.
  Фазовая информация позволяет нам оценить,
  насколько синхронно изменяются различные части эмбеддингов.
  Вычисление средней фазовой синхронности между парой эмбеддингов
  дает представление о степени их семантической связанности.
  
  Вычисляется по формуле:
  \ hat{\rho} = \left| \frac{1}{N} \sum_{n=1}^{N} e^{j(\phi_1(t_n) - \phi_2(t_n))} \right|
  
  Где ?1?(tn?) и ?2?(tn?) - это фазовые углы двух сигналов в момент времени tn?.
  
  При точном совпадении фаз коэффициент равен единице,
  при отсутствии синхронизации - нулю,
  что очень удобно для нас.
  
  Вот еще для наглядности при применении к временным рядам
  
  После вычисления коэффициента фазовой синхронизации,
  мы переходим к вычислению улучшенной мере фазовой синхронности (P).
  
  \begin{align*} {V} &= 1 - \hat{p} \\ \hat{P} &= (1 - {V}) \cdot \hat{p} \end{align*}
  
  Улучшенный коэффициент фазовой синхронности P
  предоставляет более точную оценку синхронизации сигналов,
  компенсируя колебания синхронности за счёт включения меры вариативности V.
  
  Расчет Окончательного Результата
  
  После того как мы получили нормализованные
  и преобразованные в комплексные числа вектора
  и вычислили их вейвлет-преобразования,
  а также фазовые характеристики,
  мы переходим к ключевому этапу алгоритма
  - расчету окончательного результата сравнения векторов.
  
  Окончательный результат для каждого вектора из списка
  получается комбинированием фазовой синхронности и косинусного сходства.
  Это делается путём умножения фазовой синхронности
  на модифицированное косинусное сходство:
  ps * (0.5 * (cs + 1)),
  где ps - улучшенный коэффициент фазовой синхронности(P),
  cs - косинусное сходство.
  Модификация косинусного сходства (0.5 * (cs + 1))
  переводит его диапазон из [-1, 1] в [0, 1],
  чтобы обеспечить положительное влияние на итоговую метрику.
  
  По поводу гиперпараметров в вейвлет-преобразованиях
  
  В целом Вейвлеты Добеши (Daubechies) лучше всего подходят.
  Вейвлеты Добеши обозначаются как dbN,
  где N указывает на порядок вейвлета.
  Порядок вейвлета влияет на его способность захватывать информацию
  о сигнале и шуме в данных.
  
  Стандартные гиперпараметры - db4, а уровень декомпозиции - 4.
  
  Для более тонких семантических взаимосвязей:
  
  Вейвлеты нижнего порядка, такие как Daubechies (db2, db3),
  могут быть более подходящими,
  поскольку они обеспечивают лучшую локализацию во времени
  и позволяют выделить более точные и локализованные семантические взаимосвязи
  в данных.
  
  Для более глобальных паттернов:
  
  Вейвлеты высшего порядка, такие как Daubechies (db4, db6 и выше),
  предпочтительнее для анализа глобальных паттернов.
  Их гладкие и длинные фильтры помогают захватывать более широкие
  и гладкие семантические структуры в данных,
  игнорируя мелкие детали.
  
  Уровень декомпозиции
  
  Формула для определения максимально возможного уровня декомпозиции N
  при выполнении вейвлет-преобразования сигнала.
  Эта формула помогает гарантировать,
  что декомпозиция сигнала будет выполнена без потери информации
  и без превышения границ,
  заданных длиной сигнала L и длиной используемого вейвлет-фильтра Lfilter?.
  
  N = \left\lfloor \log_2\left(\frac{L}{L_{\text{filter}}}\right) \right\rfloor
  
  где:
  
   N - рекомендуемый уровень декомпозиции.
  
   L - длина сигнала.
  
   Lfilter? - длина (или количество коэффициентов) вейвлет-фильтра,
   используемого для анализа.
   Это значение зависит от выбранного вейвлета
   и обычно находится в диапазоне от 2 до 20.
   Для конкретных вейвлетов, таких как Daubechies,
   Lfilter? увеличивается с увеличением порядка вейвлета.
  
  Тесты Алгоритма
  
  Тестирование алгоритма будет происходить в двух видах:
  просто с синтетическими векторами, а также эмбеддингами.
  
  ......
  
  Результат:
  
  Похожие
  [0.9946460671728045, 0.9875065629124861, 0.989072345923832, 0.991220540585618, 0.9954265121946134]
  
  Разные
  [0.005015474802584571, 0.004847775250650383, 0.0012281423357652212, 0.006391884708080264, 0.0002667694383566343]
  
  Противоположный
  [0.0]
  
  Вот для сравнения при использовании косинусного сходства:
  
  Похожие
  [0.9998493328107453, 0.9998563262925324, 0.9998411950733593, 0.999847887188542, 0.9998466519512551]
  
  Разные
  [0.7358156012914848, 0.7530882884696813, 0.7373955262095263, 0.7466333075853196, 0.7318980690691882]
  
  Противоположный
  [-1.0]
  
  По результату видно, что алгоритм идеально справляется
  с пониманием сходства векторов,
  также интеграция в него косинусного сходства
  позволяет учитывать направление векторов,
  что очень важно, и поэтому для противоположных мы получаем - 0.0.
  
  Теперь на реальных предложениях:
  
  ....
  
  sentences = [
  "An animal is biting a person's finger.",
  "A woman is reading.",
  "A man is lifting weights in a garage.",
  "A man plays the violin.",
  "A man is eating food.",
  "A man plays the piano.",
  "A panda is climbing.",
  "A man plays a guitar.",
  "A woman is slicing meat.",
  "A men is playing music on piano on the street for cat."]
  
  .......
  
  Запрос: "A man is playing music."
  
   "An animal is biting a person's finger." - 0.04
  
   "A woman is reading." - 0.02
  
   "A man is lifting weights in a garage." - 0.06
  
   "A man plays the violin." - 0.29
  
   "A man is eating food." - 0.09
  
   "A man plays the piano." - 0.35
  
   "A panda is climbing." - 0.01
  
   "A man plays a guitar." - 0.51
  
   "A woman is slicing meat." - 0.01
  
   "A men is playing music on piano on the street for cat." - 0.31
  
  Как видим, алгоритм прекрасно понимает разницу между эмбеддингами,
  и благодаря модернизации коэффициента фазовой синхронизации,
  алгоритм более тонко реагирует на различия между ними.
  
  Скорость
  
  На одной системе при 100 000 сравнениях векторов размером 1024
  при стандартных гиперпараметрах,
  средняя скорость одного сравнения составляла - 2e-4 секунды,
  когда только косинусное сходство имело - 8e-6.
  
  Даже несмотря на большую разницу в скорости,
  учитывая подход WaveSync,
  скорость по-прежнему довольно высока, и в большинстве задач,
  где не требуется обработка сверхогромного количества встраиваний,
  он хорошо себя показывает,
  но в любом случае есть вариант сначала отсеять самые непохожие,
  используя косинусное сходство, а потом применить WaveSync.
  
  Вывод
  
  Временные ряды, вейвлеты и прочее - это замечательно,
  но в чём же заключается главное преимущество алгоритма?
  
  Главное преимущество алгоритма
  по сравнению с использованием косинусного сходства
  состоит в его способности более эффективно и точно
  различать похожие и разные вектора.
  Это обеспечивает более ясную интерпретацию результатов
  для аналитических целей.
  
  Моя цель была демонстрация того,
  как с помощью нестандартного подхода к анализу временных рядов
  можно достичь замечательных результатов,
  которые полностью конкурентоспособны с косинусным сходством
  по скорости и точности
  за счёт анализа нелинейных зависимостей.
  Это позволяет взглянуть под новым углом на работу с эмбеддингами в NLP
  и, в общем, на сравнение многомерных векторов.
  
  Если у вас есть идеи, вопросы или предложения,
  буду рад их видеть в комментариях.
  
  ........
  
  //// Из комментариев.
  
  krisgrey
  19 часов назад
  
  Было бы интересно узнать, как влияет
  другой способ выбора действительной и мнимой части на результат.
  Что не понятно - какие понятия описывает первая часть эмбединга,
  а какие - вторая.
  Что будет, если выбирать парные точки сигнала?
  
  Также любопытно было бы обобщить этот подход на многомерные сигналы,
  выполняя разбиение не только на действительную и мнимую часть,
  но на кватернион, допустим.
  0
  
  Flokis_guy
  9 часов назад
  
  Способ получения мнимых компонент не сильно отражается на общем анализе,
  //// Вот это самый важный момент в этом эксперименте.
  //// !!!Не пропустите случайно!!!
  в любом случае алгоритм успешно определит схожие и различые вектора,
  при чем, чувствуя различные детали из-за фазовой синхронизации.
  
  Если получать мнимые компоненты последовательно к примеру,
  то на практике в основном различия есть в масштабе,
  при синтетическом наблюдается различия между каждым кластером компонент,
  и это тоже нормально,
  так как банально меняя гиперпараметры вейвлет-преобразования
  мы получаем внутри кластера то же другие результаты.
  
  Вот как выглядят при последовательном выборе мнимых компонент
  на практическом тесте, как в статье:
  
  [0.030232085679003352, 0.015492751507748755, 0.06165048558091049,
  0.28410146245018314, 0.07920580892911805, 0.3291238288004444,
  0.012666878254538197, 0.491305267183525, 0.012538072309331747,
  0.296305247221098]
  
  Побеждают те же в порядке убывания: 7, 5, 9, 3, 4, 2, 0, 1, 6, 8.
  
  Насчет кватернионов, возникает проблема понятие фазы,
  так как мы имеет дело с одномерным сигналом,
  поскольку традиционное понятие фазы,
  используемое в коэффициенте фазовой синхронизации,
  применимо к сигналам,
  представленным комплексными числами, отражающими одномерные колебания.
  0
  
  agershun
  13 часов назад
  
  Не похож эмбеддинг на сигнал.
  Ни визуально, не по характеристикам.
  Применять вейвлет-преобразование или преобразование Фурье
  к любому набору чисел,
  конечно, можно,
  но зачем?
  Зачем применять процедуру, которая на два порядка медленнее
  косинусного сходства
  и дает непонятный результат?
  //// Потому, что эмбеддинг это не набор чисел с "псевдослучайным распределением",
  //// а определенная ВЗАИМОСВЯЗАННАЯ СТРУКТУРА данных,
  //// и анализ ее именно как "взаимосвязанной структуры"
  //// практически любым известным способом,
  //// чаще всего, будет давать лучшие результаты.
  
  Было бы замечательно, если бы Вы описали выгоду от применения данного подхода.
  Например, на небольшом датасете показали,
  что полученные результаты семантически ближе,
  чем при применении косинусного сходства.
  +2
  
  Flokis_guy
  10 часов назад
  
  Насчет сигнала все не так однозначно,
  если мы возьмем статью из Википедии в разделе "Definitions"
  то становится понятно,
  что эмбеддинги не являются сигналами в классическом смысле
  (как временное изменение физических величин),
  но они могут быть интерпретированы как сигналы
  в более широком смысле слова
  - как представления информации,
  способные нести и передавать смысловое содержание.
  Таким образом, применение методов анализа сигналов,
  включая вейвлет-преобразования,
  к эмбеддингам может быть оправдано
  в контексте извлечения, обработки и анализа закодированной в них информации.
  Так что это не просто "набор чисел".
  
  По поводу выгоды, я показал,
  что главная выгода это очень сильная реакция
  на разную синхронизацию сигналов по сравнению с косинусным сходством,
  что позволяет тонко различать семантические свойства.
  Что касается интерпретируемости,
  мы сталкиваемся с нелинейным алгоритмом,
  который, конечно, сложнее интерпретировать.
  0
  
  agershun
  10 часов назад
  
  Ключевое слово "временное изменение".
  Для эмбедингов перестановка местами измерений не играет вообще никакой роли,
  а для любого "временного сигнала" играет и еще какую.
  А так - да, конечно в эмбедингах безусловно есть информация
  как явная (собственно координаты точки в пространстве смыслов),
  так и косвенная (например, числа в векторе эмбединга
  распределены по нормальному закону).
  
  Вообще вместо косинусного расстояния или евклидового расстояния
  можно использовать еще много каких других функций,
  например, корень кубический из суммы кубов расстояний по осям
  или наоборот взять корень в степени 1.5
  от суммы расстояний в степени 1.5,
  и таким образом настроить чувствительность этой функции
  в какую угодно сторону.
  
  PS. В любом случае спасибо за статью и за интересный подход.
  0
  
  Flokis_guy
  9 часов назад
  
  Спасибо, да, расстояние Минковского то же довольно хорошая метрика,
  хотя как я наблюдаю не особо ее любят,
  все больше привычные как косинусное или эвклидову, даже Манхэттенское
  не так часто встретишь.
  0
  
  ......
  
  ///// Конец цитирования.
  
  Сразу оговорюсь, что я не сторонник использования вейвлет-преобразований
  для анализа структуры эмбеддингов/латентов.
  Нужны более хитрые/осмысленные алгоритмы для этой цели,
  которых, возможно, пока еще вообще нет.
  Хотя идея "внутренней фазы эмбеддинга" мне определенно нравится,
  и, может быть, стоит рассмотреть ее по-глубже.
  Кстати ближайший аналог, который при этом приходит в голову
  - это ..., та-дам, "кубит"!
  Что там слышно насчет скрещивания эмбеддингов и квантового компьютинга?
  Помнится, когда-то Бинг на что-то такое рекомендовал обратить внимание.
  
  Данным материалом хотелось показать,
  что даже при самом "наивном" или "грубом" к попытке анализа эмбеддинга
  не как простого вектора, а как взаимосвязанной структуры данных
  уже получаются интересные результаты.
  И это вполне можно рассматривать как, хотя бы, косвенное свидетельство
  самого наличия определенных структурных зависимостей даже
  в простейшем эмбеддинге/латенте.
  И речь должна идти о "похожести" эмбеддингов в широком смысле,
  а не только в контексте "расстояния" между ними.
  Так что поиск в этом "структурном" направлении вовсе не бессмысленен,
  и, потенциально, очень перспективен.
  
  
  =========
  
  22.06.2024 16:20
  
  Задача о "многоуровневом" RGB-пространстве эмбеддингов.
  В оглавление.
  
  Взяв курс на поиск "дробной размерности" в "многоуровневом пространстве решений",
  интересно попробовать прикинуть "адекватность" этой гипотезы/концепции
  применительно к эмбеддингам/латентам какой-то реальной нейросети.
  Подробнее об этой концепции можно посмотреть здесь:
  "Размышления о работе над проектом во II квартале 2024г."
  
  И как обычно это бывает при появлении новой гипотезы,
  тут же "под руку" попадается какой-нибудь подходящий материал:
  
  "AI фэшн-стилист-колорист
  или как научить модель различать 16,7 млн оттенков
  без их текстового представления".
  Автор: neoflex (Елизавета Курочкина)
  https://habr.com/ru/companies/neoflex/articles/823326/
  21 июн 2024 в 11:36
  
  //// Начало цитирования.
  
  .........
  
  Небольшое интро, в котором многие себя узнают
  
  Как часто, листая продуктовый каталог в интернет-магазине одежды,
  вы не находили товар нужного вам оттенка?
  
  .......
  
  Как специалисту по Data Science мне стало интересно изучить тему распознавания,
  сравнения и поиска по оттенкам еще и с профессиональной точки зрения.
  
  Очевидно, что давно пора переложить функционал
  по маркировке цвета товаров в интернет-магазинах
  на уже окрепшие плечи ИИ.
  Но как его научить <видеть> границы перехода одного оттенка в другой
  без передачи всех существующих кодировок и названий?
  
  К слову, определить точное количество оттенков в мире невозможно
  из-за многообразия комбинаций длины волны и интенсивности света,
  индивидуальных особенностей зрения и прочих факторов.
  Теоретически, их количество может быть бесконечным,
  но в данной статье я буду оперировать значением в 16,7 млн оттенков,
  которые насчитывает стандарт RGB.
  
  Основная часть, в которой вы поймете,
  при чем тут макароны с сыром, якоря и влюбленная жаба
  
  Одна из важнейших задач технологий компьютерного зрения
  - представление изображений в виде семантически релевантных <эмбеддингов>
  (англ. embeddings, они же - <вектора признаков>).
  Эти данные используются для решения широкого круга задач,
  например, поиска изображений, детекция объектов на фото и видео,
  классификация, кластеризация.
  
  Цвет в этом представлении - один из фундаментальных атрибутов,
  сложность определения которого обусловлена влиянием
  множества вышеупомянутых факторов.
  
  Большинство подходов к описанию цветов основано на их названиях
  - лингвистических единицах и конструкциях,
  количество которых различается в разных языках.
  В большинстве работ по компьютерному зрению рассматриваются
  11 основных терминов английского языка:
  черный, синий, коричневый, серый, зеленый, оранжевый, розовый,
  фиолетовый, красный, белый и желтый.
  
  Однако, помимо привычных обозначений в жизни вы можете встретить
  (возможно, чуть реже) и такие: <лягушка в обмороке>,
  <цвет пергидрольной блондинки>, <макароны и сыр>
  и даже <цвет Хабрахабра>:
  
  Такое многообразие подчеркивает сложность проблемы.
  Очевидно, что для управления большим количеством представителей RGB
  необходимо отказаться от стандартной задачи классификации
  на основе машинного обучения,
  которая подразумевает использование текстовых
  или категориальных лейблов на этапе обучения модели.
  
  Ныряем вглубь Deep Learning
  
  На этом этапе я введу понятие
  <Сверточная нейронная сеть для создания векторных представлений>
  или Embedding Convolutional Neural Network,
  проще - Embedding CNN.
  
  Понятнее будет описать ее в сравнении с Classification CNN
  (<классифицирующая сверточная нейронная сеть>),
  традиционно используемой для решения задач классификации изображений
  на основе на основе глубокого обучения (Deep Learning).
  
  Classification CNN предназначена для задач классификации,
  где цель - определить, к какому классу относится входной объект.
  
  В выходном слое такой сети обычно используется softmax или sigmoid функция,
  которая преобразует выходные значения
  в вероятности принадлежности к каждому классу.
  
  Embedding CNN используется для создания
  векторных представлений (эмбеддингов) входных данных,
  которые сохраняют семантическую близость между объектами.
  
  Вместо того, чтобы прямо предсказывать класс,
  Embedding CNN обучается сохранять структуру данных
  в низкоразмерном пространстве эмбеддингов;
  //// Вот это самый интересный момент.
  //// Какой размерности будет это пространство эмбеддингов?
  //// Т.е. так сказать "номинальное" - соответствующее количеству элементов эмбеддингов,
  //// и "фактическое" - отражающее внутреннюю взаимосвязи этих элементов.
  
  Обычно не использует функцию активации в выходном слое.
  
  При проектировании архитектуры своей Embedding CNN
  я решила использовать Triplet Loss Architecture
  (<Архитектура нейронной сети с триплетной функцией потерь>),
  на обучение в которую передаются наборы из трех объектов (триплеты):
  
  .......
  
  anchor (<якорь>) - якорное изображение,
  относительно которого производится сравнение;
  
  positive (<позитивное представление>) - изображение,
  которое должно быть распознано как похожее;
  
  negative (<негативное представление>) - изображение,
  которое должно быть распознано как непохожее.
  
  Глобальная цель обучения модели состоит в том,
  чтобы научить её извлекать признаки из данных таким образом,
  чтобы схожие объекты были приближены друг к другу в пространстве признаков,
  а несхожие объекты - удалены друг от друга.
  
  Определяющий компонент этой архитектуры - <Триплетная функция потерь>
  (Triplet Loss).
  Она минимизирует разницу между расстоянием у похожих объектов
  и расстоянием у разных объектов,
  прибавляя заданное пороговое значение(margin).
  
  В процессе обучения происходит её минимизация,
  что способствует улучшению способности модели определять эмбеддинги.
  Такая архитектура является видом Distance-Based Networks
  (сетей, основанных на измерении расстояний)
  и решает задачи Distance Metric Learning (обучения метрикам расстояния).
  
  Триплетные архитектуры активно используются в системах распознавания лиц,
  когда необходимо не только классифицировать лицо,
  но и сохранить сходство между разными фотографиями одного человека,
  учитывая различия в возможных атрибутах,
  таких как возраст, освещение, выражение лица и т.д.
  
  После выбора архитектуры нейросети,
  написания слоев и встраивания триплетной функции потерь
  (в данном случае оказалось лучшим решением использовать подвид
  semi-hard triplet loss),
  я подошла к этапу компиляции и обучения модели.
  Возник вопрос: на чем и как ее обучить?
  
  Вернемся к исходной задаче:
  у нас есть интернет-магазин с коллекцией изображений одежды,
  и мы хотим подобрать вещи идентичных или очень близких цветов.
  У нас есть датасет - каталог товаров.
  Что использовать в качестве позитивных, негативных и якорных изображений,
  если наша цель - различие оттенков, а не категорий одежды?
  Где взять основополагающие якоря?
  
  Будем генерировать их сами!
  
  Если извлечь заданное количество доминирующих цветов на фото,
  рассчитать процент их пиксельного присутствия на изображении,
  применив метод кластеризации K-means,
  //// Вот этого момента не понял. Что именно и зачем используется?
  можно сгенерировать цветное изображение,
  состоящее из пикселей идентичных цветов и сохраняющее пропорции распределения.
  Оно будет в полной мере отображать уникальный набор цветов и оттенков
  для каждого изображения, выступающего как positive в обучающем триплете.
  //// Тут вопрос с цветом/цветами фона. Непонятно как они учитываются/исключаются.
  В качестве negative я подтягивала рандомно извлеченную картинку
  из всего датасета.
  
  Вот как выглядят якоря на практике после реализации механизма:
  
  ......
  
  Итак, модель была успешно запущена на обучение.
  //// Жалко нет конкретных примеров получившихся эмбеддингов,
  //// просто для иллюстрации.
  
  Часть, в которой мы увидим работу нашего AI фэшн-стилиста-колориста
  
  После обучения модели осталось реализовать механизм подбора похожих изображений
  с использованием метода k ближайших соседей
  (k-Nearest Neighbors algorithm, k-NN).
  Для этого мы будем вычислять евклидово расстояние (Euclidean distance)
  между векторами признаков, которые получим,
  пропустив пул изображений каталога товаров через модель.
  
  Ниже представлена визуализация проекции эмбеддингов датасета
  в многомерном пространстве скрытых слоев модели:
  
  .......
  
  //// Красивая картинка, но совершенно непонятная.
  //// Видно, что какая-то внутренняя логика присутствует,
  //// но какая именно загадка.
  
  Метод kNN сравнивает расстояния между эмбеддингами
  в векторном пространстве
  и выдает заданное количество k наиболее похожих (близких) изображений.
  
  Вот что у меня получилось после реализации механизма.
  Результаты поиска отсортированы в порядке убывания метрики схожести:
  
  Модель на этапе обучения <видела> только одежду.
  Будет ли она справляться с подбором товаров из других категорий?
  
  Да, и еще как.
  Нейросеть научилась различать именно цветовую палитру,
  не привязываясь к объектам на обучающей выборке.
  
  Прогоним через модель ту часть датасета,
  в котором находятся аксессуары, получим их эмбеддинги
  и произведем тот же способ подбора похожих для выбранного товара,
  сравнивая уже с пулом эмбеддингов аксессуаров.
  Вот что получаем:
  
  .....
  
  //// А что? Неплохо.
  
  
  А теперь отойдем от ограничений палитры цветов в каталоге товаров
  и попробуем выбрать любой желаемый оттенок из палитры RGB.
  Например, возьмем ранее упомянутый <цвет Хабрахабра> (RGB: 120,162,183)
  и подберем для него одежду и аксессуары.
  Создадим изображение, полностью окрашенное в этот цвет:
  
  Затем пропустим его через триплетную модель для извлечения эмбеддингов,
  применим знакомый механизм подбора похожих изображений
  и получим следующий результат:
  
  ......
  
  //// Тоже очень неплохо.
  //// Т.е. методика работает.
  
  Качество такого подбора ограничено лишь количеством товаров в магазине
  и их цветовым разнообразием.
  
  Цель достигнута:
  триплетная модель способна различать оттенки без их текстового описания.
  Уникальность этого подхода заключается в том,
  что для её обучения не потребовалось категоризировать
  и размечать каждое изображение индивидуально.
  
  Так, погружение в глубокое обучение позволило решить задачу
  поиска идеального сочетания вещей,
  а я вместе с тем поняла, что быть шопоголиком-Data Scientist-ом даже полезно:
  в попытках решить задачу подбора идеального образа
  можно приобрести ценный опыт работы с нейросетями
  и научиться <общаться> с ними без слов.
  
  Автор статьи: Елизавета Курочкина, Data Scientist в компании Neoflex
  
  ..........
  
  //// Конец цитирования.
  
  И так попробуем разобрать этот материал с точки зрения
  "многоуровневого пространства" эмбеддингов.
  Попытка такого разбора самая первая, так что - не судите строго,
  "первый блин всегда комом".
  
  Что имеем?
  На входе четкую картинку с конкретным товаром
  со своим индивидуальным распределением "оттенков".
  Картинка анализируется на предмет самых преобладающих оттенков,
  правда, не понятно, что делать с фоном.
  По результатам анализа генерируются новая картинка,
  в которой сохраняется только статистическое распределение оттенков.
  Причем каждый оттенок "трехмерный", соответствующий коду RGB.
  Обученная на таких "оттеночных" картинках нейронка,
  генерирует эмбеддинги неуказанной размерности,
  позволяющие, используя "эвклидово расстояние" между ними,
  находить самые различные товары "в тон".
  
  Не касаясь самой постановки/реализации задачи,
  попробуем понять, что же могут представлять собой эмбеддинги
  этих "оттеночных картинок" во "внутреннем пространстве" нейронки?
  И почему "евклидово расстояние" в этом случае работает?
  
  Начнем со второго вопроса, тут вроде понятно
  - "чему учили, то и получили" -
  эмбеддинги сформировались в результате определенного метода обучения.
  Но нужно отметить, что эти эмбеддинги не представляют собой
  некую усредненную оценку суммы "преобладающих оттенков",
  некую "серо-буро-малиновую" RGB-кодировку.
  Судя по представленным примерам, в эмбеддинге каким-то образом
  одновременно и сохраняется весь набор "преобладающих оттенков",
  и, тоже каким-то образом, формируется "общая тональность".
  
  И это все при том, что каждый "оттенок" имеет "трехмерное" RGB-представление.
  Вот именно этот факт меня и привлек к этому материалу
  в плане "многоуровнего пространства".
  Т.е., в первом приближении, можно предполагать,
  что пространство эмбеддингов в этом примере имеет, как минимум, два уровня,
  или даже три.
  
  Один уровень - это 3-мерное RGB-представление,
  второй - это размерность (количество элементов) эмбеддингов,
  явно больший чем размерность RGB-представления.
  Возможно, есть еще и одномерный уровень,
  представляющий указание на преобладающий на картинке оттенок,
  или вообще процент/долю его присутствия на картинке.
  И все это как-то кодируется в одном векторе (наборе элементов) эмбеддинга.
  
  Может ли концепция многоуровневых пространств,
  что-то прояснить в понимании такой достаточно простой ситуации.
  Или, наоборот, такое построение эмбеддинга подсказать в отношении
  самой концепции "многоуровневых пространств".
  Ведь кроме названия больше об этой концепции, собственно, и сказать нечего.
  Тут в одном эзотерическом тексте в Инете, вообще, утверждается,
  что само представление о "Многоуровневом Пространстве"
  за гранью человеческого понимания.
  https://mylektsii.ru/5-68867.html
  
  Понятно, что для такого представления,
  наверно, четырехэлементного вектора эмбеддинга будет недостаточно.
  Вроде, понятно, что и "расслоенные пространства" к этой задаче
  тоже, наверно, не применима.
  И на этом, пожалуй, и все что можно сказать "навскидку".
  А вот куда дальше "копать" совершенно непонятно,
  хотя на первый взгляд казалось, что подойдя с новой стороны,
  можно куда-то дальше продвинуться.
  Задача, вроде как, очевидней дальше некуда.
  
  Ладно, будем думать дальше.
  
  
  =========
  
  08.08.2024 15:45
  
  А что будет, если немного повращать эмбеддинги?
  В оглавление.
  
  Интересно все же наблюдать, как при полном "теоретическом игноре"
  отдельные энтузиасты все-таки пытаются чисто экспериментальным путем
  хоть чуть-чуть продвинутся в понимании или, хотя бы,
  в нащупывании практических приемов по работе в "пространстве эмбеддингов":
  
  "Как оживить Кандинский матрицами вращений для генерации видео (часть 1-я)".
  Автор: Tarzan3668 (Пузицкий Михаил)
  https://habr.com/ru/articles/830366/
  22 июл 2024 в 00:43
  
  //// Начало цитирования.
  
  Данная публикация о задаче text2video основана
  на моей недавней дипломной работе в магистратуре МФТИ и это моя первая статья.
  
  Первоначально тема моей магистерской работы формулировалась как -
  генерация видео на основе текстового описания и Stable Diffusion.
  К работе я приступил в начале октября 2023 года.
  К этому времени еще было мало публикаций на тему генерации видео
  и готового кода для решения задачи text2video.
  Тогда мне запомнились 2 проекта:
  Text2video-zero и ANIMATEDIFF.
  
  Рис. Text2video-zero
  
  В проекте Text2video-zero уже была статья от марта 2023г,
  в которой авторы предложили добавить временную ось
  в структуру диффузионной модели U-net,
  и учить модель генерировать сразу пакет кадров,
  обучая также на пакете последовательных изображений из видео.
  Что вполне логично.
  
  Рис. ANIMATEDIFF
  
  На сайте Stable Diffusion был заявлен проект ANIMATEDIFF,
  описывающий тестируемые командой подходы по генерации видео
  путем влияния на шум
  и за счет включения в готовые модели Text-2-Image
  различных LoRa адаптеров для модели Unet,
  которые должны обучаться,
  при заморозке основных слоев Unet,
  чтобы учитывать имеющиеся изменения в последовательных кадрах.
  
  Мне было интересно найти что-то свое,
  да и в целом, мое погружение в диффузионные модели
  еще было в самом начале на тот момент,
  и я решил пойти от самого простого.
  
  В чем же проблема при генерации видео из текста ?
  
  В отличие от генерации картинки,
  нам необходимо получить серию максимально близких изображений,
  в которых есть малые изменения, заданные самим текстом.
  
  Как видно из слайда, это не такое очевидное решение.
  
  По сути - глагол <моет> и должен дать связанные изменения,
  а от слов <мама> и <рама> картинки не должны меняться.
  Но как это сделать?
  
  Пиксельное и Clip пространства видео
  
  Сначала я глянул на пиксельное пространство.
  На слайде видны как кадры, так и изменения между ними.
  И от последнего кадра можно прийти к первому вычтя изменения.
  
  Далее стало интересно, а что же происходит с Clip векторами кадров
  и вытянутых в вектора матриц пикселей (flat векторы).
  А точнее как схожи эти типы векторов между разными кадрами.
  Для этого просто построил матрицы корреляций кадров между собой.
  
  Рис. корреляция кадров между собой
  
  Давайте изучим их пристальнее.
  
  Корреляционная матрица пиксельного пространства
  демонстрирует более широкий диапазон значений корреляции,
  с заметным снижением их по сравнению с пространством CLIP.
  Это указывает на большую чувствительность пространства пикселей
  к мелким изменениям между кадрами.
  
  Корреляционная матрица пространства CLIP показывает
  более стабильные и гладкие переходы между соседними кадрами.
  Это указывает на то, что CLIP эмбеддинги
  абстрагируют высокоуровневую информацию из изображений,
  в то время как пространство пикселей
  более чувствительно к низкоуровневым деталям.
  
  Но вот если глянуть изменения только соседних кадров,
  то видна взаимосвязь двух пространств в переходах между соседними кадрами.
  Это проявляется в том,
  что оба пространства улавливают основные изменения в видео,
  но с разной степенью чувствительности к деталям.
  
  Я предположил, что можно сформировать
  некий тензор смещений
  на основе матрицы корреляций клип-пространства изображений,
  которым можно подействовать на текстовые вектора
  или на сам стартовый шум.
  
  Рис. Формирование тензора смещений
  
  Модель Clip училась сближать вектора текстового пространства
  и пространства изображений.
  Так, что можно было ожидать что-то разумное от подобных манипуляций
  
  Далее я сформулировал свою гипотезу
  которую заложил в основу своих исследований
  - Управляемые изменения текстовых эмбеддингов,
  могут привести к формированию малых изменений в генерируемых изображениях
  для формирования видеоряда.
  //// Очень сильная гипотеза, хотя казалось бы достаточно "наивная",
  //// о "скоррелированности" совершенно разных по природе эмбеддингов.
  //// Т.е. в основе своей это предположение было сделано из особенностей
  //// обучения модели Clip, у которой размерности этих разных эмбеддингов совпадают.
  //// Но ведь можно и расширитьэту эту гипотезу и на случай разных размерностей,
  //// и тем самым подступиться к "изменяющейся размерности пространства латентов".
  
  Первые опыты
  
  Вначале я решил поэкспериментировать с модифицированием шума,
  действуя на него подобной тождественной матрицей близкой к единичной
  от генерации к генерации,
  при сохранении изначального шума, зафиксировав seed.
  
  Рис. условный пример формирования тензора смещения шума
  
  При некоторых параметрах матрицы стали получаться подобные малые изменения.
  Что явно давало намек, что идея не бесполезна.
  
  Рис. Модификация шума в SD 1.4
  
  Как перейти к текстам?
  
  Из курса NPL мне запомнилось,
  что в пространстве эмбеддингов Word2Vec
  тоже действует геометрическая связь между векторами эмбеддингов
  и есть угловая схожесть векторов.
  
  В итоге стало напрашиваться понятие поворота эмбеддинга.
  А поворот сразу вывел на формулу поворота Родригеса для 3D пространства.
  
  R = I +sin?(?)?K + (1 -cos?(?) )?K^2
  где
  
  Рис. Формула поворота Родригеса
  
  Она широко применяется в 3D графике, робототехнике и много где еще.
  А сама формула еще называется - матрица вращений.
  Казалось бы, а причем тут 3D пространство и повороты объекта в нем.
  Мне всегда задают этот вопрос.
  Многое, что я пишу далее, уже поиски ответов на этот вопрос,
  но меня двигала просто интуиция,
  что преобразования в пространствах любой размерности
  должны подчиняться неким общим принципам
  и должны быть в них инварианты и законы их трансформации.
  //// Обратите внимание на термины "преобразования" и "трансформации".
  //// Это ведь не только "повороты" и "вращения".
  //// Но самое интересное в этой формулировке, что и "обратное" тоже может
  //// оказаться работоспособным, т.е. сравнение "эмбеддингов",
  //// может быть не только по направлению (косинусному сходству),
  //// но и по другим критериям, связанными с различными
  //// "инвариантами и законами их трансформации",
  //// особенно в случае различных размерностей "пространств".
  
  Матрицы вращений многомерного пространства
  
  Для перехода в N мерное пространство нужно уже погружение в Теорию групп.
  Где через понятие Абелевой группы
  возможно экспоненциальное отображение алгебры Ли в группу Ли
  и применение генераторов поворотов.
  Многомерное вращение раскладывается на произведение двумерных вращений.
  Каждое двумерное вращение влияет только на два измерения,
  в которых она действует, оставляя остальные без изменений.
  
  Рис. Скриншоты вводного курса лекций по Теории групп
  
  При работе с генераторами А в виде кососимметричных матриц,
  использование показательной функции является
  основой плавного перехода от алгебры к геометрии,
  в частности, от бесконечно малых преобразований к конечным приращениям.
  Это важно в физике и технике,
  где резкие изменения могут привести к нежелательному поведению,
  например, к механическим сбоям или нереалистичной анимации в графике.
  
  A=(n_1 n_2^T-n_2 n_1^T )
  
  где n1 и n2 - n-мерные ортогональные единичные векторы
  
  Экспоненциальное представление матрицы вращений
  через разложение в ряд Тейлора
  и перегруппировки слагаемых приведет к формуле матрицы N мерных вращений.
  На слайде представлена основная формула для матрицы вращения
  между двумя векторами в многомерном пространстве,
  состоящая из 3 х слагаемых,
  
  Рис. Rotation in high dimensions
  
  по порядку:
  
  тождественная матрица - слагаемое гарантирует,
  что компоненты вектора, выровненного по оси вращения,
  не будут затронуты вращением.
  
  кососимметричное слагаемое - слагаемое имеет решающее значение
  для создания поворота в плоскости, перпендикулярной оси,
  образованной векторами n_1 и n_2.
  Этот член отвечает за реальный эффект вращения.
  
  симметричное слагаемое - слагаемое корректирует компоненты,
  параллельные оси вращения и их вклад в общее вращение.
  
  Опыты с матрицами вращений
  
  Обнаружение формулы для N мерных вращений заложило основы
  для первых экспериментов с вращением текстовых эмбеддингов.
  
  Рис. применение матриц вращений к эмбеддингам
  
  На слайде схематично представлено,
  что изменения в текстовые вектора
  используемые для генерации в диффузионной модели
  передаются через матрицу вращения,
  получаемую от векторов соответствующих кадров.
  Как видно из слайда, для тестирования i+1 вектор
  получается путем добавления к i-му вектору малой добавки
  от матричного произведения матрицы вращения
  на тот же i-й вектор,
  а малость вклада определяется коэффициентом g.
  Это схоже с теорией возмущения.
  
  Первые опыты проводились на моделях Stable Diffusion 1.4, 1.5.
  Брался видеоролик, далее из Clip векторов соседних кадров
  считалась матрица вращений,
  которая далее применялась к текстовому эмбеддингу перед генерацией изображения.
  На слайде представлены удачные примеры.
  
  Рис. эксперименты с SD 1.4(5)
  
  Далее меня заинтересовала модель Кандинский 2.2,
  которая построена на unclip подходе.
  Где есть диффузионная модель, которая фактически работает как Image-2-Image.
  А текстовая информация сосредоточена в модели Prior,
  которая учится выдавать из проекций текстовых векторов
  уже вектора максимально близкие к векторам изображений.
  Схожая структура и в модели DALLE.
  
  В Кандинский 2.2 эмбеддинги после модели Prior
  имеют большую схожесть с эмбеддингами изображений,
  что должно было в теории лучше работать с подходом из многомерных вращений.
  
  Рис. Генерация Кандинским 2.2 совместно с матрицей вращений
  
  На слайдах далее представлены некоторые примеры генераций
  Декодером Кандинский 2.2 из измененных эмбеддингов модели Prior
  матрицами вращений, получаемых из изменений в стороннем видеоряде.
  
  Рис. влияние стороннего видеоряда на эмбеддинги для генерации картинок
  
  Эксперименты с применением матриц вращений и модели Кандинский 2.2
  проводились с текстом, с шумом и комплексно.
  
  Рис. справа модификация шума от кадра к кадру на основе прошлой генерации
  
  Еще примеры генерации видеоряда.
  
  В итоге, в опытах с матрицами вращений
  продемонстрирована возможность по передаче информации
  об изменениях между латентными пространствами разной модальности.
  //// Ну очень интересный вывод/гипотеза.
  //// Получается, что если можно каким-то образом вычленить нужную информацию
  //// в пространстве эмбеддингов/латентов одной размерности/модальности,
  //// то можно попытаться передать эту информацию
  //// в пространство другой размерности/модальности,
  //// при условии, что эти пространства как-то согласованы.
  //// Ау теоретики, но ведь это же Клондайк или даже Эльдорадо.
  
  Исследования показали, что:
  
  управление генерациями через матрицы вращений возможно;
  
  контроль и управление изменениями может стать основой
  для разработки методики машинного обучения.
  //// Может быть даже это вообще подсказывает какой-то новый метод обучения,
  //// сопоставимый с "обратным распространением ошибки"
  
  Результаты меня вдохновили,
  так как они показали направление поиска далее.
  О результатах расскажу в следующей части.
  
  .........
  
  //// Из комментариев.
  
  rPman
  22 июл в 17:48
  
  Очень странно, поворот в одной размерности в пространстве эмбендингов
  - это очевидно смена на ближайшее значение одного из признаков,
  причем неочевидным способом... что и показывают примеры.
  
  Немного непонятно, как это помогло бы с плавностью переходов
  между кадрами видео
  
  Возможно ожидается что во время обучения будут найдены
  именно те признаки, что отвечали бы за именно движение?
  
  0
  
  Tarzan3668
  23 июл в 00:36
  
  Спасибо за ваш комментарий.
  Он очень хорошо отражает
  и неоднозначность идеи
  и мои сомнения в тот момент.
  Так как пройдя уже путь, сложно вернуться в то состояние.
  Но ваш комментарий подтвердил и отчасти напомнил мне мои сомнения.
  
  ..........
  
  //// Конец цитирования.
  
  Интересный материал, в том плане, что опираясь на него можно идти
  в совершенно разных навпралениях, и к различным "инвариантным трансформациям",
  и к новым способам сравнения эмбеддингов/латентов,
  ну и, конечно, в сторону поиска новых способов обучения.
  
  Автор выбрал "методы обучения", и кому интересно,
  может почитать продолжение этого материала:
  
  "Как оживить Кандинский матрицами вращений для генерации видео
  - модель Splitter (часть 2-я)"
  Автор: Tarzan3668 (Пузицкий Михаил)
  https://habr.com/ru/articles/831816/
  27 июл 2024 в 11:10
  
  Ну, а меня больше заинтересовала тема "инвариантов трансформации"
  для разных размерностей "пространства эмбеддингов/латентов".
  Здесь явно напрашивается что-то из проективной геометрии
  и/или топологии.
  Хотя это, конечно, и не особо принципиально.
  А еще интересно, как малые "повороты" изменяют текстовые эмбеддинги
  - каким текстовым формулировкам они соответствуют.
  "Все дороги ведут в Рим".
  
  
  =========
  
  28.08.2024 12:38
  
  Разреженные эмбеддинги и сгруппированные ансамбли нейронов.
  В оглавление.
  
  Исследование внутренней структуры эмбеддингов и латентов,
  наверно, невозможно без экспериментов по их управляемому формированию.
  И если раньше основным таким инструментом/подходом были только "регуляризации",
  то сейчас начинаются поиски путей по их управляемой "структуризации":
  
  "Разреженные автоэнкодеры и интерпретируемость нейросетей".
  Автор: heavychevy
  https://habr.com/ru/articles/839154/
  28 авг 2024 в 11:05
  
  //// Начало цитирования.
  
  На заре развития искусственного интеллекта исследователи
  часто могли проследить логику процесса принятия решений моделью,
  но с появлением deep learning и, в частности, с выходом AlexNet в 2012 году,
  эта прозрачность начала исчезать.
  Прорывная производительность AlexNet в распознавании изображений
  ознаменовала не только технологический скачок,
  но и поворотный момент, когда сложность нейронных сетей
  опередила нашу способность понимать процессы, происходящие внутри.
  Успех модели, обусловленный миллионами параметров и слоями вычислительных блоков,
  положил начало эпохе, когда акцент был смещен в сторону максимизации производительности,
  зачастую в ущерб интерпретируемости.
  Сегодня эта проблема только усугубилась,
  поскольку нейронные сети стали еще больше и сложнее.
  Эти модели работают как <черные ящики>,
  принимая решения, причины которых практически невозможно расшифровать.
  
  Давайте поговорим о том, как вообще исследователи в области ии
  пытаются решить растущую проблему интерпретируемости моделей,
  в частности, поговорим о разреженных автоэнкодерах Anthropic.
  
  Разреженные автоэнкодеры
  
  Разреженные автоэнкодеры (SAE)
  https://web.stanford.edu/class/cs294a/sparseAutoencoder.pdf
  - это тип архитектуры нейронных сетей, предназначенный для решения проблемы
  интерпретируемости путем обеспечения разреженности в скрытых слоях сети.
  В отличие от традиционных автоэнкодеров,
  которые сжимают входные данные в плотное, низкоразмерное представление,
  SAE нацелены на создание представлений,
  в которых только небольшая часть нейронов активна в любой момент времени.
  Это ограничение на разреженность заставляет сеть изучать
  более четкие и интерпретируемые характеристики,
  поскольку каждый нейрон должен улавливать специфическую,
  не избыточную информацию.
  В результате получается модель, которая не только сохраняет способность
  эффективно кодировать и восстанавливать данные,
  но и позволяет понять структуру обрабатываемых данных.
  
  Рис. Схема автоэнкодера
  
  Важность разреженных автоэнкодеров выходит за рамки их возможностей
  сделать нейронные сети более интерпретируемыми.
  Благодаря разреженности эти модели могут снизить вычислительную сложность
  и улучшить обобщение,
  что делает их более эффективными и надежными в различных приложениях.
  Более того, разреженные автоэнкодеры открывают путь к разгадке <черного ящика>,
  позволяя лучше понять, как системы обрабатывают и реагируют на данные.
  Например, в статье ASD-SAENet
  https://www.frontiersin.org/journals/computational-neuroscience/articles/10.3389/fncom.2021.654315/full
  авторы используют разреженный автоэнкодер
  для оптимизации извлечения признаков из данных,
  считываемых из человеческого мозга для последующего обнаружения
  расстройств аутистического спектра.
  
  Рис. Схема разреженного автоэнкодера
  
  Уникальность подхода Anthropic
  
  Разреженность в автоэнкодерах вдохновлена биологическими нейронными сетями,
  в которых только часть нейронов работает в каждый момент времени,
  что делает систему более эффективной и потенциально более простой
  для интерпретации.
  Подход Anthropic основывается на этой концепции,
  но вводит новые механизмы для обеспечения и более эффективного использования этого механизма.
  
  Одним из ключевых методов, используемых в автоэнкодерах Anthropic,
  является использование L1 регуляризации.
  L1 регуляризация добавляет к функции потерь штраф,
  пропорциональный абсолютному значению весов.
  Таким образом, сеть вынуждена минимизировать количество активных нейронов.
  Математически это можно представить в виде следующей формулы:
  
  Loss = Reconstruction Loss + \lambda\sum_{i}{|w_{i}|}
  
  где w_{i} - веса нейронов,
  и \lambda - параметр регуляризации, который управляет степенью разреженности.
  При тщательной настройке \lambda, автоэнкодеры Anthropic
  находят баланс между обучением значимым характеристикам
  и сохранением интерпретируемости.
  
  Еще одним уникальным аспектом автоэнкодеров Anthropic
  является использование структурированной разреженности.
  В отличие от неструктурированной,
  когда отдельные нейроны либо активны, либо неактивны,
  структурированная группирует нейроны
  и накладывает разреженность на уровне группы.
  //// Вот это, наверно, самая сильная идея в этом подходе.
  //// Принудительно/целенаправленно настраивать АНСАМБЛИ нейронов.
  Этот метод позволяет сети обучаться более интерпретируемым представлениям,
  активируя целые группы нейронов,
  которые соответствуют определенным признакам или концепциям.
  Например, в модели Computer vision одна группа нейронов
  может отвечать за обнаружение краев,
  а другая - за обнаружение определенных текстур.
  Такая группировка не только улучшает интерпретируемость,
  но и повышает эффективность работы сети,
  поскольку для каждого входного сигнала необходимо учитывать
  меньшее количество нейронов.
  
  Применение
  
  Методика применения SAE заключается в следующем:
  выход слоя активации модели нормализуется,
  после чего подаётся на вход разреженного автоэнкодера
  для разложения этих активаций в линейную комбинацию направлений признаков.
  Этот подход показал, что признаки не только поддаются интерпретации,
  но и влияют на поведение модели предсказуемым образом.
  Например, исследователи выбрали признак, связанный с мостом <Золотые ворота>,
  после чего заставили модель сгенерировать текст, связанный с мостом.
  Оказалось, что при генерации этого текста,
  выбранный признак активно использовался.
  
  Рис. Интерпретация признаков в Claude 3 Sonnet
  
  Помимо интерпретируемости, SAE способствуют повышению надежности
  и этичности применения ИИ.
  Сосредоточившись на наиболее значимых характеристиках
  и уменьшив зависимость от зашумленных или нерелевантных данных,
  эти модели с меньшей вероятностью будут выдавать предвзятые
  или несправедливые результаты.
  Например, в кредитном скоринге разреженные автокодировщики
  могут помочь убедиться,
  что решения основаны на реальных факторах кредитоспособности,
  а не на нерелевантных корреляциях.
  Этот аспект имеет решающее значение для разработки
  справедливых и беспристрастных систем ИИ,
  соответствующих этическим стандартам,
  особенно в чувствительных областях, где дискриминация или предвзятость
  могут привести к значительному ущербу для общества.
  
  Рис. Интерпретируемые признаки Claude 3 Sonnet
  
  Итог
  
  В современном ИИ, где модели становятся всё умнее и умнее,
  появление SAE - многообещающий шаг.
  Эти модели решают растущую проблему интерпретируемости,
  делая внутреннюю работу нейронных сетей более понятной.
  От повышения эффективности принятия решений в таких ответственных областях,
  как здравоохранение и финансы,
  до обеспечения более этичного и надежного внедрения ИИ,
  разреженные автоэнкодеры демонстрируют,
  что нам не нужно выбирать между производительностью и интерпретируемостью.
  Напротив, они показывают, что можно создавать мощные системы,
  которые также являются прозрачными и заслуживающими доверия.
  
  ..........
  
  //// Конец цитирования.
  
  Материал, на мой взгляд, очень интересный,
  но характерно, что он не вызвал особого интереса у читателей,
  при полном отсутствии комментариев.
  С одной стороны, это понятно - слишком много общих слов,
  и слишком мало действительно интересных технических подробностей.
  А с другой стороны, непонятно почему попытки приблизиться к пониманию
  работы нейросетей, более тонких приемов их обучения с этой целью,
  уже мало кого интересует.
  Неужели, большинство "датасатанистов" так и смирилось
  с непознаваемостью "терра инкогнита" нейросетей.
  
  А ведь предлагаемый метод структурированного обучения нейросети,
  т.е. сознательного "выращивания" при обучении
  нескольких кластерных ансамблей нейронов и их связей,
  даже если и не сильно поможет в интерпретации их поведения,
  может использоваться и для каких-то других целей.
  Странно, что эта возможность даже не отмечена ни в самом материале,
  ни в отсутствующих комментариях.
  Но посмотрим, может быть у этой работы еще будет интересное продолжение.
  
  Но путь такой структуризации/кластеризации ансамблей нейронов/весов
  через регуляризационные члены в функции ошибок/потерь
  представляется не самым перспективным, точнее, достаточно непредсказуемым. см.:
  "Подводные камни регуляризации."
  
  Нужна методика обучения, использующая обратное распространение ошибки
  на основе градиентного спуска не для прямой корректировки весов,
  а для оценки/накопления вклада конкретного веса во всю решаемую задачу,
  а корректировку делать по какому-то иному критерию.
  Нужен какой-то механизм в чем-то аналогичный "дофаминовому подкреплению"/
  например, такой, см.:
  "Концепция композитной нейронки."
  "Концепция "стапеля" для обучения нейронок."
  
  Задача формирования в однородной структуре "заготовки" нейросети,
  нескольких "виртуальных" подсетей, специализирующихся на решении
  разных задач сама по себе очень перспективная и интересная,
  но пока для решения ее очень не хватает
  практических данных/исследований/подходов.
  И работа описанная в данном материале как раз и может служить,
  хотя бы, каким-то ориентиром в данном направлении.
  
  
  =========
  
  13.10.2024 16:26
  
  А теперь еще и "контекстные" эмбеддинги.
  В оглавление.
  
  Пока одни исследователи ищут решение одних проблем в "разреженной" структуре
  эмбеддингов, другие пытаются наоборот сделать их более "насыщенными",
  за счет добавления информации о контексте:
  
  "Новая методика существенно повышает эффективность систем RAG
  в поиске необходимых документов".
  Автор: technokratiya (Технократия)
  https://habr.com/ru/articles/850076/
  11 окт 2024 в 17:18
  
  Автор оригинала: Ben Dickson
  https://venturebeat.com/ai/new-technique-makes-rag-systems-much-better-at-retrieving-the-right-documents/
  
  //// Начало цитирования.
  
  Метод генерации с дополнением извлечения (RAG)
  стал популярным способом связывания больших языковых моделей (LLM)
  с внешними источниками знаний.
  Системы RAG обычно используют модель эмбеддингов
  для кодирования документов в корпусе знаний и выбирают те,
  которые наиболее соответствуют запросу пользователя.
  
  //// Т.е. сравнивают на соответствие эмбеддинги запроса и соответствующего документа.
  
  .........
  
  Однако стандартные методы поиска часто не учитывают контекстуальные детали,
  способные существенно влиять на специализированные наборы данных.
  В новой работе исследователи из Корнеллского университета
  представляют <контекстные эмбеддинги документов>
  https://arxiv.org/abs/2410.02525
  - технику, повышающую эффективность моделей эмбеддингов
  путем учета контекста, в котором извлекаются документы.
  
  Пределы возможностей би-энкодеров
  
  Наиболее распространенный подход к поиску документов в RAG
  - использование <би-энкодеров>,
  где модель эмбеддингов создает фиксированное представление каждого документа,
  сохраняемое в векторной базе данных.
  Во время вывода рассчитывается эмбеддинг запроса,
  который затем сравнивается с сохраненными эмбеддингами
  для обнаружения наиболее релевантных документов.
  
  Би-энкодеры стали популярным выбором для поиска документов в системах RAG
  благодаря своей эффективности и масштабируемости.
  Однако они часто испытывают трудности с нюансированными,
  специфичными для приложения наборами данных,
  поскольку обучены на общих данных.
  Фактически, при работе со специализированными корпусами знаний
  они могут уступать классическим статистическим методам,
  таким как BM25,
  в определенных задачах.
  
  <Наш проект начался с изучения BM25,
  старой школы алгоритмов для текстового поиска>,
  - рассказал VentureBeat Джон (Джек) Моррис,
  докторант Cornell Tech и соавтор статьи.
  <Мы провели небольшой анализ и увидели,
  что чем более данные отличаются от исходной области,
  тем сильнее BM25 превосходит нейронные сети>.
  
  BM25 достигает своей гибкости,
  вычисляя вес каждого слова в контексте индексируемого корпуса.
  Например, если слово встречается во многих документах корпуса знаний,
  его вес будет снижен,
  даже если это важное ключевое слово в других контекстах.
  Это позволяет BM25 адаптироваться к специфическим характеристикам
  различных наборов данных.
  
  <Традиционные модели плотного поиска на основе нейронных сетей
  не могут этого сделать,
  поскольку они устанавливают веса один раз,
  основываясь на обучающих данных>,
  - отметил Моррис.
  <Мы попытались разработать подход, который мог бы это исправить>.
  
  Контекстные эмбеддинги документов
  
  Рис. Схема из научной публикации
  
  Исследователи из Корнелла предлагают два взаимодополняющих метода
  для улучшения работы би-энкодеров
  путем добавления понятия контекста к эмбеддингам документов.
  
  <Если рассматривать поиск как "соревнование" между документами
  за наиболее релевантный ответ на поисковый запрос,
  мы используем "контекст",
  чтобы информировать энкодер о других документах,
  участвующих в соревновании>,
  - объяснил Моррис.
  
  Первый метод модифицирует процесс обучения модели эмбеддингов.
  Исследователи используют технику,
  которая группирует похожие документы перед обучением модели.
  Затем они применяют контрастивное обучение,
  чтобы научить энкодер различать документы внутри каждого кластера.
  
  Контрастивное обучение - это метод без учителя,
  при котором модель обучается различать положительные и отрицательные примеры.
  Будучи вынужденной различать похожие документы,
  модель становится более чувствительной к тонким различиям,
  важным в специфических контекстах.
  
  Второй метод модифицирует архитектуру би-энкодера.
  Исследователи расширяют энкодер механизмом,
  который дает ему доступ к корпусу во время процесса кодирования.
  Это позволяет энкодеру учитывать контекст документа
  при создании его эмбеддинга.
  
  Расширенная архитектура работает в два этапа.
  Сначала вычисляется общий эмбеддинг для кластера,
  к которому принадлежит документ.
  Затем этот общий эмбеддинг комбинируется
  с уникальными особенностями документа
  для создания контекстуализированного эмбеддинга.
  
  Этот подход позволяет модели захватывать
  как общий контекст кластера документа,
  так и специфические детали,
  которые делают его уникальным.
  Выходные данные по-прежнему представляют собой эмбеддинг
  того же размера,
  что и у обычного би-энкодера,
  поэтому не требуют изменений в процессе поиска.
  
  Влияние контекстных эмбеддингов документов
  
  Исследователи оценили свой метод на различных бенчмарках и обнаружили,
  что он стабильно превосходит стандартные би-энкодеры аналогичных размеров,
  особенно в условиях,
  когда обучающие и тестовые наборы данных значительно различаются.
  
  <Наша модель должна быть полезна для любой области,
  которая существенно отличается от обучающих данных,
  и может рассматриваться как недорогая замена
  тонкой настройки специфичных для области моделей эмбеддингов>,
  - отметил Моррис.
  
  Контекстные эмбеддинги могут использоваться
  для повышения производительности систем RAG в различных областях.
  Например, если все ваши документы имеют общую структуру или контекст,
  обычная модель эмбеддингов будет тратить место в своих эмбеддингах,
  сохраняя эту избыточную структуру или информацию.
  
  <Контекстные эмбеддинги, с другой стороны,
  могут увидеть из окружающего контекста,
  что эта общая информация не полезна,
  и отбросить ее перед тем, как решить,
  что именно сохранить в эмбеддинге>,
  - объяснил Моррис.
  
  Исследователи выпустили небольшую версию
  своей модели контекстных эмбеддингов документов (cde-small-v1).
  https://huggingface.co/jxm/cde-small-v1
  Ее можно использовать как прямую замену для популярных инструментов
  с открытым исходным кодом,
  таких как HuggingFace и SentenceTransformers,
  для создания пользовательских эмбеддингов для различных приложений.
  
  Моррис отмечает, что контекстные эмбеддинги
  не ограничены моделями на основе текста
  и могут быть расширены на другие модальности,
  такие как архитектуры текст-картинка.
  Также есть возможности для их улучшения
  с помощью более продвинутых алгоритмов кластеризации
  и оценки эффективности техники на больших масштабах.
  
  ........
  
  //// Конец цитирования.
  
  Меня эта коротенькая заметка чрезвычайно заинтересовала
  в плане возможности комбинировать в одном эмбеддинге информацию/"знания"
  разного уровня/детальности.
  Но из самого информативного абзаца:
  
  \\\ Расширенная архитектура работает в два этапа.
  \\\ Сначала вычисляется общий эмбеддинг для кластера,
  \\\ к которому принадлежит документ.
  \\\ Затем этот общий эмбеддинг комбинируется
  \\\ с уникальными особенностями документа
  \\\ для создания контекстуализированного эмбеддинга.
  
  выяснить детали этого процесса, наверно, все-таки сложновато.
  
  Попробовал почитать оригинальный материал,
  но быстро понял, что с моими познаниями в "англицкой мове" по данной тематике,
  понять больше, чем в приведенном абзаце, ну никак, не получается.
  Все-таки "высокий штиль" академической статьи предназначен
  не для "понимания деталей", а для "фиксации достижений/приоритета"
  и указания условий воспроизводимости результатов.
  
  Вот, к примеру, такая деталь, что авторы в своем кодировщике эмбеддингов,
  зачем-то отключают "позиционное кодирование" ну никак не объясняется,
  а только указывается способ такого "отключения".
  И приходится только догадываться, что это, возможно,
  связано с желанием авторов приблизить структуру/значения эмбеддингов,
  к чему-то похожему на статистические характеристики "алгоритма BM25".
  
  Но в любом случае материал интересный в плане того, что еще раз показывает,
  что эмбеддинги/латенты это какая-то очень гибкая и сложная структура,
  которая позволяет экспериментировать с различными гипотезами/стратегиями.
  И на выходе получать достаточно интересные результаты.
  
  Во всяком случае, это, как минимум, второй/третий материал,
  в котором авторы целенаправленно пытаются соединить в одном эмбеддинге
  информацию с разных уровней представления,
  это если не считать собственно "позиционного кодирования" в эмбеддинге.
  Первый раз что-то похожее мне удалось заметить вот в этом материале:
  "Неплохая информация от практиков самопального эмбеддинга".
  
  В общем, работы по развитию/использованию концепции
  сложной структуры эмбеддингов явно ведутся.
  Но также явно видно, что эти работы идут "методом нацчного тыка",
  т.е. перебором вариантов, чем-то привлекательных для исследователей.
  Например, возможностью написания еще более длинной формулы
  фукции ошибки/потерь, но отнюдь не необходимостью как-то
  визуализировать то, какая именно структура эмбеддинга в итоге получается.
  Ладно, будем искать дальше.
  
  
  =========
  
  03.11.2024 22:29
  
  К вопросу о сравнении эмбеддингов разными "расстояниями".
  В оглавление.
  
  Неплохая заметка с конкретными сравнениями различных методов
  оценки похожести/различия слов/текстов:
  
  "Зачем нужны эмбеддинги?"
  Автор: yshuvaev (Ярослав Шуваев)
  https://habr.com/ru/articles/855550/
  02 ноя 2024 в 11:34
  
  Текст очень сильно урезан, чтобы выделить только те моменты,
  которые на мой взгляд несут наиболее ценную информацию
  в контексте данного модуля .
  Желающие познакомиться с оригинальным текстом - ссылка выше
  
  //// Начало цитирования.
  
  ........
  
  Что такое эмбеддинги?
  
  Эмбеддинги позволяют представить слова или тексты
  в виде векторов в многомерном пространстве.
  Например, в недавнем исследовании мы использовали 368-мерное пространство,
  хотя могут применяться пространства с разным количеством измерений.
  Преимущество эмбеддингов в том, что они помогают находить схожие слова,
  даже если есть небольшие отличия в написании
  (например, орфографические ошибки или разные формы слова).
  
  Преимущества и недостатки эмбеддингов
  
  Плюсы эмбеддингов:
  
  Учет синонимов и похожих понятий.
  Эмбеддинги позволяют находить не только точные совпадения, но и синонимы.
  Например, если в резюме указано, что человек знает TypeScript,
  то, вероятно, он также знаком с JavaScript,
  так как одно является подмножеством другого.
  В векторном пространстве такие понятия будут находиться рядом.
  
  Корректное определение близости.
  Даже если слово написано немного иначе,
  можно использовать такие методы,
  как косинусное сходство или евклидову норму,
  чтобы определить их схожесть.
  
  Минусы эмбеддингов:
  
  Требовательность к ресурсам.
  Создание векторов - ресурсоемкий процесс,
  который требует значительных вычислительных мощностей и времени.
  
  Большой объем данных.
  Векторные представления занимают много места
  (от 300 КБ до нескольких мегабайт на одно представление),
  что значительно увеличивает размер базы данных
  и время обработки больших массивов информации.
  
  //// Еще один минус эмбеддингов, о котом постоянно забывают,
  //// не только упомянуть, но и вообще редко берут в расчет,
  //// пока не становится "мучительно больно".
  //// Это зависимость от инструмента "конвертирующего" текст/слово
  //// в этот самый эмбеддинг. Ведь тут собственно нет никаких ни исследований
  //// ни "стандартов", кроме "стандарта де факто" - модели BERT, см.:
  //// "Неплохая информация от практиков самопального эмбеддинга".
  //// "Еще пару бит информации от практиков самопального эмбеддинга".
  
  .......
  
  Результаты исследования
  
  Для одного из клиентов мы провели исследование, чтобы показать,
  как эмбеддинги помогают улучшить точность поиска.
  Мы сравнили несколько методов, таких как Soundex, Daitch-Mokotoff,
  и векторное представление.
  
  Рис. Таблица сравнения разных методов сходства,
  отсортированная по эвклидову расстоянию
  
  word_a - исходное слово (обычно на русском)
  
  word_b - слово для сравнения (обычно на английском)
  
  transliterated_a - транслитерация word_a в латиницу
  
  direct_similarity - прямое сравнение word_a и word_b (триграммы)
  
  trans_similarity - сравнение транслитерированной версии с word_b
  
  soundex_a - код Soundex для word_a
  
  soundex_b - код Soundex для word_b
  
  soundex_match - совпадение кодов Soundex (true/false)
  
  soundex_trans_a - код Soundex для транслитерированной версии
  
  soundex_trans_match - совпадение Soundex транслитерации с word_b (true/false)
  
  dm_a - код Daitch?Mokotoff для word_a
  
  dm_b - код Daitch?Mokotoff для word_b
  
  dm_match - совпадение кодов Daitch?Mokotoff (true/false)
  
  dmt_match - совпадение Daitch?Mokotoff с учетом транслитерации (true/false)
  
  vector_cosine_sim - косинусное сходство векторов (1 = идентичны, 0 = различны) ()
  
  vector_l2_sim - евклидово сходство векторов (1 = идентичны, 0 = различны)
  
  trans_vector_cosine_sim - косинусное сходство после транслитерации
  
  trans_vector_l2_sim - евклидово сходство после транслитерации
  
  Для нормирования векторных матрик сходств использовались следующие формулы:
  
  Нормализация метрик сходства
  
  Для удобства сравнения различных методов мы нормировали
  метрики векторного сходства так,
  чтобы они находились в диапазоне от 0 до 1.
  Это позволяет проводить унифицированное сравнение с классическими алгоритмами,
  где 0 указывает на полное отсутствие сходства между строками,
  а 1 - на их полное совпадение.
  Для методов, использующих фонетическое кодирование (Soundex и Daitch?Mokotoff),
  мы указываем результат как True или False,
  что показывает, есть ли полное совпадение между кодами.
  
  Ниже приведены формулы и описание каждого метода:
  
  1. Косинусное сходство (Cosine Similarity)
  
  Для вычисления эмбеддингов, мы использовали модельall-MiniLM-L6-v2
  из библиотеки sentence?transformers.
  Это легкая и быстрая модель с размерностью эмбеддингов 384
  (~3072 байт дополнительно к каждой переменной хранения).
  
  Косинусное сходство измеряет угол между двумя векторами A и B
  и показывает, насколько они ориентированы в одном направлении.
  Чтобы нормировать это сходство в диапазоне от 0 до 1,
  применяется следующая формула:
  
  \text{cosine_similarity}(A, B) = \frac{A \cdot B}{\|A\| \|B\|}\text{normalized_cosine_similarity}(A, B) = \frac{\text{cosine_similarity}(A, B) + 1}{2}
  
  0 - векторы противоположны (максимально разные).
  
  1 - векторы идентичны.
  
  2. Евклидово сходство (Euclidean Similarity)
  
  Евклидово расстояние измеряет физическое расстояние
  между двумя точками (векторами) в пространстве.
  Чтобы преобразовать это расстояние в значение сходства от 0 до 1,
  мы используем следующую формулу:
  
  \text{euclidean_distance}(A, B) = \sqrt{\sum{i=1}^n (A_i - B_i)^2}\text{euclidean_similarity}(A, B) = \frac{1}{1 + \text{euclidean_distance}(A, B)}
  
  0 - векторы максимально удалены (разные строки).
  
  1 - векторы идентичны.
  
  .......
  
  Выводы
  
  Рис. Сравнение разных графиков сходства
  
  ......
  
  2. Сравнение с использованием векторных методов
  
  Векторные методы, такие как косинусное и евклидово сходство,
  показывают более высокие значения сходства для некоторых пар слов,
  //// Для некоторых...
  даже если другие методы (например, Soundex или прямое совпадение)
  не выдают точных результатов.
  Это видно в парах и , <Ява?скрипт> и .
  Векторные методы помогают находить семантически схожие слова,
  которые трудно сравнить на основе прямого текстового сходства
  или фонетического кода.
  Это подтверждает, что векторные методы лучше подходят
  для поиска синонимов и смысловой близости,
  а не только точного совпадения.
  
  3. Нюансы косинусного и евклидова сходства
  
  Как видно из таблицы, значения косинусного и евклидова сходства
  различаются на шестом знаке после запятой.
  Например, пара и имеет косинусное сходство 0.7767
  и евклидово сходство 0.9786.
  Хотя значения близки, они дают разную <глубину> сходства:
  косинусное сходство может более чувствительно отражать различия между векторами,
  тогда как евклидово сходство сглаживает их.
  Для задач, где важна тонкость различий между понятиями,
  косинусное сходство может быть полезнее,
  а евклидовое сходство больше подходит для общего поиска близких значений.
  //// Стоит это различие запомнить и самое главное обдумать.
  //// Особенно эту формулировку - "глубина сходства". Очень перспективно.
  //// Хотя оно вполне укладывается в особенности векторов
  //// в пространствах большей размерности, где "евклидова размерность"
  //// больше "чувствительна", точнее, как раз становится менее "чувствительной",
  //// при большей размерности пространства представления, подробнее см.:
  //// "Проклятье размерности" в пространстве.
  //// Жалко только, что в таблице не нашлось места для "манхеттенского расстояния",
  //// чтобы картинка с особенностями расстояний была максимально полной.
  
  .......
  
  Заключение
  
  Данное небольшое исследование наглядно иллюстрирует важность выбора
  и комбинирования различных методов для точного поиска и анализа данных
  в зависимости от конкретной задачи.
  Каждый метод имеет свои сильные и слабые стороны,
  и понимание их особенностей позволяет настроить поиск под нужды пользователя.
  
  ........
  
  Для задач, где важен смысловой поиск или поиск синонимов,
  лучше всего работают векторные методы.
  Они позволяют находить слова и выражения, близкие по значению,
  даже если они написаны по?разному или на разных языках.
  Векторные методы также полезны, если нужно учитывать
  семантическую близость терминов.
  
  Итак, выбор метода зависит от конкретной задачи.
  Если требуется простой поиск по схожим строкам,
  эффективнее использовать методы, не требующие больших вычислительных ресурсов.
  Если важна смысловая близость, то векторные методы,
  несмотря на их ресурсоемкость, обеспечат более качественный результат.
  
  //// Н-да. И это можно назвать "авторским заключением".
  //// Понятно, почему комментариев только один.
  //// Но "плюсуется" богато.
  //// Может быть из-за именно наличия "таблицы сравнения",
  //// действительно дающее общее представление о возможностях различных методов.
  
  .......
  
  //// Конец цитирования.
  
  Что же можно все-таки придумать, чтобы научиться как-то
  более осмысленно работать с оценкой эмбеддинга этими "расстояниями"
  в зависимости от особенностей самого "кодировщика" эмбеддингов?
  Или это как раз тупиковый путь и надо идти к стандартизации эмбеддингов,
  по типу Большой Энциклопедии?
  Или есть еще и другие пути?
  
  
  =========
  
  Тральщик Наставник. Модель 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!
  Flag Counter
  
 Ваша оценка:

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

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

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

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