Forwarded from Aspiring Data Science (Anatoly Alekseev)
#nlp #pca #dimreducers
Интересный рецепт: блок, дающий разреженные (sparse) признаки, после него PCA, дающий на выходе уже разумное количество плотных (dense) признаков.
https://www.youtube.com/watch?v=x7RX8VprCnE
Интересный рецепт: блок, дающий разреженные (sparse) признаки, после него PCA, дающий на выходе уже разумное количество плотных (dense) признаков.
https://www.youtube.com/watch?v=x7RX8VprCnE
YouTube
PCA as an embedding technique
If you have text represented as a sparse vector then there are a few things that you cannot do. In particular; not every scikit-learn model inside of scikit-learn can deal with it. Most notably the histogram boosted ensemble models. So what if we use PCA…
Forwarded from Yandex for ML
This media is not supported in your browser
VIEW IN TELEGRAM
Yandex Cloud показал новую среду для внедрения ИИ-инструментов в продукты — AI Studio. Например, в ней можно создать умный поиск по базам данных и встроить его по API в оболочку чат-бота в мессенджере. И это только один пример продуктового применения LLM — всё остальное ограничено только вашим воображением.
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Душный NLP
InfAlign: алайнмент языковых моделей с учётом процедуры инференса
Метод RLHF (Reinforcement Learning from Human Feedback) доказал эффективность в задаче алайнмента языковых моделей. Однако у него есть существенный недостаток: на практике возникает расхождение между процессом обучения и реальным использованием модели.
Например, после RLHF модель обычно старается избегать неверных ответов. Но при использовании стратегии генерации Best-of-N (выбор лучшего из нескольких сгенерированных ответов) такое жёсткое ограничение становится неоптимальным — модель могла бы давать лучшие ответы, разреши мы ей экспериментировать более агрессивно за счёт небольшой доли неверных ответов.
Для решения этого несоответствия авторы статьи разработали метод InfAlign, адаптирующий процесс обучения к конкретным процедурам генерации, используемым на практике.
Рассмотрим проблему детальнее. Классический подход RLHF с учётом KL-регуляризации гарантирует оптимальность модели по средней награде, если ответы генерируются сэмплированием. На практике, однако, нам интересна не столько средняя награда, сколько доля запросов, на которых новая модель лучше старой. И уже для такой метрики (при фиксированной модели, по отношению к которой мы считаем винрейт) RLHF даёт субоптимальные результаты даже для простого сэмплирования — что уж говорить о более продвинутых методах.
К счастью, авторам статьи удалось доказать, что оптимизация винрейта для некоторых процедур генерации, включая Best-of-N, Worst-of-N и сэмплирование, эквивалентна применению RLHF с модифицированной функцией награды.
Предложенный подход состоит из трёх основных этапов.
1. Калибровка награды. На этом этапе исходные награды преобразуются в значения от 0 до 1 таким образом, чтобы распределение наград ответов модели стало равномерным на каждом запросе. Это эквивалентно применению обусловленной на запрос функции распределения награды к самой награде. Забавно, что в первой версии статьи авторы предложили использовать медианную аппроксимацию функции распределения, однако спустя месяц удалили все упоминания об этом методе и перешли к использованию эмпирической функции распределения.
2. Трансформация награды. На следующем этапе откалиброванная награда адаптируется под конкретную процедуру генерации. Например, для стратегии Best-of-N применяется экспоненциальное преобразование, усиливающее различия между отличными и посредственными ответами, а для сэмплирования — логарифм, штрафующий за плохие ответы. Заметим, что на самом деле логарифм и экспонента — это лишь хорошие приближения оптимального преобразования. Но, как показывают эксперименты, погрешностью можно пренебречь ради простоты реализации.
3. Обучение с модифицированной наградой. Модель обучается при помощи классического RLHF, используя модифицированную награду, адаптированную под конкретную процедуру генерации.
Проведённые авторами эксперименты показали, что предложенный подход демонстрирует значительное улучшение качества генерации с точки зрения винрейта даже для процедуры сэмплирования.
Отметим, что сейчас метод InfAlign применим к весьма ограниченному набору реально используемых процедур генерации, таких как Best-of-N, Worst-of-N и сэмплирования.
Разбор подготовил❣ Федор Лебедь
Душный NLP
Метод RLHF (Reinforcement Learning from Human Feedback) доказал эффективность в задаче алайнмента языковых моделей. Однако у него есть существенный недостаток: на практике возникает расхождение между процессом обучения и реальным использованием модели.
Например, после RLHF модель обычно старается избегать неверных ответов. Но при использовании стратегии генерации Best-of-N (выбор лучшего из нескольких сгенерированных ответов) такое жёсткое ограничение становится неоптимальным — модель могла бы давать лучшие ответы, разреши мы ей экспериментировать более агрессивно за счёт небольшой доли неверных ответов.
Для решения этого несоответствия авторы статьи разработали метод InfAlign, адаптирующий процесс обучения к конкретным процедурам генерации, используемым на практике.
Рассмотрим проблему детальнее. Классический подход RLHF с учётом KL-регуляризации гарантирует оптимальность модели по средней награде, если ответы генерируются сэмплированием. На практике, однако, нам интересна не столько средняя награда, сколько доля запросов, на которых новая модель лучше старой. И уже для такой метрики (при фиксированной модели, по отношению к которой мы считаем винрейт) RLHF даёт субоптимальные результаты даже для простого сэмплирования — что уж говорить о более продвинутых методах.
К счастью, авторам статьи удалось доказать, что оптимизация винрейта для некоторых процедур генерации, включая Best-of-N, Worst-of-N и сэмплирование, эквивалентна применению RLHF с модифицированной функцией награды.
Предложенный подход состоит из трёх основных этапов.
1. Калибровка награды. На этом этапе исходные награды преобразуются в значения от 0 до 1 таким образом, чтобы распределение наград ответов модели стало равномерным на каждом запросе. Это эквивалентно применению обусловленной на запрос функции распределения награды к самой награде. Забавно, что в первой версии статьи авторы предложили использовать медианную аппроксимацию функции распределения, однако спустя месяц удалили все упоминания об этом методе и перешли к использованию эмпирической функции распределения.
2. Трансформация награды. На следующем этапе откалиброванная награда адаптируется под конкретную процедуру генерации. Например, для стратегии Best-of-N применяется экспоненциальное преобразование, усиливающее различия между отличными и посредственными ответами, а для сэмплирования — логарифм, штрафующий за плохие ответы. Заметим, что на самом деле логарифм и экспонента — это лишь хорошие приближения оптимального преобразования. Но, как показывают эксперименты, погрешностью можно пренебречь ради простоты реализации.
3. Обучение с модифицированной наградой. Модель обучается при помощи классического RLHF, используя модифицированную награду, адаптированную под конкретную процедуру генерации.
Проведённые авторами эксперименты показали, что предложенный подход демонстрирует значительное улучшение качества генерации с точки зрения винрейта даже для процедуры сэмплирования.
Отметим, что сейчас метод InfAlign применим к весьма ограниченному набору реально используемых процедур генерации, таких как Best-of-N, Worst-of-N и сэмплирования.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Denis Sexy IT 🤖
Нашел еще один интересный промпт для GPT-4o генерации картинок, который позволяет генерировать спрайты для 2d-игр – фоны как в этих ваших Street Fighter 1
Если вы собираете какой-то простенький 2D-платформер, то теперь вы можете прямо в ChatGPT сгенерировать нужный спрайт, сразу с прозрачностью, и поместить его в игру, вот промпт:
А еще я собрал небольшую страницу, где можно сразу посмотреть, как будет выглядеть спрайт созданный в ChatGPT:
https://shir-man.com/generate-sprite/
Загружаете картинку туда, размечаете (пример разметки в последней картинке), двигаете ползунки и получаете вашу собственную карту файтинга мечты
Если вы собираете какой-то простенький 2D-платформер, то теперь вы можете прямо в ChatGPT сгенерировать нужный спрайт, сразу с прозрачностью, и поместить его в игру, вот промпт:
Create a wide image (1792×1024) for a 2D parallax background in a side-scrolling video game. The theme is: [post soviet city in 90s] The image should be divided into 3 horizontal layers, same width, stacked vertically: Top row: This is the background and does not require transparency. Middle row: A midground layer, with less elements than the background, drawn in silhouette with some transparency so it can scroll separately. Bottom row: A foreground layer with a ground and relevant elements, less elements than the midground, also partially transparent for parallax scrolling. All layers should have a consistent art style. Use a transparent background for the middle and bottom layers, and keep visual separation between layers by leaving a small gap or distinct lighting. Do not blend the layers together. Vary the color theme between layers ensuring pleasing visual aesthetic. Output as a single image with three stacked rows. Resolution: 1792×1024 Transparent background: Yes (middle and bottom layers) Style: 2D pixel art / game art Purpose: Parallax background layers for a video game
А еще я собрал небольшую страницу, где можно сразу посмотреть, как будет выглядеть спрайт созданный в ChatGPT:
https://shir-man.com/generate-sprite/
Загружаете картинку туда, размечаете (пример разметки в последней картинке), двигаете ползунки и получаете вашу собственную карту файтинга мечты
Forwarded from Data Blog
АЕ, АЕ, сегодня про AE aka Autoencoders.
Я уверенно, но чуть медленно продолжаю цикл туториалов, посвященных области explainable AI. Так, уже были разобраны метод Logit Lens на примере ViT, зондирование gpt2, CAM на примере Yolo NAS — всё можно найти по статьям в профиле на Хабр.
В этом, новом туториале, мы разберем идею применения автокодировщиков для анализа и извлечения признаков из скрытых состояний модели.
В процессе, вы:
* Изучите или повторите, как работает извлечение признаков в Visual Transformers;
* Построите и примените автокодировщик для сжатия скрытых представлений, выученных моделью ViT в задаче классификации котиков и собачек;
* Сравните Vit и PCA в данной задаче.
🐥 Залетайте читать! AE — конечно, не SAE и в задачах сложнее лучше использовать именно SAE, но туториал позволит пощупать базовую идею применения энкодеров.
В скором времени надеюсь сделать материал и по SAE!
Хорошей весны!
Ваш Дата Автор!
Я уверенно, но чуть медленно продолжаю цикл туториалов, посвященных области explainable AI. Так, уже были разобраны метод Logit Lens на примере ViT, зондирование gpt2, CAM на примере Yolo NAS — всё можно найти по статьям в профиле на Хабр.
В этом, новом туториале, мы разберем идею применения автокодировщиков для анализа и извлечения признаков из скрытых состояний модели.
В процессе, вы:
* Изучите или повторите, как работает извлечение признаков в Visual Transformers;
* Построите и примените автокодировщик для сжатия скрытых представлений, выученных моделью ViT в задаче классификации котиков и собачек;
* Сравните Vit и PCA в данной задаче.
🐥 Залетайте читать! AE — конечно, не SAE и в задачах сложнее лучше использовать именно SAE, но туториал позволит пощупать базовую идею применения энкодеров.
В скором времени надеюсь сделать материал и по SAE!
Хорошей весны!
Ваш Дата Автор!
Хабр
Сабрина aka sad__sabrina
- Автор и исследователь в области explainable AI.
- Автор и исследователь в области explainable AI.
Сабрина aka sad__sabrina. Опубликовал 13 статей на Хабр и оставил 17 комментариев.
Forwarded from Диджитализируй!
Показал, как я веду базу книг в Obsidian — на этом примере вы научитесь вести базы любых данных в Obsidian, автоматически их анализировать и визуализировать произвольным образом.
Вжух!
YouTube | VK | RuTube | Дзен | Платформа
0:00 Что будем делать
0:47 Коротко об Obsidian
1:19 Метаданные и их использование
2:26 Установка и настройка dataview
3:10 Выборки данных с dataview
6:46 Заведение метаданных
8:57 Использование шаблонов для добавления записей
10:15 Использование метаданных с dataview
13:06 Мякотка — использование dataviewjs
17:10 Произвольная JS-логика в dataviewjs
19:39 Настраиваемая ширина отдельных заметок с CSS
25:08 Пишем свой JS/HTML/CSS для визуализации данных
34:45 Возможности воодушевляют!
36:31 Сложно? Не упарывайтесь, просто пишите заметки!
39:35 Спасибо!
Вжух!
YouTube | VK | RuTube | Дзен | Платформа
0:00 Что будем делать
0:47 Коротко об Obsidian
1:19 Метаданные и их использование
2:26 Установка и настройка dataview
3:10 Выборки данных с dataview
6:46 Заведение метаданных
8:57 Использование шаблонов для добавления записей
10:15 Использование метаданных с dataview
13:06 Мякотка — использование dataviewjs
17:10 Произвольная JS-логика в dataviewjs
19:39 Настраиваемая ширина отдельных заметок с CSS
25:08 Пишем свой JS/HTML/CSS для визуализации данных
34:45 Возможности воодушевляют!
36:31 Сложно? Не упарывайтесь, просто пишите заметки!
39:35 Спасибо!
YouTube
🍑Obsidian / Dataview / JS — базы данных и произвольная визуализация в заметках
0:00 Что будем делать
0:47 Коротко об Obsidian
1:19 Метаданные и их использование
2:26 Установка и настройка dataview
3:10 Выборки данных с dataview
6:46 Заведение метаданных
8:57 Использование шаблонов для добавления записей
10:15 Использование метаданных…
0:47 Коротко об Obsidian
1:19 Метаданные и их использование
2:26 Установка и настройка dataview
3:10 Выборки данных с dataview
6:46 Заведение метаданных
8:57 Использование шаблонов для добавления записей
10:15 Использование метаданных…
Forwarded from Neural Kovalskii
Мы в red_mad_robot реализовали интересный кейс с применением workflow агентов на базе RAG CoT+SO
Переходите читать на Хабр
Раскрыли некоторые технические детали
Переходите читать на Хабр
Раскрыли некоторые технические детали
Хабр
Как AI-агенты ускоряют работу девелопера: автоматизация данных и управление знаниями
Привет! На связи команда NDT by red_mad_robot . Рассказываем, как создавали смарт-платформу с двумя workflow AI-агентами для группы компаний ФСК — одного из крупнейших российских девелоперов. Система...
Forwarded from Унарный код || прунинг
Пост разделен на две части. В первом разделе обсуждается TDA, начиная с вариаций преобразования Фурье для временных рядов с непрерывным значением, в то время как во втором разделе показано, как строить диаграммы постоянства на основе преобразований Уолша-Фурье для категориальных временных рядов.
В этом разделе мы рассмотрим топологические свойства временных рядов через их представления в частотной области, такие как спектры второго порядка. Я строю диаграмму постоянства, используя фильтрацию набора подуровней на основе сглаженной конической оценки спектра второго порядка временного ряда {xₜ, t = 1, …, T}. Модифицированный DFT (Stoffer,1991) и соответствующая периодограмма с сужением представлены на рисунке 1, для t= 1,2,...,T, где ht - функция конусности.
Я использую функцию R
gridDiag для построения диаграмм постоянства для тех же трех сигналов периодического временного ряда, показанных в предыдущей серии постов. В случае 1 spc.t1 обозначает сглаженную конусообразную периодограмму (конусность = 0.1 по умолчанию в спецификации функции R) и сглаживание с помощью модифицированного окна Даниэля (0.25, 0.5, 0.25) временного ряда ts1.# Шаг 1: Регрессия и стандартизация
x.1 <- 1:length(ts1)
ts1 <- lm(ts1 ~ x.1)$residuals
ts1 <- ts1 / sd(ts1)
# Шаг 2: Вычисление спектра
spc.t1 <- spec.pgram(ts1, kernel = kernel("modified.daniell", c(1)), plot = FALSE)
# Шаг 3: Построение диаграммы постоянства
PD.t1 <- gridDiag(FUNvalues = spc.t1$spec, location = FALSE, sublevel = TRUE)$diagram
На втором рисунке в верхнем ряду показаны сигналы временных рядов, в среднем ряду — спектры второго порядка, а в нижнем ряду — диаграммы постоянства. Пики в спектрах приходятся на разные частоты и соответствуют вкладам этих частот в общую дисперсию xₜ. Три диаграммы постоянства в нижнем ряду похожи друг на друга, поскольку этот метод нечувствителен к различиям в периодичности временных рядов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Унарный код || прунинг
Стоффер предположил, что спектральный анализ Уолша подходит для анализа временных рядов с дискретными и категориальными значениями, а также временных рядов, содержащих резкие разрывы. Построение преобразования Уолша-Фурье использует метод Шанкса для разложения временного ряда {xₜ, t = 1, …, T} на последовательность функций Уолша, каждая из которых представляет собой отличительный бинарный шаблон последовательности.
Если длина временного ряда T не равна 2, пусть T₂ обозначает следующую степень 2. Например, если T = 1440, то T₂ = 2¹¹ = 2048. Я использую заполнение нулем для получения временного ряда длиной T₂, установив значение x(T+1), x(T+2), …, x_(T₂) = 0.
Для j = 0, …, T₂ - 1 пусть λⱼ = j/T₂ обозначает j-ю последовательность. Пусть W(t,j) обозначает t-е значение функции Уолша в последовательности λⱼ. Функции Уолша генерируются итеративно следующим образом (Шанкс, 1969), где [a] обозначает целую часть a. Более подробную информацию о функциях Уолша см. в работе Стоффера (1991).
Преобразование Уолша-Фурье (WFT) временного ряда вычисляется как показано на рисунке 4. Вычислительная сложность равна O(T log(T)) (Шанкс, 1969). В примере я иллюстрирую построение диаграммы постоянства для категориального временного ряда с двумя уровнями.
На рисунке 5 в первом столбце показан смоделированный категориальный временной ряд длиной T = 120 с двумя уровнями, 0 или 1. Уровень 1 происходит только в период между t = 21 и t = 100. В среднем столбце показан временной интервал, в то время как в третьем столбце показана диаграмма его постоянства. На диаграмме есть одна точка, удаленная от диагональной линии, которая является важной точкой рождения и смерти 0-й гомологической группы. Ниже показан R-код для моделирования временных рядов и преобразования WFT в диаграмму постоянства.
# Создание временного ряда
x.ts <- c(rep(0, 20), rep(1, 80), rep(0, 20))
# WFT
x.diag <- gridDiag(FUNvalues = x.WFTs, location = FALSE, sublevel = TRUE)$diagram
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM