• Как мы боремся с копированием контента, или первая adversarial attack в проде

      Привет.


      Вы знали, что платформы для размещения объявлений часто копируют контент у конкурентов, чтобы увеличить количество объявлений у себя? Они делают это так: обзванивают продавцов и предлагают им разместиться на своей платформе. А иногда и вовсе копируют объявления без разрешения пользователей. Авито — популярная площадка, и мы часто сталкиваемся с такой недобросовестной конкуренцией. О том, как мы боремся с этим явлением, читайте под катом.


      Читать дальше →
    • Жизнь на частицах

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

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

      Под катом много мегабайт гифок.

      Читать дальше →
    • Вычисляемое видео в 755 мегапикселей: пленоптика вчера, сегодня и завтра



        Какое-то время назад автору довелось читать лекцию во ВГИК, и в аудитории было много людей с операторского факультета. Аудитории был задан вопрос: «С каким максимальным разрешением вы снимали?», и дальше выяснилось, что примерно треть снимала 4К или 8 мегапикселей, остальные — не более 2К или 2 мегапикселя. Это был вызов! Мне предстояло рассказать про камеру с разрешением 755 мегапикселей (raw разрешением, если быть точным, поскольку конечное у нее 4К)  и какие феерические возможности это дает для профессиональной съемки.

        Сама камера выглядит так (этакий маленький слоник):



        Причем, открою страшную тайну, чтобы сделать этот снимок искали ракурс получше и человека покрупнее. Мне доводилось щупать эту камеру вживую, скажу, что она выглядит намного крупнее. Снимок ниже с Йоном Карафином, с которым мы примерно одного роста, более точно передает масштабы бедствия:



        Кому интересны принципиально возможности вычисляемого видео о которых редко пишут — вся правда под катом! )
        Читать дальше →
      • Алгоритмы оптимизации торгового робота: эффективный способ наторговать миллион задним числом

          тизер

          Я прочитал авторитетную книгу о торговых стратегиях и написал своего торгового робота. К моему удивлению, робот не приносит миллионов, даже торгуя виртуально. Причина очевидна: робот, как гоночный автомобиль, нуждается в «тюнинге», в подборе параметров, адаптированных к конкретному рынку, конкретному периоду времени.

          Так как параметров настройки у робота достаточно, перебрать все их возможные комбинации в поисках лучшей, слишком затратная по времени задача. В свое время, решая задачу оптимизации, я не нашел обоснованного выбора алгоритма поиска квазиоптимального вектора параметров торгового робота. Потому решил самостоятельно сравнить несколько алгоритмов…
          Читать дальше →
        • Оптимизируем торгового робота: генетический алгоритм



            В предыдущей статье я занялся сравнением методов параметрической оптимизации, т.е., подбора параметров, оценивая прибыльность торговли робота в ходе последующего бэктеста. Выяснилось, что банальный метод Монте-Карло — генерация случайных некоррелированных комбинаций параметров робота — работает вполне неплохо. Сейчас же я хочу протестировать популярный, в том числе, в сообществе программирующих трейдеров, алгоритм: генетический алгоритм оптимизации.
            Читать дальше →
          • Как взломать выключенный компьютер или выполнить код в Intel ME

              На прошедшей недавно конференции Black Hat Europe исследователи Positive Technologies Марк Ермолов и Максим Горячий рассказали об уязвимости в Intel Management Engine 11, которая открывает злоумышленникам доступ к большей части данных и процессов на устройстве.

              Такой уровень доступа означает также, что любой эксплуатирующий эту уязвимость злоумышленник, обойдя традиционную защиту на основе ПО, сможет проводить атаки даже при выключенном компьютере. Сегодня мы публикуем в нашем блоге подробности проведенного исследования.
              Читать дальше →
            • Что мы узнали о безопасности Intel ME за последние годы: 7 фактов о таинственной подсистеме



                Изображение: Unsplash

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

                Мы изучаем Intel ME на протяжение последних лет, и вот что нам удалось узнать об этой таинственной подсистеме к этому моменту.
                Читать дальше →
              • Path Machine: идея одного алгоритма

                  Предыстория


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

                  Далее подробнее.
                  Читать дальше →
                • Вариационные автокодировщики: теория и рабочий код

                  • Перевод


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

                  Когда-нибудь задавались вопросом, как работает модель вариационного автокодировщика (VAE)? Хотите знать, как VAE генерирует новые примеры, подобные набору данных, на котором он обучался? Прочитав эту статью, вы получите теоретическое представление о внутренней работе VAE, а также сможете реализовать его самостоятельно. Затем я покажу рабочий код VAE, обученный на наборе рукописных цифр, и мы немного повеселимся, генерируя новые цифры!
                  Читать дальше →
                • Создание безопасного ИИ: спецификации, надёжность и гарантии

                  • Перевод
                  Среди авторов статьи — сотрудники подразделения безопасности искусственного интеллекта (safety team) из компании DeepMind.

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

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

                  На высоком уровне исследования в области безопасности в DeepMind сосредоточены на проектировании надёжных систем, при этом обнаруживая и смягчая возможные краткосрочные и долгосрочные риски. Техническая безопасность ИИ — относительно новая, но быстро развивающаяся область, содержание которой варьируется от высокого теоретического уровня до эмпирических и конкретных исследований. Цель этого блога — внести вклад в развитие области и поощрить предметный разговор о технических идеях, тем самым продвигая наше коллективное понимание безопасности ИИ.
                  Читать дальше →
                • Доступно о криптографии на эллиптических кривых

                  • Перевод
                  image


                  Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.

                  Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.

                  До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.

                  В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
                  Читать дальше →
                • Яндекс открывает технологию машинного обучения CatBoost

                    Сегодня Яндекс выложил в open source собственную библиотеку CatBoost, разработанную с учетом многолетнего опыта компании в области машинного обучения. С ее помощью можно эффективно обучать модели на разнородных данных, в том числе таких, которые трудно представить в виде чисел (например, виды облаков или категории товаров). Исходный код, документация, бенчмарки и необходимые инструменты уже опубликованы на GitHub под лицензией Apache 2.0.



                    CatBoost – это новый метод машинного обучения, основанный на градиентном бустинге. Он внедряется в Яндексе для решения задач ранжирования, предсказания и построения рекомендаций. Более того, он уже применяется в рамках сотрудничества с Европейской организацией по ядерным исследованиям (CERN) и промышленными клиентами Yandex Data Factory. Так чем же CatBoost отличается от других открытых аналогов? Почему бустинг, а не метод нейронных сетей? Как эта технология связана с уже известным Матрикснетом? И причем здесь котики? Сегодня мы ответим на все эти вопросы.

                    Читать дальше →
                  • Снимаем «4D видео» с помощью depth-сенсора и триангуляции Делоне



                    Привет Хабр! Это заметка о небольшом хобби-проекте, которым я занимался в свободное время. Я расскажу, как с помощью несложных алгоритмов превращать карты глубины от depth-сенсоров в забавный вид контента — динамические 3D сцены (их ещё называют 4D video, volumetric capture или free-viewpoint video). Моя любимая часть в этой работе — алгоритм триангуляции Делоне, который позволяет превращать разреженные облака точек в плотную полигональную сетку. Приглашаю всех, кому интересно почитать про алгоритмы, самописные велосипеды на C++11, и, конечно же, посмотреть на трёхмерных котиков.

                    Для затравки: вот что получается при использовании RealSense R200: skfb.ly/6snzt (подождите несколько секунд для загрузки текстур, а затем используйте мышку, чтобы поворачивать сцену). Под катом есть ещё!
                    Обладатели лимитированных тарифов, будьте осторожны. В статье много разных изображений и иллюстраций.
                    Читать дальше →
                  • Все врут, а ты не ври, или Развенчание мифа о запоминании

                      Сколько человек запоминает после пройденного им обучения? Обучаемый в среднем запоминает 10% прочитанного, 20% услышанного, 30% увиденного … 90% того, что сделал сам. Многие сталкивались c этими цифрами. Они приводятся отдельно или часто совмещаются с так называемой пирамидой обучения или конусом опыта. И все было бы хорошо и замечательно, если бы этими цифрами не был заполнен весь интернет, а сами они не являлись обманом и мистификацией.


                      Читать дальше →
                    • Пятница: все дизайнеры интерфейсов попадают в ад…

                        image

                        Каждый раз, когда я вижу надпись «Обновить сейчас или напомнить завтра», у меня возникает улыбка, при мысли о том, что все люди, участвовавшие в разработке подобных диалоговых окон (с*ки, верните кнопку «Нет и никогда больше не спрашивать»), окажутся в тепленьком уютненьком аду, где им нужно будет просто ввести телефонный номер…
                        Читать дальше →
                      • Современная операционная система: что надо знать разработчику

                          Александр Крижановский (NatSys Lab.)


                          Александр Крижановский

                          Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

                          По моему мнению, современная ОС – это плохая штука.




                          Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
                          Читать дальше →
                        • Аналитическое вычисление производной функции на языке Scala

                            Введение


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


                            Подготовка


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

                            sealed trait MathAST
                            

                            И его наследников:

                            Читать дальше →
                          • Сказ царя Салтана о потенциале лапласиана

                              «Три девицы под окном пряли поздно вечерком.»

                              image

                              Ну как пряли. Не пряли, конечно, а лайкали друг на друга. По условиям конкурса «мисс Салтан» девицы должны были выбрать меж собой лучшую.

                              «Какой-то странный конкурс», — беспокоились девицы. И это было правдой. По правилам конкурса вес лайка участника зависел от того, сколько лайков он получает от других. Что это значит, — никто из девиц до конца не понимал.
                              «Как все сложно», — тосковали девушки и подбадривали себя песней «Кабы я была царицей».

                              Вскоре «в светлицу вошел царь — стороны той государь» (показан на рисунке). «Во все время разговора...», — ну понятно в общем.
                              «Собираем лайки нежности — формируем матрицу смежности», — бодро срифмовал он.
                              Девицы-красавицы с именами Алена, Варвара и Софья засмущались, но лайки (из балалайки) передали.

                              Вот что там было:
                              • Алена получила 1 лайк от Софьи и 2 лайка от Варвары.
                              • Варвара получила по лайку от Алены и Софьи.
                              • А Софья получила 2 лайка от Алены и 1 от Варвары.

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

                              Наибольший вес лайков (7 баллов) получила Софья, но титул «мисс Салтан» достался Алене (15 баллов).

                              Подробнее о матрице лайков
                              Для матрицы


                              вектор потенциалов равен (5, 4, 7), а вектор потоков — (15, 12, 14).

                              После объявления результатов девицы бросились обратились к царю с просьбой рассказать,- откуда взялись эти странные цифры?
                              Действительно - откуда?
                            • Docker в банке. Видео с лекции Александра Тарасова из Альфа-Банка

                                Docker — технология, вокруг которой нынче огромное количество хайпа. «Shitstorm» — именно таким словом окрестил в твиттере докеровые войны один из моих немецких знакомых. Ну и конечно, вместе с «Microservices» и «Reactive», слово «Docker» прочно вошло в тройку ведущих айтишных баззвордов последних двух лет.

                                Неделю назад на московской встрече CodeFreeze Александр aatarasoff Тарасов из Альфа-Лаборатории (подразделение Альфа-банка) рассказал от том, как они внедряли у себя Docker, какой получили профит, какую боль и т.п. Интрига в том, что, с одной стороны, Альфа-банк — это банк, то есть, «кровавый энтерпрайз». С другой стороны… внедрили же.



                                Под катом — короткое описание того, о чем рассказал нам Александр и видеозапись его выступления.
                                Читать дальше →
                              • Вы неправильно пишете животных

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


                                  Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

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