Pull to refresh
25
0
Владислав Марчевский @comratvlad

Lead Researcher at SpeechPro

Send message

Новый способ введения экспоненты

Reading time3 min
Views7.7K
В статье предложен новый весьма необычный способ определения экспоненты и на основе этого определения выведены её основные свойства.



Каждому положительному числу $a$ поставим в соответствие множество $E_a=\left\{x:x=\left(1+a_1\right)\left(1+a_2\right)\ldots \left(1+a_k\right)\right.$, где $a_1,a_2,\ldots ,a_k>0$ и $\left.a_1+a_2+\ldots +a_k=a\right\}$.

Лемма 1. Из $0<a<b$ следует, что для каждого элемента $x\in E_a$ найдётся элемент $y\in E_b$ такой, что $y>x$.

Будем писать $A\leq c$, если $c$ верхняя граница множества $A$. Аналогично, будем писать $A\geq c$, если $c$ — нижняя граница множества $A$.

Лемма 2. Если $a_1,a_2,\ldots ,a_k>0$, то $\left(1+a_1\right)\left(1+a_2\right)\ldots \left(1+a_k\right)\geq 1+a_1+a_2+\text{...}+a_k$.

Доказательство


Проведём рассуждение по индукции.

Для $k=1$ утверждение очевидно: $1+a_1\geq 1+a_1$.

Пусть $\left(1+a_1\right)\ldots \left(1+a_i\right)\geq 1+a_1+\ldots +a_i$ для $1<i<k$.

Тогда $\left(1+a_1\right)\ldots \left(1+a_i\right)\left(1+a_{i+1}\right)\geq 1+a_1+\ldots +a_i+\left(1+a_1+\ldots +a_i\right)a_{i+1}\geq$

$\geq 1+a_1+\ldots +a_i+a_{i+1}$.

Лемма 2 доказана.

В дальнейшем мы покажем, что каждое множество $E_a$ ограничено. Из леммы 2 следует, что

$\sup E_a\geq a$ (1)
Читать дальше →

Распознавание дорожных знаков с помощью CNN: Spatial Transformer Networks

Reading time11 min
Views17K
Привет, Хабр! Продолжаем серию материалов от выпускника нашей программы Deep Learning, Кирилла Данилюка, об использовании сверточных нейронных сетей для распознавания образов — CNN (Convolutional Neural Networks).

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

Spatial Transformer Network (STN) — один из примеров дифференцируемых LEGO-модулей, на основе которых можно строить и улучшать свою нейросеть. STN, применяя обучаемое аффинное преобразование с последующей интерполяцией, лишает изображения пространственной инвариантности. Грубо говоря, задача STN состоит в том, чтобы так повернуть или уменьшить-увеличить исходное изображение, чтобы основная сеть-классификатор смогла проще определить нужный объект. Блок STN может быть помещен в сверточную нейронную сеть (CNN), работая в ней по большей части самостоятельно, обучаясь на градиентах, приходящих от основной сети.

Весь исходный код проекта доступен на GitHub по ссылке. Оригинал этой статьи можно посмотреть на Medium.

Чтобы иметь базовое представление о работе STN, взгляните на 2 примера ниже:
Слева: исходное изображение. Справа: то же изображение, преобразованное STN. Spatial transformers распознают наиболее важную часть изображения и затем масштабируют или вращают его, чтобы сфокусироваться на этой части.
Читать дальше →

Подборка @pythonetc, июнь 2018

Reading time5 min
Views14K


Привет. Я веду авторский канал @pythonetc с советами про Python в частности и про программирование в целом. С этого месяца мы запускаем серию подборок с лучшими постами за месяц в переводе на русский.

Читать дальше →

Искусственный интеллект помогает сохранить зрение

Reading time6 min
Views6.4K
Применение искусственного интеллекта в медицине уже сегодня позволяет серьезно повысить точность диагностики, облегчить жизнь пациентам. Ожидается, что ИИ станет незаменим при диагностике и уточнении заболеваний. Благодаря способности сопоставлять данные, собирать и синтезировать информацию, участие ИИ в диагностике должно помочь качественно улучшить статистику врачебных ошибок, повысить роль профилактики и предотвращения заболеваний.


Читать дальше →

Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)

Reading time16 min
Views94K
То, о чем я попытаюсь сейчас рассказать, выглядит как настоящая магия.

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

Итак, магия:


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

Читать дальше →

NumPy в Python. Часть 4

Reading time8 min
Views118K

Предисловие переводчика


Всем здравствуйте, вот мы и подошли к конечной части. Приятного чтения!
Навигация:


Математика многочленов


NumPy предоставляет методы для работы с полиномами. Передавая список корней, можно получить коэффициенты уравнения:

>>> np.poly([-1, 1, 1, 10])
array([ 1, -11,   9,  11, -10])

Здесь, массив возвращает коэффициенты соответствующие уравнению: $x^4 - 11x^3 + 9x^2 + 11x - 10$.
Читать дальше →

Устойчивость обучения GAN

Reading time8 min
Views14K
Впервые идея GAN была опубликована Яном Гудфеллоу Generative Adversarial Nets, Goodfellow et alб 2014, после этого GAN'ы являются одними из лучших генеративнх моделей.

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

GAN’ы огромным количеством достоинств, но у них есть один существенный недостаток – их очень сложно обучать.

В последнее время вышел ряд работ посвященных устойчивости GAN:


Вдохновившись их идеями, я сделал небольшое свое исследование.
Читать дальше →

Веб-кэширование на примере покупки молока в магазине

Reading time6 min
Views21K

Если вы покупали молоко в магазине, вы сможете понять, как работает кэширование на стороне сервера и на стороне браузера.

Если вы — активный пользователь Интернета (а это, скорее всего, именно так), вы постоянно используете кэширование, но можете и не знать «закулисье»: когда и как оно работает.

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

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

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

Чтобы понять мое объяснение, нужно немного знать об основах работы веб-серверов. Приступим!

Переведено в Alconost
Читать дальше →

Распознавание товаров на полках с помощью нейронных сетей на технологиях Keras и Tensorflow Object Detection API

Reading time18 min
Views35K
В статье мы расскажем о применении свёрточных нейронных сетей для решения практической бизнес-задачи восстановления реалограммы по фотографии полок с товарами. С помощью Tensorflow Object Detection API мы натренируем модель поиска/локализации. Улучшим качество поиска мелких товаров на фотографиях с большим разрешением с помощью плавающего окна и алгоритма подавления немаксимумов. На Keras реализуем классификатор товаров по брендам. Параллельно будем сравнивать подходы и результаты с решениями 4 летней давности. Все данные, использованные в статье, доступны для скачивания, а полностью рабочий код есть на GitHub и оформлен в виде tutorial.
 

Читать дальше →

Сортировки вставками

Reading time7 min
Views196K


Общая суть сортировок вставками такова:

  1. Перебираются элементы в неотсортированной части массива.
  2. Каждый элемент вставляется в отсортированную часть массива на то место, где он должен находиться.

Траффик

ML-Блиц: разбор задач первого квалификационного раунда

Reading time10 min
Views32K

23 июня 2018 года состоялся финал ML-Блица, конкурса по машинному обучению, организованного Яндексом. Ранее мы анонсировали его на Хабре и рассказывали, какие примерно задачи могут встретиться на реальном соревновании.


Теперь мы хотим поделиться с вами разборами задач одного из квалификационных раундов — самого первого. Двое участников сумели решить все задачи этого соревнования; 57 участников решили хотя бы одну задачу, а 110 совершили хотя бы по одной попытке сдать задание.


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


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


Все мои решения доступны на GitHub


image

Читать дальше →

AI, практический курс. Предобработка и дополнение данных с изображениями

Reading time7 min
Views13K
Предобработка — это общий термин для всех манипуляций, производимых с данными перед передачей их модели, включая центрирование, нормализацию, сдвиг, вращение, обрезку и т. п. Как правило, предобработка требуется в двух случаях.

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

Рассмотрим некоторые возможные методы трансформации при предобработке и их реализацию через Keras.

Читать дальше →

Как нам удалось прочитать рукопись, найденную в 80-х возле третьего крематория в Аушвице-Биркенау

Reading time15 min
Views73K
Эта история для меня началась в 2015 году, когда я посмотрел передачу на Youtube с Павлом Поляном, посвященную 70-летию освобождения Аушвица-Биркенау. Он рассказывал о своей книге «Свитки из пепла», его новых переводах с оригиналов документов от непосредственных свидетелей холокоста — членов зондеркоммандо, о найденных им цензурированных первыми переводчиками местах, о состоянии рукописей и о технических проблемах чтения, с которыми он столкнулся.

Меня заинтересовал момент: каким же образом выглядит процесс перевода военных документов, насколько качественно они были оцифрованы, все ли было сделано для того, чтобы не ломать глаза переводчику. Когда я получил на анализ копии оцифрованных документов, я был удивлен нераскрытым потенциалом одной их них – Марселя Наджари. Ее часть в «свитках из пепла» занимала совсем малую главу, через несколько лет эта история раскрутилась до публикаций в мировых СМИ. Она интересна так же, как и страшна.


Читать дальше →

iMaterialist Furniture Challenge или 50 оттенков стульев

Reading time5 min
Views4.9K
Недавно на Kaggle закончилось соревнование iMaterialist Challenge (Furniture), задачей в котором было классифицировать изображения на 128 видов мебели и предметов быта (так называемая fine-grained classification, где классы очень близки друг к другу).

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


Читать дальше →

Человек машине помощник

Reading time9 min
Views6.3K
Этот блог обычно посвящен распознаванию автомобильных номеров. Но, работая над этой задачей, мы пришли к интересному решению, которое можно с легкостью применять для очень широкого круга задач компьютерного зрения. Об этом сейчас и расскажем: как делать систему распознавания, которая вас не подведет. А если подведет, то ей можно подсказать, где ошибка, переобучить и иметь уже чуть более надежное решение, чем прежде. Добро пожаловать под кат!


Читать дальше →

Как безопасно программировать в bash

Reading time11 min
Views45K

Почему bash?


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

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

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →

Выявление преступных группировок, ворующих из магазинов – Data Mining

Reading time5 min
Views65K


Группа из 3–4 лиц по предварительному сговору способна вынести из большого магазина типа «Ашана» или «Перекрёстка» товара до 400 тысяч рублей в месяц. Если обычные шоплифтеры просто мирно воруют колбасу, протаскивая её под одеждой или ещё где, то эти парни оказываются в разы наглее и деструктивнее.

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

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

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

К нам обратилось ЧОП, которое попросило сделать видеоаналитику по тем, кого они уже знают. Чтобы при входе в магазин такого товарища сразу вызывалась полиция и их брали уже тёпленькими.
Читать дальше →

Обзор курсов по Deep Learning

Reading time11 min
Views71K
Привет, Хабр! Последнее время все больше и больше достижений в области искусственного интеллекта связано с инструментами глубокого обучения или deep learning. Мы решили разобраться, где же можно научиться необходимым навыкам, чтобы стать специалистом в этой области.

image
Читать дальше →

Обзор топологий глубоких сверточных нейронных сетей

Reading time18 min
Views110K
Это будет длиннопост. Я давно хотел написать этот обзор, но sim0nsays меня опередил, и я решил выждать момент, например как появятся результаты ImageNet’а. Вот момент настал, но имаджнет не преподнес никаких сюрпризов, кроме того, что на первом месте по классификации находятся китайские эфэсбэшники. Их модель в лучших традициях кэгла является ансамблем нескольких моделей (Inception, ResNet, Inception ResNet) и обгоняет победителей прошлого всего на полпроцента (кстати, публикации еще нет, и есть мизерный шанс, что там реально что-то новое). Кстати, как видите из результатов имаджнета, что-то пошло не так с добавлением слоев, о чем свидетельствует рост в ширину архитектуры итоговой модели. Может, из нейросетей уже выжали все что можно? Или NVidia слишком задрала цены на GPU и тем самым тормозит развитие ИИ? Зима близко? В общем, на эти вопросы я тут не отвечу. Зато под катом вас ждет много картинок, слоев и танцев с бубном. Подразумевается, что вы уже знакомы с алгоритмом обратного распространения ошибки и понимаете, как работают основные строительные блоки сверточных нейронных сетей: свертки и пулинг.

Читать дальше →

Асинхронная загрузка больших датасетов в Tensorflow

Reading time8 min
Views11K

Глубокие нейронные сети сейчас модная тема.


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


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


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


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


Predicticting graph


с графом который в том числе выполняет подстройку коэффициенотов


Training graph.


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


Как с их использованием построить эффективный конвеер для "питания" (англ feed) нейронной сети входными данными я и хочу расскажу в этой статье.

Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity