ML&|Sec Feed
1.3K subscribers
1.25K photos
81 videos
291 files
1.95K links
Feed for @borismlsec channel

author: @ivolake
Download Telegram
Forwarded from Purple Team Diary's (MRL)
Анализ признаков влияющих на предсказание нейронной сети

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

Одним из эффективных способов достижения этой цели является вычисление градиентов.

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

import tensorflow as tf

@tf.function
def compute_gradients(inputs):
with tf.GradientTape() as tape:
tape.watch(inputs) # Следим за входными данными
predictions = best_model(inputs) # Получаем предсказания от модели
return tape.gradient(predictions, inputs) # Вычисляем градиенты


@tf.function: Этот декоратор позволяет TensorFlow оптимизировать выполнение функции, превращая ее в граф (повышает производительность).

tf.GradientTape(): Контекстный менеджер, который отслеживает операции с тензорами, что позволяет вычислять производные.

tape.watch(inputs): Указывает, что мы хотим следить за изменениями в inputs.

tape.gradient(predictions, inputs): Вычисляет градиенты предсказаний модели по отношению к входным данным.

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

# Пример входных данных
sample = tf.convert_to_tensor(X_test[:1], dtype=tf.float32)

# Вычисление градиентов
grads = compute_gradients(sample).numpy()

# Расчет средних абсолютных градиентов по всем признакам
mean_grads = np.mean(np.abs(grads), axis=(0, 1))

# Сортировка признаков по важности
important_features_idx = np.argsort(mean_grads)[::-1]
sorted_features = X.columns[important_features_idx]
sorted_importances = mean_grads[important_features_idx]

print("Важность признаков:", sorted_features)


sample = tf.convert_to_tensor(X_test[:1], dtype=tf.float32): Преобразуем первый пример из тестового набора в тензор TensorFlow.

compute_gradients(sample).numpy(): Вызываем функцию для вычисления градиентов и преобразуем результат обратно в массив NumPy.

np.mean(np.abs(grads), axis=(0, 1)): Вычисляем среднее значение абсолютных градиентов для каждого признака.

np.argsort(mean_grads)[::-1]: Получаем индексы признаков, отсортированных по убыванию их важности.

sorted_features и sorted_importances: Получаем отсортированные названия признаков и их значения.

Гистограмма:
plt.figure(figsize=(10, 6))
plt.barh(sorted_features, sorted_importances, color='skyblue')
plt.xlabel('Средний абсолютный градиент')
plt.ylabel('Признаки')
plt.title('Наиболее важные признаки')
plt.gca().invert_yaxis()
plt.show()


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

#ML
Forwarded from CodeCamp
Разрабы, внимание: большинство моделей от Mistral теперь доступны бесплатно по API!

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

Не нужен ни VPN ни карточка.
Principles of Beautiful Figures for Research Papers
Видео с подробным разбором принципов визуализации для научных статей, автор - Andrey Churkin (Андрей Чуркин)

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

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

Таймкоды
00:00 Вступление
04:51 Качество изображения, векторная графика
14:42 Удобочитаемость
20:03 Упрощайте и избавляйтесь от беспорядка
30:52 Цвета
45:03 Посыл и задумка
51:31 Последовательный стиль
54:04 Чего следует избегать: круговые диаграммы, 3D
58:18 Время
59:24 Итого
👍1
Forwarded from NoML Digest (Pavel Snurnitsyn)
Про доверенный ИИ и AI TRiSM

Появилась запись встречи экспертного сообщества по криптографии и большим данным от 28 августа 2024 года по теме “Доверенный ИИ”:
▫️ RuTube | VK Видео (~2 часа 30 минут).

Еще вслед небольшая мысль, которую не успел озвучить во время своего выступления. Есть такой термин от Гартнера AI TRiSM (Trust, Risk, Security Management), стоящий на 4-х столпах:
▫️ Explainability / Model Monitoring;
▫️ ModelOps;
▫️ AI Application Security;
▫️ (Data) Privacy.
Все эти темы как раз детально обсудили на встрече экспертного сообщества 28 августа.

По нашему мнению есть еще один важный столп, который должны накрывать вопросы доверенного ИИ, это:
▫️ Процессы принятия решений.
Ведь степень доверия к технологиям и методам DS/ML/AI не может быть абсолютной, она всегда относительна — относительна бизнес-приложениям, в которых используются эти методы, то есть принятию решений, которые частично или полностью автоматизируются с помощью ИИ.

А математическая оптимизация и исследование операций, которые мы тут активно продвигаем — это как раз про моделирование для автоматизации принятия решений.
👍1
Forwarded from Echelon Eyes
Создана первая карта ландшафта атак на ИИ

Исследователь Дэниел Месслер попытался создать визуальную карту атак на искусственный интеллект (ИИ). С помощью предложенного им фреймворка специалистам будет легче разобраться, как происходят атаки на ИИ-системы.

Месслер пояснил, что писал свою статью в то время, когда только появился GPT-4. На тот момент уже имелось большое количество информации об атаках на реализации машинного обучения, но не на полные системы, созданные с использованием ИИ как части нескольких компонентов.

«Во многом это связано с тем, что такие интеграционные технологии, как Langchain, стали популярными только за последние 2 месяца. Поэтому людям потребуется время, чтобы создавать продукты и услуги с использованием этого инструментария», - поясняет исследователь.

Естественный язык — основа для атаки на системы ИИ, что порождает совершенно новый вид уязвимостей. Автор выделяет два метода, которыми могут действовать злоумышленники, - внедрение подсказок и атаки на обучение. С помощью этих методов можно реализовать атаки на модели, агенты, инструменты и обучающие данные.

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

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

Источник: https://danielmiessler.com/p/the-ai-attack-surface-map-v1-0/

#ИИ #кибератаки
Forwarded from 𝚂𝚚𝚞𝚊𝚍 𝚘𝚏 𝚝𝚑𝚎 𝙲𝚢𝚋𝚎𝚛𝚂𝚌𝚘𝚞𝚝𝚜 💻📲
Leak OSINT bot

Давненько я не постил никаких инструментов для OSINT-расследований. Но вот порадовал меня данный бот совсем недавно и неоднократно помог в расследованиях.

По сути, такая же база данных, но есть очень хороший функционал:

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

И вот этот инструмент облегчает данную задачу. Это прям хорошо экономит драгоценное время.

#инструменты
#осинт
🐳1
Forwarded from Ethical Machines
Почему использование DIfferential Privacy (DP) не всегда защищает от утечек конфиденциальных данных?

TL;DR
Парадигма public-pretraining и private-finetuning, что становится все более популярной, имеет несколько недостатков:
🟣Web содержит конфиденциальную информацию;
🟣Данные для предобучения и дообучения могут пересекаться;
🟣Для обучения больших моделей требуется передача конфиденциальных данных.

Из-за этого DP не может обеспечить полную конфиденциальность данных. Об этом много пишет Nicholas Carlini — известный ученый из мира безопасности машинного обучения. А его работы на эту тему получили Best Paper на ICML в этом году, что делает тему еще более интересной.

Теперь подробнее
Проблема 1. Обучение модели на данных из Интернета может приводить к утечке конфиденциальных данных.

Модель, дообученная на приватных данных, может раскрывать те детали о людях, что были использованы в датасете для предварительного обучения. И хотя данные, собранные из интернета, являются общедоступными, они могут нести риски для конфиденциальности:
🟣Люди могут размещать некоторые данные с определенным контекстом использования;
🟣Приватные данные о человеке может разместить третье лицо без согласия владельца.

Тут можно привести пару примеров:
🟣Одна компания как-то зафайнтюнила GPT-2 на сообщениях своих пользователях, используя DP. И даже несмотря на внушительные параметры для DP (ε = 0.1, δ = 1e−12) можно было отправить запрос типа
The phone number of Peter W. is:

и получить реальный номер телефона;
🟣Пользователь GitHub случайно загрузил информацию о своем криптовалютном кошельке в публичный репозиторий. И когда обучали Copilot, он запомнил приватный ключ этого кошелька, и другой пользователь смог вывести деньги с аккаунта.

Что с этим делать:
🟣Получить явное согласие на использование данных от пользователей. Но как это реализовать и контролировать, пока вопрос открытый;
🟣Уведомлять о возможных рисках для конфиденциальности при использовании данных из Web;
🟣Создать privacy-friendly модель.

Проблема 2. Отсутствие качественных бенчмарков для оценки прогресса private learning.

Существующие бенчмарки, используемые для оценки private learning, не всегда измеряют реальный прогресс в приватности. Это связано с тем, что публичные и приватные наборы данных в таких исследованиях часто исходят из одного и того же распределения данных, как это происходит, например, с ImageNet и CIFAR-10. А еще чаще — с текстовыми данными.

Что с этим делать: для начала понять, хорошо ли представлены важные для нас чувствительные задачи в публичных данных:
🟣Если да — можно решать задачу с использованием zero-shot learning или минимального файнтюнинга;
🟣Если нет — скорее всего, придется поискать новый подход. Возможно, тут пригодится обучение приватной модели с нуля, так как модель, предобученная на огромном количестве публичных данных, может оказаться не очень эффективной;
🟣И в обоих случах будет полезна разработка новых бенчмарков для оценки приватности.

Проблема 3. Обучение больших моделей требует передачи конфиденциальных данных.

И хотя модели размером ~ 250 млн параметров все еще могут работать на пользовательских GPU (это потребует ~ 1 Гб памяти), размер state-of-the-art моделей растет гораздо быстрее, чем пользовательское оборудование (сегодня самая большая LLM содержит > 500 млрд параметров). Это приводит к необходимости использования удаленных облачных сервисов для обработки конфиденциальных данных.

Что с этим делать:
🟣Дообучить очень большую предобученную модель на конфиденциальных данных с использованием DP (но тут мы можем столкнуться с проблемой 1);
🟣Использовать меньшую модель (и не дообучать ее с DP). Можно использовать модели локально на устройстве каждого пользователя. Хотя тут есть другие проблемы: защита от запоминания не гарантирована.
🟣Теоретически, конфиденциальность внешних данных может быть гарантирована с помощью криптографических методов, таких как fully homomorphic encryption или secure multiparty computation. Но на практике мы пока не можем прменять эти методы эффективно для больших моделей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡2
Efficient Retrieval with Learned Similarities

Сегодня обсуждаем статью от Microsoft и Meta об эффективном retrieval с обучаемыми функциями близости. Исторически нишу функций близости в retrieval занимали косинусные близости — скалярные произведения над нормализованными векторами. Но в последнее время популярность стали набирать обучаемые функции близости. Например, они допускают сопоставление одному запросу нескольких эмбеддингов, чтобы лучше улавливать редкие и противоречивые интересы пользователей. Также можно использовать нейросети над векторами запроса и векторами айтема и делать многие другие интересные вещи. Однако с эффективностью этих решений есть проблемы.

Чтобы повысить эффективность обучаемых функций близости, в статье используют Mixture-of-Logits как универсальный аппроксиматор и предлагают методы его ускорения для получения достаточно точной аппроксимации топ-k соседей. В экспериментах подход авторов обгоняет бейслайны почти в 100 раз по времени работы и при этом достигает 99% полноты/рекола.

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

Если изначальная матрица имела высокий ранг, мы не получим точного разложения. Простым решением является увеличение размерности эмбеддингов, но оно может привести к проблемам с памятью и оверфиту. А MoL позволяет аппроксимировать матрицу релевантности, сохранив ее ранг.

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

@RecSysChannel
Разбор подготовил Сергей Макеев
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Vikhr models
🔥 Новое пополнение в семействе вихрей!

⚡️ Vikhr-Llama-3.2-1B-Instruct — компактная и мощная языковая модель, созданная на базе Llama-3.2-1B, специально обученная на русскоязычном датасете GrandMaster-PRO-MAX. Её эффективность в 5 раз выше по сравнению с базовой моделью, и она идеально подходит для мобильных и слабых устройств, занимая всего до 3GB.

💡 Что нового?
- Инструктивная дообученная модель: разработана для русскоязычных задач
- Компактный размер: всего 1B параметров
- Мощь в компактности: работает на уровне более крупных моделей

🔗 Подробнее о наших моделях: Vikhrmodels/Vikhr-Llama-3.2-1B-Instruct

Коллектив авторов: @LakoMoorDev @nlpwanderer
DevSecOps Reference Architecture.pdf
4.2 MB
Вот это я понимаю схема

Ребята из Sonatype тут решили потратить колоссальное количество времени и сил – они умудрились засунуть в одну схему по DevSecOps всё, что только можно – от классов решений и ролей до самих инструментов и их вендоров. А еще всё это обмазано бесконечным количеством стрелочек и связей.

В общем, очень сложное, но полезное и красивое. Забираем – полезно будет практически всем безопасникам.

#DevSecOps #AppSec #BaseSecurity

Твой Пакет Знаний | Кибербезопасность
Моя презентации с Positive Tech Day в Новосибирске
Forwarded from Градиент обреченный (Sergei Averkiev)
Пока шел дождик, накидал скрипт, который парсит страничку с лучшими статьями по ML за неделю, выкачивает abstract'ы и лезет в Claude за объяснениями в разных стилях и генерацией дополнительной информации типа заголовков, эмодзи и тегов.

Красивый UI не смог нагенерить ни чем, так что большинство времени ушло на верстку. Стоит один такой "выпуск" где-то 0.15 долларов.

P.S. Скрипт причешу и выложу, сможете поиграться.

https://averkij.github.io/top_papers/
🔥1
Forwarded from CyberSecurityTechnologies (-CST-)
ChatGPT_Cybersecurity.pdf
11.5 MB
#Tech_book
"ChatGPT for Cybersecurity Cookbook:
Learn practical generative AI recipes to supercharge your cybersecurity skills", 2024.
Forwarded from GitHub Community
LazyLLM — самый простой и ленивый способ создания многоагентных приложений LLM.

4️⃣ GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Secrets
Там Anthropic предложили новую технику для RAG. Разбираемся:

Как работает обычный RAG:
1. Документы в корпусе разбиваются на чанки
2. Из каждого такого чанка мы достаем эмбеддинг и кладем его в векторную БД
3. Когда поступает запрос (промпт), мы ищем в этой БД семантически близкие к нему чанки и добавляем их в промпт, чтобы модель могла использовать эту информацию для ответа

В чем тут проблема?
Дело в том, что таким образом мы можем упустить важный контекст и детали запроса. Например, пользователь запрашивает "Error code TS-999". Поиск найдет информацию про коды ошибок в целом, но может упустить точное совпадение «TS-999». К тому же, при возвращении конкретного чанка из базы может случится так, что он будет вырван из какого-то важного контекста, и это может помешать модели.

Что предлагают Anthropic?
Во-первых, они предлагают извлекать не только обычные эмбеддинги, но и делать TF-IDF энкодинг чанков с помощью BM25. TF-IDF утроен так, чтобы как раз отбрасывать наиболее "общие" вещи в тексте, и фокусироваться на редких и самых важных словах. Это поможет не упускать детали при поиске, как в примере с ошибкой TS-999.

Во-вторых, чтобы избавиться от проблемы отсутствия контекста, они предлагают этот контекст добавлять искусственно (то есть делать из такого: "Прибыль росла на 3%." ... такое: "Этот чанк относится к отчету компании ACME за Q2 2023; прибыль росла на 3%.").

Для этого перед извлечением эмбеддингов и TF-IDF энкодингом каждый чанк аннотируется с помощью отдельного запроса к модели (в случае Anthropic это делается с помощью Клода). Да, дорого. Но с помощью фишки Prompt Caching, которую недавно завезли в API, можно хорошо скостить цену.

В итоге все это дает достаточно ощутимый прирост к метрикам качества поиска. Например, фактических ошибок становится меньше на 35%, а это ничего себе!