Интересное что-то
557 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Math for Impact
Последовательная проверка SRM

TL;DR
Позволяет во время эксперимента проверять корректность долей выборок. Эффективен при длинных тестах.

Почему обсуждается?
Мы хотим останавливать эксперимент как можно раньше, если в нём есть ошибки. Один из простых индикаторов таких проблем — Sample Ratio Mismatch (SRM). Это сильное расхождение между планируемыми и фактическими долями участников в группах. SRM позволяет выявить сбои в рандомизации, ошибки в фильтрации и сетевые эффекты.

Проблема
Нужно принимать решение о наличии SRM без ожидания конца эксперимента и накопления всей выборки.

Предположения
1. Распределение пользователей по группам случайное, сетевые эффекты отсутствуют.

Решение
Фиксируем:
– вероятность ошибки α,
– ожидаемые доли групп p(1), …, p(k),
– параметры априорного распределения b(1), …, b(k).

Часто b(i) = 1 или B·p(i), где B > 0. Эти параметры влияют на баланс между мощностью и скоростью принятия решения.

Во время теста:
1. Добавляем наблюдение — номер группы, в которую попал новый пользователь.
2. Обновляем наблюдаемые доли групп q = (q(1), …, q(k)).
3. Считаем байесовское отношение правдоподобий O(q).
4. Если O(q) > 1 / α → считаем, что SRM присутствует; иначе — продолжаем.

Достоинства
– Быстрее останавливает тест в случае SRM.
– Статистика критерия и граница считаются по простым формулам.
– Для запуска достаточно зафиксировать всего один параметр — уровень значимости. Параметры априорного распределения можно задать равными единице.

Ограничения
– Обладает меньшей мощностью в сравнении с применением критерия хи-квадрат в конце эксперимента.
– Критерий консервативен: фактическая вероятность ошибки обычно ниже заданного α, из-за чего немного снижается мощность.
– Если данные поступают раз в день, их нужно случайно упорядочить перед подачей в критерий.
– Выбор параметров априорного распределения не всегда очевиден — требует экспертной настройки или моделирования.

Библиография
Основная статья:
Lindon M., Malek A. Anytime-valid inference for multinomial count data //Advances in Neural Information Processing Systems. – 2022. – Т. 35. – С. 2817-2831.
Популярное изложение:
A Better Way to Test for Sample Ratio Mismatches (SRMs) and Validate Experiment Implementations
На русском:
Как оценить валидность A/B-тестов. SRM и другие критерии
Forwarded from Artificial stupidity
#libraries

Еще одна интересная библиотека. В этот раз со всякими интерпретируемыми ML моделями.

imodels - sklearn-style библиотека с целым зоопарком методов интерпетируемого ML (авторы обещают там SoTA методы). Набор методов выглядит внушительно (но надо бы поковыряться).

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

Пример кода для одного из методов (а на картинке визуализация метода)
from sklearn.model_selection import train_test_split
from imodels import get_clean_dataset, HSTreeClassifierCV # import any imodels model here

# prepare data (a sample clinical dataset)
X, y, feature_names = get_clean_dataset('csi_pecarn_pred')
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=42)

# fit the model
model = HSTreeClassifierCV(max_leaf_nodes=4) # initialize a tree model and specify only 4 leaf nodes
model.fit(X_train, y_train, feature_names=feature_names) # fit model
preds = model.predict(X_test) # discrete predictions: shape is (n_test, 1)
preds_proba = model.predict_proba(X_test) # predicted probabilities: shape is (n_test, n_classes)
print(model) # print the model
Forwarded from Artificial stupidity
#paper

По запросам трудящихся (@tech_priestess), поковырялся в не очень старой, но и такой уж молодой (февраль 2022) статье от авторов из весьма уважаемого университета UC Berkley: "Hierarchical Shrinkage: improving the accuracy and interpretability of tree-based methods".

Текста получилось много, потому будет заметка будет в telegraph.

P.S. Разбирал быстро, так что если видите косяки - пишите, я буду докидывать апдейты к посту.
Elements of Programming Interviews in Python: The Insiders' Guide by Adnan Aziz, Tsung-Hsien Lee and Amit Prakash

EPI is your comprehensive guide to interviewing for software development roles.

The core of EPI is a collection of over 250 problems with detailed solutions. The problems are representative of interview questions asked at leading software companies. The problems are illustrated with 200 figures, 300 tested programs, and 150 additional variants.

The book begins with a summary of the nontechnical aspects of interviewing, such as strategies for a great interview, common mistakes, perspectives from the other side of the table, tips on negotiating the best offer, and a guide to the best ways to use EPI. We also provide a summary of data structures, algorithms, and problem solving patterns.

Coding problems are presented through a series of chapters on basic and advanced data structures, searching, sorting, algorithm design principles, and concurrency. Each chapter stars with a brief introduction, a case study, top tips, and a review of the most important library methods. This is followed by a broad and thought-provoking set of problems.

Links:
Amazon
Free Sample

Navigational hashtags: #armknowledgesharing #armbooks
General hashtags: #programming #python #algorithms #datastructures #interviewpreparation #interviewprep #interview

@data_science_weekly
Forwarded from Андрей Созыкин (Andrey Sozykin)
Протокол TLS

В новом видео по компьютерным сетям разбираемся как работает протокол TLS. Он описывает, как совместно использовать шифрование, MAC и сертификаты для обеспечения безопасной передачи данных по небезопасным сетям.

TLS находится на транспортном уровне стека TCP/IP. Для передачи данных TLS использует протокол TCP. 

TLS устроен достаточно сложно и включает несколько протоколов, разбитых на два уровня. В основе протокол записей (record protocol). Именно на уровне протокола записей производится шифрование и обеспечение целостности.

Поверх протокола записей в TLS работают несколько протоколов: протокол установки соединения (handshake protocol), оповещений (alert protocol), передачи данных (application data) и смены шифра (change cipher). В лекции подробно рассматриваем, как они устроены.

В следующем видео будем расшифровывать пакеты TLS в WireShark.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
В новом видео по компьютерным сетям на практике с помощью Wireshark анализируем протокол TLS.

Начинаем с просмотра зашифрованных пакетов TLS. В таком виде доступно всего три поля заголовка Record Layer: тип протокола TLS следующего уровня, версия TLS и длина данных. Все остальное зашифровано, посмотреть это нельзя.

Чтобы расшифровать данные, которые передаются по TLS, нужно получить ключи шифрования. Для этого можно установить переменную окружения SSLKEYLOGFILE, в которую прописать путь к файлу. В этот файл будут записываться ключи шифрования TLS. Так работают популярные библиотеки TLS: NSS, OpenSSL и boringssl. Именно эти библиотеки используют большинство браузеров. В видео я использую браузер Chrome. Полная инструкция по настройке расшифровки пакетов TLS есть на сайте Wireshark.

После настройки Wireshark начинает показывать расшифрованные пакеты TLS. Мы можем видеть не только заголовки Record Layer, но и данные, которые ранее были зашифрованы. В видео это запросы HTTP к сайту для практических занятий курса.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
https://youtu.be/kIjt0Jt94nI

Запускаю новый курс по протоколу Model Context Protocol (MCP). Этот протокол позволяет подключать к языковым моделям внешние источники данных и инструменты (tools).

MCP важен, т.к. является открытым стандартным протоколом, поэтому с его помощью можно подключить к вашему ИИ-приложению большое количество готовых сервисов. В этом MCP похож на семейство протоколов TCP/IP для интернета.

Протокол MCP разработала компания Anthropic, но в декабре 2025 года она передала его в Linux Foundation. Теперь это действительно открытый протокол, развиваемый большим сообществом без привязки к конкретному вендору.

В лекции рассмотрена архитектура MCP и возможности MCP-серверов. В следующем видео научимся использовать MCP Inspector для изучения работы существующих MCP-серверов.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
https://youtu.be/LYzKRCBwJqk

Продолжаю записывать курс по MCP, в этот раз практика по MCP Inspector. Это бесплатная программа с открытыми исходными кодами для тестирования и отладки MCP серверов.

С помощью MCP Inspector подключаемся к удаленному MCP-серверу Context7. Этот сервер предоставляет языковой модели доступ к актуальной документации по библиотекам для различных языков программирования. Это важно, т.к. языковые модели обучаются на данных, которые были собраны достаточно давно, поэтому могут генерировать устаревший код.

В видео вызываем инструменты (tools) Context7 сначала из MCP Inspector, а потом из Cursor. Также смотрим, как данные передаются от клиента к серверу в формате JSON. Но подробно работу протокола MCP будем изучать далее в курсе.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
В новой лекции по компьютерным сетям рассказываю, как выполняется установка соединения в протоколе TLS. Перед тем как передавать данные по TLS, клиент и сервер должны выполнить несколько предварительных действий:
- Договориться, какой набор шифров TLS будет использоваться для защиты данных.
- Проверить подлинность сервера, к которому подключается клиент (иногда сервер дополнительно проверяет подлинность клиента).
- Обменяться ключами симметричного шифрования и MAC.
Именно эти действия и выполняются в процессе соединения.

В лекции рассказываю, как устроена установка соединения в современной версии TLS 1.3. Для этого в TLS есть специальный Handshake Protocol, который работает поверх протокола записей (Record Protocol).

Также в TLS 1.3 есть сокращенный процесс установки соединения 0-RTT, который нужен для восстановления существующей сессии TLS. Если клиент и сервер ранее уже устанавливали соединения и обменивались ключами симметричного шифрования, то с помощью 0-RTT можно переиспользовать эти ключи и сразу в первом же сообщении отправлять зашифрованные данные. Однако это негативно влияет на безопасность.

Чтобы корректно закрыть соединение, клиент и сервер должны отправить друг другу сообщения close_notify протокола оповещений (Alert Protocol). В случае ошибки соединение разрывается в одностороннем порядке, при этом нужно отправить сообщение об ошибке Error Alert.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Data Blog
Недавно слушала работу, одним из направлений которых был анализ моделей методами интерпретируемости для понимания поведения предметной области. И одним из моих тейков автору был такой — модель — она на то и модель — мы не можем утверждать, что нашли лучшую и максимально корректную, а потому методы интерпретируемости и инсайты из них надо аккуратно аблитировать.

И в эту сторону мне попалась работа “Quantifying LLM Attention-Head Stability: Implications for Circuit Universality” с вопросом: если мы обучаем одну и ту же GPT-архитектуру на одних и тех же данных, но с разными random seeds, получаем ли мы одни и те же attention-головы и одни и те же circuits?

Что сделали:

Натренировали 26 моделей (от 2 до 12 слоёв) с разными seeds и сравнили attention-головы между рефитами. Метрика — best-match по cosine similarity между post-softmax attention maps. То есть, для каждой головы h_i берётся max similarity к головам h_j в другой модели. На этой основе они показали три вещи.

Что нашли:

1. Ранние и последние слои оказываются относительно стабильными (от сида к сиду attentions похожи по метрике), а со средними слоями это не работает и провал усиливается с глубиной модели.

2. Стабильность отрицательно коррелирует с ℓ2-нормами query-матриц: где норма больше — там согласованность между seed’ами ниже .

3. В более глубоких слоях нестабильные головы оказываются более важными — важность для авторов — насколько меняется perplexity при удалении головы.

4. Residual stream стабильнее отдельных attention-голов . То есть локальные модули могут гулять, а магистральное представление — сходиться.

5. Оптимизатор может влиять на стабильность: AdamW даёт более стабильные головы, чем Adam, без заметной потери качества. (Но тут сразу возникает вопрос — а если притащить другие оптимизаторы, scheduler’ы? Насколько это эффект AdamW и именно его?)

Почему прикольно:

Меня зацепили дизайн работы и результаты для средних слоев. Потому что на моей практике, mid-layers богаты на "приколы" — представления, переломы и локализации признаков (и вроде у Antropic есть работа и тейк про богатство middle layers) — и если именно они нестабильны при refits, это грустно — стрельба пушкой по воробьям, если рассматривать одну модель (никогда так не делайте).

С другой стороны, claims звучат сильнее, чем позволяет эксперимент. Модели небольшие (до GPT-2 small, 124М). Неочевидно, что те же эффекты сохранятся при масштабировании на 1B+ или instruction-tuned модели. И, конечно, близость attention maps по cosine similarity не гарантирует функциональную эквивалентность голов.

В этом смысле, работа открывает много вопросов — так что если вы ищете тему для диплома или paper — можно записывать в идеи-для-рисерча 🙂

Кстати, надеюсь на неделе допишу ещё туториал с обзором на новую библиотеку, но как говорят мои коллеги "зарекаться не буду" ))