Интересное что-то
517 subscribers
2.72K photos
253 videos
138 files
4.51K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Pavel Zloi
Глубокое исследование Deep Research

Уже несколько дней думаю над архитектурой sgr-deep-research: в целом проект мне нравится, но в нём не хватает модульности, да и непонятно, как добавить поддержку моих любимых MCP-серверов или, скажем, агента, который будет сам тулы писать.

Моё жизненное кредо: если какого-то функционала в программе нет, значит, я его напишу сам.

Первой мыслью было сразу сесть за код и пилить фичи, но каждый раз, прикасаясь к кодовой базе, ощущал себя как Мидас, но наоборот: вместо золота получалось что-то сомнительное, и результатом я оставался недоволен. Поэтому усилием воли притормозил свои юношеские порывы и решил сесть да "покурить манускрипты древних", посмотреть схемы и, прежде чем садиться за код, разобраться, как в принципе работают системы класса Deep Research: как они устроены, что делают и почему делают именно то, что делают.

Итак, классические Deep Research-системы работают следующим образом (рис. 1):
1️⃣ Пользователь делает запрос.
2️⃣ Система пытается понять, достаточно ли ей данных для дальнейших шагов, или требуется уточнение.
3️⃣ Если нужно уточнение, система приглашает пользователя это сделать и затем возвращается на 2-й шаг — и так по циклу, пока системе не будет достаточно данных.
4️⃣ Если уточнение больше не требуется, система передаёт полученный контекст планировщику.
5️⃣ Планировщик составляет план задач без явного указания того, каким образом решать каждую из них. Представьте что-то вроде чек-листа со списком дел — это оно и есть.
6️⃣ В цикле каждая задача обрабатывается: если необходимо запросить данные через тул — система это делает; если нужно перегенерировать результат — пробует выполнить задачу ещё раз. И так, пока все пункты плана не будут выполнены (рис. 2).
7️⃣ После того, как план завершён, система делает финальную проверку: пытается понять, корректен ли результат и соответствует ли он поставленной задаче.
8️⃣ Если нет — система возвращается к 5-му пункту и просит планировщика доработать план.
9️⃣ Если всё окей, формируется отчёт, который возвращается пользователю.

Такой вот простой и изящный алгоритм, в котором первую скрипку играет большая языковая модель.

Если у вас есть уточнения или советы — не стесняйтесь принять участие в обсуждении под данной публикацией.

PS. Занятный факт, ещё пять лет назад подобные системы казались мне фантастикой, сегодня это уже скорее рутина.

#deepresearch #ai @evilfreelancer
Forwarded from Quant Researcher
Financial Data Science Python Notebooks — большой набор Jupyter‑ноутбуков про финансы

https://terence-lim.github.io/docs/financial-data-science-notebooks/README.html

Авторы собрали практические примеры по финансовой эконометрике, временным рядам и машинному обучению.

😎 Данные, данные, данные…

Вместе с ноутбуками поставляется библиотека FinDS, которая демонстрирует, как строить пайплайн для работы с финансовыми базами. Например, с макроэкономическими данными от FRED и BEA.

🅱️ Классические вопросы: цены, факторы и регрессии

Если вас интересуют классические стратегии, здесь есть ноутбуки про свойства цен и тестирование гипотез по методике Джегадиша—Титмана (моментум на CRSP‑акциях, оценка моментов и Newey—West стандарты ошибок). Есть материалы по исследованию Фама—Френч (стоимость и размер, линейные регрессии на CRSP/Compustat), по кросс‑секционным регрессиям Фама—Макбет (CAPM, нелинейные регрессии и квадратичная оптимизация), а также разбор стратегий контртренда с учетом структурных разрывов и затрат на реализацию.

🔮 Макроэкономика и риск‑менеджмент

Более широкие темы включают анализ экономических показателей (прогнозы, занятость, выбросы), тесты регрессий для индексов потребительских и производственных цен, промышленного производства и инфляции.

Есть ноутбуки по моделям пространственных состояний (скрытые марковские модели, гауссовы смеси), по кривой доходности и моделированию структуры процентных ставок, по факторной структуре доходностей облигаций (PCA), по оценке опционов (биномиальные деревья, Black–Scholes–Merton, Монте‑Карло), по Value‑at‑Risk для криптовалют.

🪐 Текстовый анализ и NLP


В ноутбуках по NLP разбирают, как построить тематические модели для стенограмм FOMC, оценить тональность отчётов 10‑K/10‑Q на основе словарей Loughran–Macdonald, проанализировать описания бизнеса с использованием методов POS‑тэггинга и кластеризации.

Далее идут примеры классификации отраслей, прогнозов макроэкономических индикаторов и нейросетей с эмбеддингами слов, использование сверточных и рекуррентных сетей для прогнозирования макро данных, примеры reinforcement learning для планирования пенсионных расходов.

🤡 LLM‑ы

И наконец, черешенка на торте — раздел про большие языковые модели: построение языковых моделей для «Федспика», анализ SEC Edgar, fine‑tuning моделей на индустриальной классификации, prompt‑инжиниринг для новостного сентимента и даже проектирование multi‑agent LLM‑систем для оценки корпоративной благотворительности, чего только не придумают.

Крутая энциклопедия по современному количественному анализу: от классической эконометрики и факторного анализа до сетевой науки, NLP и LLM‑агентов.

Что из этого вы пробовали? Приходите к нам в чат, обсудим)

Quant Researcher
Forwarded from Young&&Yandex
🏁 Новое домашнее задание по ML

Самый разгар сезона Тренировок по ML — публикуем домашнее задание на выходные для участников:

🔘ДЗ №4
https://contest.yandex.ru/contest/79892/enter/
Дедлайн: 28 сентября, 23:59


А ещё смотри подборку материалов от Радослава Нейчева:
🔘
Глава про RL в ML-хендбуке Яндекса (автор Сергей Иванов
)
🔘
Методичка на русском языке от Сергея Иванова

🔘
Книга Ричарда Саттона Reinforcement Learning: An Introduction


И присоединяйся на две последние лекции сезона, ещё можно успеть: yandex.ru/yaintern/training/ml-training

Подписывайся 🔴⚫️
@Young_and_Yandex
Please open Telegram to view this post
VIEW IN TELEGRAM
Двенадцать единственных и очевидных способов записать строку в файл в Python!

В Python можно принтануть сразу в файл!

with open("file.txt", "w") as f:
print("привеееет!", file=f)


Хрен знает, зачем это вам! Но вот знайте!

Вообще в питоне есть один очевидный способ сделать это, дзен дело говорит!

Первый очевидный способ:

from pathlib import Path
Path("file.txt").write_text("привеееет!")


Второй очевидный способ:

from pathlib import Path
Path("file.txt").write_bytes(
"привеееет!".encode("utf-8")
)


Третий очевидный способ:

with open("file.txt", "w") as f:
print("привеееет!", file=f)


Четвёртый очевидный способ:

with open("file.txt", "w") as f:
f.write("привеееет!")


Пятый очевидный способ:

import os
fd = os.open(
"file.txt",
os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
os.write(fd, "привеееет!".encode("utf-8"))
os.close(fd)


Шестой очевидный способ:

import io, shutil
data = io.StringIO("привеееет!")
with open("file.txt", "w") as f:
shutil.copyfileobj(data, f)


Седьмой очевидный способ:

import sys
sys.stdout = open("file.txt", "w")
print("привеееет!")
sys.stdout.close()


Восьмой очевидный способ:

from contextlib import redirect_stdout
with open("file.txt", "w") as f:
with redirect_stdout(f):
print("привеееет!")


Девятый очевидный способ:

import mmap
line = "привеееет!".encode("utf-8")
with open("file.txt", "w+b") as f:
f.write(b"\x00" * len(line))
f.flush()
with mmap.mmap(f.fileno(), 0) as mm:
mm[:len(line)] = line
mm.flush()


Десятый очевидный способ:

import tempfile, os
with tempfile.NamedTemporaryFile("w", delete=False) as f:
f.write("привеееет!")
name = f.name
os.replace(name, "file.txt")


Одиннадцатый очевидный способ:

import csv
with open("file.txt", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["привеееет!"])


Двенадцатый очевидный способ:

import tarfile
import io
data = io.BytesIO("привеееет!".encode("utf-8"))
with tarfile.open("archive.tar", "w") as tar:
info = tarfile.TarInfo("file.txt")
info.size = len(data.getvalue())
tar.addfile(info, data)
with tarfile.open("archive.tar", "r") as tar:
tar.extractall(
path=".",
members=[tar.getmember("file.txt")], filter="data")


Вооот!
Forwarded from Pavel Zloi
Прекурсор про курсор или как вайб-кодить большие проекты

Намедни в нашем уютном чатике состоялась дискуссия про разработку проектов с большим и сложным техническим заданием (ТЗ) используя средства вайб-кодинга, в результате которого решил собрать эту нитку в формат поста, авось кому ещё пригодится.

Проблема


Итак, предположим на горизонте маячит большой и сложный проект, его ТЗ объёмное и неоднородное - быстрое решение типа "зафигачил всё в чатик модельки и ждёшь чуда" не работает, так как модель забывает контекст, связи между логикой теряются, модель путает уровень абстракции, то переписывает архитектуру, то лезет в детали до того, как мы определили базовые кирпичи.

Как итог - имеем потерю контроля и топтание на месте вместо движения вперёд.

Как я решаю

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

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

В-третьих, "класс за раз". Просим модельку начать пилить код классов, сначала первый слой, то есть те классы, у кого нет зависимостей, на каждый класс пусть модель делает минимальные unit-тесты. Затем второй слой - это классы которые зависят только от классов первого слоя и от самих себя, третий слой - классы которые зависят от классов первого, второго слоёв и от себя и так далее.

Если подмодуль крупный, выношу в отдельную сессию и даю выжимку контекста (что готово, где границы, какие правила действуют).


Однако, каждый раз играть в эту игру не просто, можно проиграть, и тут на помощь приходят инструменты разработчика и Cursor IDE в частности.
Forwarded from Neural Kovalskii
Circuit Tracing от Anthropic: как мы в R&D by red_mad_robot решили заглянуть внутрь LLM при использовании в RAG-пайплайнах

Ищем галлюцинации под микроскопом!

29 мая Anthropic выложили в open-source свои инструменты Circuit Tracing методологию механической интерпретируемости, которую мы в R&D подразделении red_mad_robot первыми применили для решения практической задачи детекции галлюцинаций в RAG-системах!

В начале 2025 года, когда я возглавил новое R&D направление, я поставил амбициозную задачу: не просто оценивать качество ответов LLM "снаружи", а заглянуть внутрь процесса генерации и понять, откуда берутся галлюцинации.

Почему именно RAG-пайплайны и Circuit Tracing?

Проблема была очевидна: RAG-системы часто смешивают информацию из контекста с "внутренними знаниями" модели, создавая правдоподобные, но неточные ответы
Существующие методы детекции работают post-factum, а нам нужно было понять механизм принятия решений в реальном времени

Circuit Tracing от Anthropic давал именно это возможность построить атрибуционные графы и проследить, как токены входного контекста влияют на финальный ответ модели

Конкретные результаты нашего исследования

85% точность детекции галлюцинаций вот что мы получили на тестовом датасете с нашей реализацией на базе Qwen2.5-7B.

Как отмечает наш исследователь Ирина Кошкина:
"Основная идея — измерение доли влияния от токенов входа, соответствующих контексту, среди всего влияния от всех активных токенов."

Наша метрика Groundedness включает:
- Контекстную долю влияния (Gctx)
- Replacement Score — качество признаков vs ошибок
- Completeness Score — полнота объяснения через атрибуционный граф

Технические вызовы и решения

Cross-Layer Transcoders (CLT) стали ключевым компонентом системы
Вместо анализа отдельных слоев мы научились отслеживать влияние признаков между несколькими архитектурными уровнями трансформера

Основные проблемы, которые пришлось решать:
1. Вычислительная сложность процедура анализа на порядки медленнее генерации
2. Зависимость от качества обученного транскодера
3. Токен-уровневое сопоставление, приводящее к ложным срабатываниям

Но результат того стоил мы получили рабочий инструмент для анализа внутренних процессов модели во время генерации ответов в RAG-системах


Отдельное спасибо отделу маркетинга red_mad_robot за подготовку детальной статьи оформления и валидации на Хабре

Отдельное спасибо Саше (@dealerAI) за экспертную валидацию нашей гипотезы на старте проекта

Когда предлагаешь исследовать "атрибуционные графы для детекции галлюцинаций в RAG", поддержка опытных друзей по цеху критически важна для получения ресурсов и мотивации команды

Полный технический разбор с кодом, формулами и результатами экспериментов доступен в нашей статье на Хабре закидываем в закладки и ставим +
Forwarded from DeepSchool
Когда память дороже точности: приближённые структуры данных

Проблема: многие алгоритмы с линейным потреблением памяти не справляются с большим количеством данных. Решение: приближённые структуры!

В новой статье разбираем три популярные структуры данных с константным потреблением памяти, решающие ключевые задачи:
- HyperLogLog — оценка количества уникальных элементов,
- Фильтр Блума — проверка принадлежности ко множеству,
- Count-Min Sketch — подсчёт частот элементов.

Все они работают приближенно, зато позволяют работать с огромными объёмами данных. Читайте, как применять их на практике: https://blog.deepschool.ru/math/kogda-pamyat-dorozhe-tochnosti-priblizhyonnye-struktury-dannyh/
#llm #ml #systemdesign

Рекомендую изучить и в необходимых кейсах применять как методичку
Иллюстрация пайплайна из истории про спасение проекта с LLM под капотом

(проект про извлечение промышленных данных из разных PDF от разных поставщиков с таблицами и графиками)

Ссылки:
(1) Серии: 1, 2, 3, 4, 5, 6+7, Эпилог
(2) Описание первого и второго промпта.

Ваш, @llm_under_hood 🤗
Highly recommend this mathy blog about ML:

https://francisbach.com/
This media is not supported in your browser
VIEW IN TELEGRAM
💻 Написал статью про Наивный байесовский классификатор.

Здесь указан переход от классической теоремы к задаче машинного обучения на примере датасета со спамом. Дополнительно приведен пример для непрерывных случайных величин и описаны базовые предположения для использования метода.

1. Ссылка на статью.
2. Датасет, с которым работал.
3. Код в Google Colab.

Первый раз писал тут, делюсь болью:

1. Столкнулся с тем, что при написании текста, страничка залагала, а при обновлении не сохранился кеш + нет автосохранения. После каждого написания текста советую нажимать "сохранить".
2. Нет конвертации в LaTeX. Поэтому пришлось писать формулы, конвертировать их в .svg, заливать в GitHub и по ссылке прикреплять в текст, вот такой замечательный пайплайн.
3. Периодически картинки не отображаются (хотя ведет на доступные ссылки) в моем GitHub.

Всем приятного чтива, а я пошел писать следующий пост!

😌😌😌🐸
😌😌😌😌
😌😌😌

Это я жду ваших комментов и реакций! Ставьте 🐳, делитесь и сохраняйте к себе!

Следующие посты будем разбирать математику, которая есть в A/B тестах или в ML. На примете разбор логистической регрессии.

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