Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
#ml

Регуляризация комплексными числами
Forwarded from Data Funk
Регуляризация — верный способ борьбы с переобучением модели, и чаще всего используем L1, L2 или их комбинацию. Почему именно их, а не L0, L1.5 или L4? Если коротко, то L1 и L2 это превосходный баланс между простотой и результатом. L2-регуляризация добавляет к функции ошибки (лоссу) штраф, который зависит от суммы квадратов параметров модели. Это делает функцию выпуклой с линейными градиентами и простой в оптимизации. В случае с L4 градиенты для больших параметров очень велики, а около нуля почти затухают, что сильно замедляет градиентный спуск. L1-регуляризация штрафует за сумму модулей коэффициентов модели, которые обновляются довольно быстро с помощью покоординатного спуска, по пути зануляя "неважные" параметры. Вырожденные формы регуляризация вроде L0 или L∞ на практике мало полезны, так как L0 штрафует просто за количество ненулевых параметров, а L∞ — только за самый большой параметр модели. Что касается L1.5, то выигрыш от него примерно такой же, как просто от часто применяемой линейной комбинации L1 и L2.
Forwarded from Data Funk
А может быть степень регуляризации комплексной - L(p+j*q)? Да, но в общем случае это ведет к комплексным коэффициентам модели X*a = y. Что бы этого избежать и оставить коэффициенты и лосс только вещественными, можно их проквантовать: т.к. |a[i]|^(p+jq) = |a[i]|^p * (cos(q*log(|a[i]|)) + j*sin(q*log(|a[i]|)), то при q*log(|a[i]|) = 2*pi*n (n - целое число), получаем: |a[i]|^(p+j*q) = |a[i]|^p. С одной стороны можно также использовать градиентный спуск для указания направления уменьшения ошибки, с другой все коэффициенты модели квантуются и a∊{±exp(2*pi*n/q)}.
Forwarded from Data Funk
Я использовал датасет для предсказания популярности (измеряется от 0 до 100) англоязычных песен на spotify за последние 5 лет по их музыкальным характеристикам. Перебирая различные p и q для L(p+j*q) на графике показана ошибка линейной регрессии. Тут видно, что при должном усердии для любых p можно получить схожие результаты, но качество резко меняется при росте мнимой части - q, за счет того, что ±exp(2*pi*n/q) лежат чаще друг к другу при росте q.
Forwarded from Data Funk
Но это работает до некоторого предела, например если зафиксировать p=2 и далее увеличивать q, то при больших значениях ошибка начинает сильно шататься.
Forwarded from Data Funk
А тут показано изменение свободного члена (intercept) линейной регрессии при разных p и q, картинка немного шумная, т.к. процесс оптимизации носит случайный характер.
Как пройти алгоритмический собес в 2025 году

Вспомним какие темы чаще всего встречаются на собесах.
🟢Группа 1
Префикс сумма, бинарный поиск, два указателя, хеш-таблицы.
🟡Группа 2
Обход в ширину, обход в глубину, алгоритм Дейкстры, алгоритм Флойда, деревья.
🔴Группа 3
Динамическое программирования, монотонный стек, дерево-отрезков, теория чисел.

Задачи из группы 1 очень часто встречаются на собесах.
Задачи из группы 2 реже, но все равно встречаются, эта группа больше связана с графами.
Задачи из группы 3 встречаются очень редко (кроме HFT компаний и им подобных).

Самое сложное и самое важное — это изучение тем из первой группы.

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

Специально для вас, товарищи, наш преподаватель Тимур (регулярно проводит собесы в Яндексе) подготовил ➡️ Roadmap по группе 1.
Важно, чтобы у вас была прочная база знаний по всем четырем темам, прежде чем приступать к сложным задачам. Это связано с тем, что задачи тесно пересекаются между собой. Например, задачи на префикс суммы пересекаются с задачами, связанными с двумя указателями и хеш-таблицей.

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

Как решать красные задачи с Roadmap?
-Отмечу что это не рандомные задачи, а задачи с фундаментальными идеями.
-Это будет небыстрый и непростой путь, но любой может решить эти задачи, главное старанье.
-Вы можете решать задачи в любом порядке. Если не получается решить задачу с литкода в течение часа то можно смотреть разбор, но не задачи с codeforces. Задачи с codeforces достаточно сложные и скорее всего на большинство задач не найдете разбор. Относитесь серьезно к задачам codeforces,они действительно дадут буст. (Если кому поможет, то можно относиться к задачам codeforces как к вызову).

Не совершай эти ошибки.
-Спрошу у гпт как решить задачу с codeforces. (Вы должны научиться решать эти задачи своими руками)
-Я посидел над задачей codeforces целый день и не смог решить, поищу разбор. (Иногда будет возникать соблазн найти разбор задач codeforces, особенно когда действительно попытались решить задачу, но нет, эти задачи должны решить только ВЫ, лучше отвлекитесь и порешайти литкод).
-Злоупотребление разбором задач с литкода. (В день когда решили задачу разбором отметьте ее, и вернитесь к ней через день).
-Посмотрю разбор на работе, проанализирую разбор во время работы, а вечером дома я закодю решение. (Очень плохой подход, нужно сфокусироваться на задаче, без переключений с задачи на работу).

Советы.
-От большого количество информации вы скорее всего будете замечать, что не получается решать/ понять задачи. Вам нужно сделать передышку, и вы увидите, что через несколько дней эти же задачи будут даваться легче. (Это научный факт)
-Фокус важен, выделяй себе время на решения задач, чтобы тебя никто не отвлекал.
-Будь готов на долгую работу, скорее всего за пару месяцев выйти на хороший уровень с нуля не получится.

Прошу очень внимательно отнестись к посту, товарищи, все выводы и советы сформированы на основе многолетнего опыта преподавания не только Тимура, но его топовых коллег по цеху. В общем обязательно поддержите огоньком 🔥 и поделитесь с другом. Это очень мотивирует нас делать такой же топовый контент для вас! Если пост наберет много огоньков 🔥 , то соберем Roadmap для второй группы.

Автор: @algoses
🚨 На канале Дмитрия Аношина, вышло 2 офигенных видео по DBT, при этом дополнительно узнаете о "наборе джентльмена" в системе контроля версий Git, настройке CI/CD в Git Actions, основы организации хранилищ данных и кучу всего интересного.🤯

Оставлю их тут для вас, чтобы долго не искать!🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 5 minutes of data
Бесплатные курсы по ИИ от ведущих компаний и университетов!

Хотите освоить искусственный интеллект в 2025 году? Google, Harvard и другие технологические гиганты предлагают бесплатные курсы! Вот 8 отличных вариантов:

1. Курсы Google AI
Google предлагает 5 различных курсов для изучения генеративного ИИ с нуля. Начните с введения в ИИ и получите полное понимание искусственного интеллекта.
🔗 Подробнее о курсах Google

2. Курс Microsoft по ИИ
От основ до нейронных сетей и глубокого обучения - Microsoft предлагает комплексный курс по ИИ.
🔗 Перейти к курсу Microsoft

3. Введение в ИИ с Python от Harvard
7-недельный курс от Гарвардского университета по изучению концепций и алгоритмов ИИ. Включает практику с библиотеками машинного обучения.
🔗 Записаться на курс Harvard

4. Промпт-инженерия для ChatGPT
6 модулей от Университета Вандербильта научат вас эффективно формулировать запросы к ChatGPT.
🔗 Изучить промпт-инженерию

5. Промпт-инженерия для разработчиков
Курс от OpenAI и DeepLearning с преподавателями Иса Фулфорд и Эндрю Нг. Практические занятия и лучшие практики.
🔗 Начать обучение

6. LLMOps
Новый курс от Google Cloud и DeepLearning. Научитесь работать с pipeline для обработки данных и настройки пользовательских языковых моделей.
🔗 Изучить LLMOps

7. Большие данные, ИИ и этика
4 модуля от Калифорнийского университета в Дэвисе о больших данных и Watson от IBM.
🔗 Узнать об этике ИИ

8. Приложения ИИ и промпт-инженерия
Вводный курс от edX по промпт-инженерии с углублённым изучением и созданием собственных приложений.
🔗 Начать обучение на edX
Гайд несколько про практику, сколько про интуицию внутри RL

naklecha.com/reinforcement-learning
Forwarded from Denis Sexy IT 🤖
В последнее время я все больше программирую с LLM, и теперь добавил в связку o1 Pro:

Когда Sonnet 3.6 с первого раза что-то не может починить, я беру ошибку и код который есть, и прошу o1 Pro разобраться – потом тупо копирую ее ответ в Cursor и он уже сам всё чинит/правит

И чем больше я использую O1 Pro для кода, тем больше замечаю, что ей очень важна разметка промпта и структура кода, поэтому я обновил немного свои тулы для LLM-программирования:

🗺️ Folder Map Generator – примитивно работает, вы ей папку, она вам дерево файлов и каталогов; нужно чтобы LLM правильно писала пути к файлам, так как любая модель путается; файлы не покидают вкладку браузера

📄 Text File Merger for LLM – эта штука стала еще умнее: можно руками указать какие типы файлов взять из папки, автоматом расставятся пути и открывающие/закрывающие теги имен файлов (нужно для думающих моделей), все это поможет быстро добавить нужный кусок проекта в LLM-контекст; файлы не покидают вкладку браузера

Но самое полезное, что если вы положите в папку пустой файл .ignore, то оба тула ее проигнорируют – то есть лишние папки/файлы можно убрать из контекста

***

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

Вот краткая выдержка, общими словами:

1. Сначала, до кода, они дают LLM контекст проекта и просят его понять

2. Группируют похожие файлы по контексту

3. Просят модель прогнозировать, что именно затронет изменение кода

4. Передают ей историю изменений кода
Боремся с проклятыми токенами 😎

Люблю статьи от авторов phi — очень простые с топорными методами, но работают хорошо.

В тех репорте phi-4 показали, что

🔹 Проклятые (и благословенные) токены существуют
🔹 Предложили, как с этим бороться

Для задач, где есть правильный ответ, мы можем найти токены, которые негативно или позитивно влияют на вероятность успешного ответа p(success)

Как найти такие токены? — авторы называют их pivotal tokens

Считаем условную вероятность, что ответ будет правильным при заданном префиксе ответа. То есть просто эмпирически считаем, какой процент правильных ответов будет при префиксе `import Flask`

Таким макаром находим все pivotal tokens в нашем трейн сете. И учим модель различать хорошие токены от плохих. Для этого формируем пары

prompt = promt + answer prefix
good response = good token
bad response = bad token


И запускаем DPO на этих парах. Еще раз: мы учим предсказывать только один токен! ⚠️

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

В таблице 9 можно посмотреть, как DPO на pivotal tokens (stage 1) накидывает в качестве по сравнению с обычным DPO и SFT

🤨 Меня удивило, что проклятыми токенами могут быть вполне безобидные токены в стиле предсказал "that" вместо "the" (см. скрины в треде)

📖 Статья

@neural_cat
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM