Как стать автором
Обновить
305.95

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Quantization Deep Dive, или Введение в современную квантизацию

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 78

Привет! Меня зовут Василий Землянов, я занимаюсь разработкой ML-инфраструктуры. Несколько лет я проработал в команде, которая делает споттер — специальную маленькую нейросетевую модельку, которая живёт в умных колонках Яндекса и ждёт от пользователя слова «Алиса». Одной из моих задач в этой команде была квантизация моделей. На пользовательских устройствах мало ресурсов, и мы решили, что за счёт квантизации сможем их сэкономить — так в итоге и вышло.

Потом я перешёл в команду YandexGPT. Вместо маленьких моделей я стал работать с очень крупными. Мне стало интересно, как устроена квантизация больших языковых моделей (LLM). Ещё меня очень впечатляли истории, где люди берут гигантские нейросети, квантизируют в 4 бита и умудряются запускать их на ноутбуках. Я решил разобраться, как это делается, и собрал материал на доклад для коллег и друзей. А потом пришла мысль поделиться знаниями с более широкой аудиторией, оформив их в статью. Так я и оказался на Хабре :)

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Новости

Основные типы распределений вероятностей в примерах

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 2K

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

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 1

ИИ в 3D: Где мы сейчас и какое будущее нас ждёт? (Часть 3)

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 1.4K

Мир, в котором мы с вами живём и который непосредственно ощущаем, является объёмным: расположение любой точки в нём можно описать тремя координатами, и этот факт элементарно зашит в нашу природу. Чем больше “понимания” система искусственного интеллекта будет иметь относительно истинной сущности вещей, включая их расположение, форму и объем, тем легче она будет справляться с задачами, которые до сих пор мог выполнять только человек. 

В этой статье разберём, как ИИ помогает решать одну из ключевых задач робототехники, а именно - понимание и ориентация в объёмных пространствах!

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 2

9 Синтез и коррекция систем автоматического регулирования (САР)

Время на прочтение 14 мин
Количество просмотров 1.2K

Продолжаем публикацию лекций по предмету "Управление в технических системах". Кафедра "Ядерные энергетические установки" МГТУ им. Н.Э. Баумана. Автор: Олег Степанович Козлов.

1. Введение в теорию автоматического управления.2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13

3. Частотные характеристики звеньев и систем автоматического управления регулирования. 3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ3.2. Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья3.3. Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора3.4. Апериодическое звено 2-го порядка3.5. Колебательное звено3.6. Инерционно-дифференцирующее звено3.7. Форсирующее звено.  3.8. Инерционно-интегрирующее звено (интегрирующее звено с замедлением)3.9. Изодромное звено (изодром)3.10 Минимально-фазовые и не минимально-фазовые звенья3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности

4. Структурные преобразования систем автоматического регулирования.

5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).

6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица. 6.4 Частотный критерий устойчивости Михайлова. 6.5 Критерий Найквиста.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

Истории

Алгоритмы AdaBoost (SAMME & R2). Принцип работы и реализация с нуля на Python

Уровень сложности Сложный
Время на прочтение 11 мин
Количество просмотров 1.9K

Следующим мощным алгоритмом машинного обучения является AdaBoost (adaptive boosting), в основе которого лежит концепция бустинга, когда слабые базовые модели последовательно объединяются в одну сильную, исправляя ошибки предшественников.

В AdaBoost в качестве базовой модели используется пень решений (могут использоваться другие модели) — дерево с небольшой глубиной, которому присваивается вектор весов размера N, каждое значение которого соответствует определённому значению y_train и изначально равно 1 / N, где N — количество образцов в обучающей выборке. Каждый следующий пень обучается с учётом весов, рассчитанных на основе ошибок предыдущего прогноза. Также для каждого обученного пня отдельно рассчитывается вес, используемый для оценки важности итоговых прогнозов.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Градиентный бустинг. Реализация с нуля на Python и разбор особенностей его модификаций (XGBoost, CatBoost, LightGBM)

Уровень сложности Сложный
Время на прочтение 28 мин
Количество просмотров 4.4K

На сегодняшний день градиентный бустинг (gradient boosting machine) является одним из основных production-решений при работе с табличными, неоднородными данными, поскольку обладает высокой производительностью и точностью, а если быть точнее, то его модификации, речь о которых пойдёт чуть позже.

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

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 7

Extropic: Добро пожаловать в Термодинамическое Будущее (перевод)

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 4.4K

Всем привет, Меня зовут Богдан Печёнкин. Я соавтор Симулятора ML на Karpov.Courses и фаундер AI Dating Copilot стартапа Adam.

Только что Мне на глаза попалась одна новость от компании Extropic с новостями из мира квантовых компьютеров, которую Мне захотелось перевести и прокомментировать.

Extropic - лаборатория, разрабатывающая квантовые вычисления и алгоритмы искусственного интеллекта на их основе.

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

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 2

Криптографические пруфы zkSNARKs для масштабирования и безопасности

Уровень сложности Сложный
Время на прочтение 15 мин
Количество просмотров 869

Привет, Хабр! Меня зовут Сергей Прилуцкий, я руковожу отделом исследований компании MixBytes. Мы занимаемся аудитами безопасности смарт-контрактов и исследованиями в области блокчейн-технологий. В числе прочего занимаемся и направлением zero-knowledge. Эта статья подготовлена по мотивам моего доклада на Highload про zkSNARKs. Это одна из самых горячих тем в современной криптографии. Они используются для обеспечения приватности и масштабируемости в децентрализованных системах. Поговорим, как масштабировать криптографические системы, какие проблемы существуют у снарк-алгоритмов и зачем они нужны.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 3

Стекинг и блендинг в ML. Ключевые особенности и реализация с нуля на Python

Уровень сложности Сложный
Время на прочтение 11 мин
Количество просмотров 2.7K

Среди всех методов ансамблирования особое внимание заслуживают две очень мощные техники, известные как стекинг (stacked generalization) и блендинг, особенность которых заключается в возможности использования прогнозов не только однородных, но и сразу нескольких разных по природе алгоритмов в качестве обучающих данных для другой модели, на которой будет сделан итоговый прогноз. Например, прогнозы логистической регрессии и градиентного бустинга могут быть использованы для обучения случайного леса, на котором уже будет выполнен итоговый прогноз.

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Трансформеры, группы преобразований и self-attention

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 2.3K

В подвижном мире развивающихся нейросетевых архитектур главную роль играет эффективность работы моделей. Тонкая настройка сетей под конкретные задачи предусматривает интеграцию в них априорных знаний. Делается это посредством стратегических корректировок архитектур сетей. Это — процедура, выходящая за рамки подстройки параметров. Речь идёт о внедрении в нейросеть информации, которая позволит сети понять то, что нужно её создателю. Один из способов это сделать заключается в использовании априорных знаний геометрического характера. Именно этому и посвящена данная статья.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

Пароль как мелодия. Генерация стойких паролей в музыкальных аккордах

Время на прочтение 3 мин
Количество просмотров 3.1K


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

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

Но существуют более простые методики.
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Комментарии 20

Разбираемся в АА-деревьях (Python)

Уровень сложности Сложный
Время на прочтение 7 мин
Количество просмотров 5.9K

АА-дерево - это модификация красно-черного дерева с целью упрощения реализации

Как его реализовать и как оно работает на конкретных примерах - вот о чем эта статья

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 9

Создание генетического алгоритма для нейросети и нейроcети для графических игр с помощью Python и NumPy

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 4.9K

Привет, Хабр!

Сегодня я расскажу и покажу, как сделать Genetic Algorithm(GA) для нейросети, чтобы с помощью него она смогла проходить разные игры. Я его испробовал на игре Pong и Flappy bird. Он себя показал очень хорошо. Совет прочитать, если вы не читали первую статью: "Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy" , так как я доработал свой код который бы показан в той статье.

Я разделил код на две скрипта, в одной нейросеть играет в какую-то игру, в другой обучается и принимает решения(сам генетический алгоритм). Код с игрой представляет из себя функцию которая возвращает фитнес функцию (она нужна для сортировки нейросетей, например, сколько времени она продержалась, сколько очков заработала и т.п.). Поэтому код с играми(их две) будет в конце статьи. Генетический алгоритм для нейросети для игры Pong и игры Flappy Bird различаются лишь параметрами.

Используя скрипт, который я написал и описал в предыдущей статье, я создал сильно изменённый код генетического алгоритма для игры Pong, который я и буду описывать больше всего, так как именно на него я опирался, когда я уже создавал GA для Flappy Bird.

Вначале нам потребуется импортировать модули, списки и переменные:

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 4

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Метод главных компонент (PCA). Принцип работы и реализация с нуля на Python

Уровень сложности Сложный
Время на прочтение 8 мин
Количество просмотров 5.9K

Метод главных компонент (Principal Component Analysis или же PCA) — алгоритм обучения без учителя, используемый для понижения размерности и выявления наиболее информативных признаков в данных. Его суть заключается в предположении о линейности отношений данных и их проекции на подпространство ортогональных векторов, в которых дисперсия будет максимальной.

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Как калькуляторы вычисляют синус?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 52K

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

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

Читать далее
Всего голосов 94: ↑92 и ↓2 +90
Комментарии 52

Кластеризация в ML: от теоретических основ популярных алгоритмов к их реализации с нуля на Python

Уровень сложности Сложный
Время на прочтение 34 мин
Количество просмотров 7.7K

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

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

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 2

Многокритериальная оптимизация для ранжирования и отбора торговых систем

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 1.6K

Отбор торговых систем: как выбрать лучшие из произвольного количества имеющихся

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

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 2

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 19K

Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Всего голосов 65: ↑63 и ↓2 +61
Комментарии 20

Как мы решали задачу оптимизации доставки грузов с использованием численных методов на примере метода имитации отжига

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 2.8K

В статье хотим поделиться своим опытом реализации алгоритма решения задачи маршрутизации на основе метода имитации отжига в Norbit CDS – умной системе управления доставкой. 

Проанализировав материалы, можно обнаружить различные предлагаемые способы решения VRP-задач (Vehicle Routing Problem). Главная их цель – планирование маршрутов для транспортных средств оптимальным способом. Основными критериями, как всегда, остаются наикратчайший путь для транспортного средства и доставка услуг во все заданные точки. В рабочем месте логиста Norbit CDS задача не отличается. 

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

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 3

Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы

Уровень сложности Средний
Время на прочтение 22 мин
Количество просмотров 15K

Привет, Хабр!

В наше неспокойное время, когда сфера AI стремительно движется вперёд, хочется немного стабильности и уверенности в завтрашнем дне. Как это связано с темой статьи?

Самым прямым образом — алгоритмы прокачивают умение системно мыслить, искать нестандартные пути решения; человека, у которого эти скиллы на высоте, вряд ли заменит ИИ. Так что, тратя бесценное время на алгоритмы, вы занимаетесь очень полезным делом, расслабьтесь и получайте удовольствие) В качестве бонуса к прокачиванию серого вещества вы получите сверхспособность пройти любой алгособес в FAANG и удовлетворить любые потребности пирамиды Маслоу — довольно приятно)

В этой статье мы разберём графовые алгоритмы типо DFS, Флойда–Уоршелла и строковые наподобие Ахо-Корасик.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 35

Вклад авторов