Pull to refresh
1
0
Send message

Теория игр за 15 минут

Level of difficultyEasy
Reading time15 min
Views62K

Многие из вас, я уверен, слышали о теории игр в какой-то момент своей жизни. Если вы хотите выглядеть умным и произвести впечатление на свою девушку — просто упомяните «игру с нулевой суммой» или «эволюционную стратегию», и ваши шансы отвести её домой сегодня вечером только что подскочили на 50%. Или вы можете использовать теорию игр, чтобы принимать решения в инвестировании своих денег (чтобы их полностью потерять и разориться) или, например решая, на какой девушке жениться (что также очень вероятно вас разорит). Как видите, это очень полезная теория.

Чтобы казаться умным - достаточно выучить эти пару выражений, но чтобы на самом деле что-то понимать - придется разобраться. Оказывается, это не так уж сложно и довольно интересно. Давайте посмотрим.

Читать далее
Total votes 92: ↑89 and ↓3+103
Comments30

Архитектура RAG: полный гайд

Level of difficultyHard
Reading time13 min
Views23K

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

Итак зачем нужен RAG?

Читать далее
Total votes 27: ↑26 and ↓1+28
Comments11

Магическое ускорение работы моделей с помощью дистилляции

Level of difficultyMedium
Reading time4 min
Views5.1K

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

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments10

Нельзя предполагать, что все используют UTF-8

Level of difficultyMedium
Reading time6 min
Views18K
Как вычислять кодировку при помощи статистики

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

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

Однако человечество может винить себя за то, что сложности в общении испытывают компьютеры.

И одна из самых больших проблем одновременно является самой простой: компьютеры не договорились о том, как записывать буквы двоичным кодом.
Читать дальше →
Total votes 58: ↑53 and ↓5+70
Comments92

Практическое руководство по Rust. 4/4

Level of difficultyMedium
Reading time34 min
Views4.7K



Hello world!


Представляю вашему вниманию четвертую и последнюю часть практического руководства по Rust.



Другой формат, который может показаться вам более удобным.


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить ?

Читать дальше →
Total votes 20: ↑19 and ↓1+25
Comments2

GPU-вычисления в браузере на скорости нативного приложения: марширующие кубы на WebGPU

Reading time13 min
Views4.7K

WebGPU — это мощный GPU-API для веба, поддерживает продвинутые рендеринговые конвейеры и вычислительные конвейеры GPU. WebGPU ключевым образом отличается от WebGL своей поддержкой вычислительных шейдеров и буферов хранения данных. В WebGL такие возможности отсутствуют, а WebGPU, в свою очередь, позволяет целиком выполнять в браузере мощные приложения, требующие вычислений на GPU. Речь может идти о самых разных приложениях, от GPGPU (напр., симуляции, обработка/анализ данных, машинное обучение, т.д.) до конвейеров рендеринга на основе GPU-вычислений — а также о многих других приложениях в этом спектре.

В этой статье мы оценим вычислительную мощность WebGPU, сравнив её с показателями Vulkan. Для этого мы реализуем классический алгоритм «марширующие кубы» (Marching Cubes) для WebGPU. Алгоритм марширующих кубов почти без оговорок относится к чрезвычайно параллельным, в составе этого алгоритма выполняется два глобальных шага редукции, необходимых для синхронизации местоположений рабочих элементов и вывода потоков. Поэтому данное решение — отличный вариант GPU-параллельного алгоритма, который стоит первым делом попробовать на новой платформе. Дело в том, что он достаточно сложен, чтобы API испытал давление сразу по нескольким направлениям сверх элементарных параллельных операций диспетчеризации в ядре. При этом он не столь сложен, чтобы на его реализацию требовалось существенное время, а также он не превращается в узкое место из-за ограничения производительности ЦП.

Читать далее
Total votes 15: ↑14 and ↓1+18
Comments4

Реализация SHA256 и SHA512 на языке RUST

Level of difficultyEasy
Reading time8 min
Views7.9K

Небольшая заметка студента о том, как самостоятельно реализовать алгоритмы SHA256 и SHA512 на Rust.

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

Читать далее
Total votes 15: ↑14 and ↓1+16
Comments28

Фундамент AI: обратное распространение ошибки простыми словами

Level of difficultyEasy
Reading time7 min
Views8.6K

Что если бы я вам сказал, что без понимания того, что такое backpropagation (обратное распространение ошибки), вы никогда не сможете использовать AI эффективно? Тогда я бы, конечно, соврал. Знать такие детали не требуется для использования AI в прикладных задачах, но, тем не менее, это базовый фундамент ML/AI, и понимать, как все устроено, полезно, ну или как минимум, интересно.

Читать далее
Total votes 22: ↑22 and ↓0+26
Comments9

Построение логических элементов на транзисторах

Level of difficultyMedium
Reading time3 min
Views12K

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

Такая логика называется РТЛ (резисторно-транзисторная логика).

Велосипед я не изобрёл, просто собрал  кучу разного материала, плюс сам экспериментировал. Схемы примера собирал в программе Multisim и тестировал на настоящих транзисторах PN2222A. И вот что у меня вышло.

Читать далее
Total votes 17: ↑13 and ↓4+16
Comments22

Кратко про библиотеку Axum в Rust

Level of difficultyMedium
Reading time6 min
Views4.9K

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

Axum была создана командой Tokio, которая уже получила свой +rep за создание асинхронной платформы Tokio для Rust.

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

Основная фича Axum заключается в его возможности обрабатывать тысячи запросов без значительных затрат на ресурсы.

Читать далее
Total votes 15: ↑13 and ↓2+16
Comments6

Пора внедрять ORM в вашу систему

Level of difficultyEasy
Reading time5 min
Views11K

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

Сегодня я буду навязывать своё субъективное, однобокое, единственно правильное мнение, зачем вам ORM.

Читать далее
Total votes 31: ↑13 and ↓180
Comments105

Миниатюризация систем квантового распределения ключей с помощью фотонных интегральных схем, часть 2: Сценарии применения

Reading time4 min
Views906

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

В конце 2023 года Росстандартом были утверждены первые четыре предварительных национальных стандарта в области квантовых коммуникаций, включая «Квантовые коммуникации. Термины и определения» и «Квантовый интернет вещей. Термины и определения». Согласно им:

Квантовый интернет — глобальная информационная квантовая сеть, в узлах которой формируется, обрабатывается и хранится квантовая информация, и узлы которой соединены квантовыми каналами.

«Квантовый интернет вещей — интернет вещей с использованием квантовых технологий».

Читать далее
Total votes 5: ↑3 and ↓2+3
Comments0

Библиотечка электровакуумщика-кустаря

Level of difficultyEasy
Reading time8 min
Views8K

Интересуясь историей и практикой электровакуумных приборов (ЭВП) и идя по пути к их самостоятельному изготовлению в домашней лаборатории-мастерской, с течением времени накопил массу полезной литературы. От изданий академических до описаний любительских экспериментов коллег и фото раритетных ЭВП, литературе по азам в смежных областях — кустарные работы широкопрофильны и многогранны. Некоторые старые технические книги просто приятно иметь, как летописи отважных и романтичных пионеров-первопроходцев. Здесь, приведу профильные книги к которым при работе приходится обращаться чаще всего и выглядящие наиболее перспективно. Издания по возможности будут снабжаться комментариями в смысле полезности для основного направления деятельности.
Читать дальше →
Total votes 74: ↑74 and ↓0+88
Comments61

На пути к полной жизни: Онлайн-синтез речи для людей с неврологическими нарушениями

Level of difficultyMedium
Reading time8 min
Views1.3K

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

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

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

В данной статье я расскажу о тестировании возможности применения технологии имплантируемого интерфейса “мозг-компьютер” (brain–computer interface) для онлайн-синтеза речи с использованием активности мозга, регистрируемой внутричерепными электродами, чтобы проложить путь к новым коммуникационным возможностям для людей, потерявших способность говорить.

Приятного прочтения!

Читать далее
Total votes 13: ↑13 and ↓0+15
Comments3

Вербальные вычисления (VC) в доказательных DSS и NLP

Level of difficultyMedium
Reading time13 min
Views1.1K

С.Б. Пшеничников

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

Использование IT в обработке естественного языка (Natural Language Processing, NLP)  требует стандартизации текстов, например, токенизации или лемматизации. После этого можно пробовать применять математику, поскольку она является высшей формой стандартизации и превращает исследуемые объекты в идеальные, например, таблицы данных в матрицы элементов. Только на языке матриц можно искать общие закономерности данных (чисел и текстов).

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

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

Для гипербинарных чисел существует своя арифметика и если к ней привыкнуть, то она покажется привычнее и проще пифагорейской арифметики.

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

Читать далее
Total votes 3: ↑3 and ↓0+4
Comments0

Похоже, я придумал свой алгоритм поиска кратчайшего пути (upd: меня опередили...)

Level of difficultyMedium
Reading time17 min
Views37K

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

Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)

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

Читать далее
Total votes 102: ↑94 and ↓8+102
Comments111

Выбор структур данных для самописного текстового редактора

Level of difficultyMedium
Reading time13 min
Views11K

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

Ресурсы


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

  • Build Your Own Text Editor — наверно, самый фундаментальный пост о создании текстового редактора с нуля, который я видел. Это превосходный туториал на случай, если вы хотите начать писать собственный текстовый редактор. Стоит заметить, что в редакторе из этого туториала в качестве внутренней структуры для текста используется, по сути, вектор строк.
  • Text Editor: Data Structures — отличный обзор множества структур данных, которые можно использовать при реализации текстового редактора. (Спойлер: как минимум одна из них будет рассмотрена в моём посте)
  • Плейлист Ded (Text Editor) на YouTube — это потрясающая серия, в которой @tscoding фиксирует процесс создания с нуля текстового редактора. Эти видео стали для меня источником вдохновения.

Зачем?


Если в сети есть так много хороших ресурсов о создании собственного текстового редактора (не говоря уже о том, что уже существует множество феноменальных текстовых редакторов), то зачем я это пишу? На то есть несколько причин:

  1. Я хотел заняться проектом, непохожим ни на один свой прошлый.
  2. Я хотел создать инструмент, которым смогу пользоваться.
  3. Мне всегда хотелось глубже разобраться с созданием собственных структур данных.
Читать дальше →
Total votes 47: ↑46 and ↓1+58
Comments18

Черная магия метапрограммирования: как работают макросы в Rust 1.15

Reading time13 min
Views17K

В прошлой статье мы познакомились с одной из самых интересных возможностей языка Rust — процедурными макросами.


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


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

Читать дальше →
Total votes 52: ↑51 and ↓1+50
Comments76

Краткий обзор поведенческих паттернов в Rust

Level of difficultyEasy
Reading time6 min
Views4.5K

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

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

Паттерны можно реализовать на любом ЯПе и сегодня рассмотрим, как их реализовать в Rust.

Читать далее
Total votes 16: ↑11 and ↓5+8
Comments18

Арифметика первого класса в системе типов Rust

Level of difficultyMedium
Reading time8 min
Views8.6K

Арифметика – наука непростая, но к нашему удобству работу с ней можно облегчить с помощью экспрессивной системы типов языка Rust. В статье мы разберём реализацию на этом языке простейших математических операций, таких как сложение, вычитание, умножение и деление.
Читать дальше →
Total votes 42: ↑41 and ↓1+58
Comments7

Information

Rating
Does not participate
Registered
Activity