Как стать автором
Обновить
90
0
Сергей Шашков @ShashkovS

Менеджер продукта, методист, разработчик

Отправить сообщение

Математика для искусственных нейронных сетей для новичков, часть 1 — линейная регрессия

Время на прочтение8 мин
Количество просмотров153K
Оглавление

Часть 1 — линейная регрессия
Часть 2 — градиентный спуск
Часть 3 — градиентный спуск продолжение

Введение


Этим постом я начну цикл «Нейронные сети для новичков». Он посвящен искусственным нейронным сетям (внезапно). Целью цикла является объяснение данной математической модели. Часто после прочтения подобных статей у меня оставалось чувство недосказанности, недопонимания — НС по-прежнему оставались «черным ящиком» — в общих чертах известно, как они устроены, известно, что делают, известны входные и выходные данные. Но тем не менее полное, всестороннее понимание отсутствует. А современные библиотеки с очень приятными и удобными абстракциями только усиливают ощущение «черного ящика». Не могу сказать, что это однозначно плохо, но и разобраться в используемых инструментах тоже никогда не поздно. Поэтому моей первичной целью является подробное объяснение устройства нейронных сетей так, чтобы абсолютно ни у кого не осталось вопросов об их устройстве; так, чтобы НС не казались волшебством. Так как это не математический трактат, я ограничусь описанием нескольких методов простым языком (но не исключая формул, конечно же), предоставляя поясняющие иллюстрации и примеры.

Цикл рассчитан на базовый ВУЗовский математический уровень читающего. Код будет написан на Python3.5 с numpy 1.11. Список остальных вспомогательных библиотек будет в конце каждого поста. Абсолютно все будет написано с нуля. В качестве подопытного выбрана база MNIST — это черно-белые, центрированные изображения рукописных цифр размером 28*28 пикселей. По-умолчанию, 60000 изображений отмечены для обучения, а 10000 для тестирования. В примерах я не буду изменять распределения по-умолчанию.
Читать дальше →
Всего голосов 54: ↑47 и ↓7+40
Комментарии43

Гарвардский курс по основам программирования CS50 теперь на русском

Время на прочтение4 мин
Количество просмотров178K
image

Предыстория: кто мы и как дошли до жизни такой

Мы — команда проекта JavaRush. А JavaRush, кто еще не в курсе, — это полностью автоматизированный обучающий онлайн-курс по Java. Когда-то давно, именно благодаря поддержке хаброюзеров и статьям на хабре, JavaRush и появился. В то время мы собирались переучить на программистов миллион человек.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии38

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Время на прочтение9 мин
Количество просмотров86K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Всего голосов 158: ↑149 и ↓9+140
Комментарии15

Big Data от A до Я. Часть 5.1: Hive — SQL-движок над MapReduce

Время на прочтение9 мин
Количество просмотров95K
Привет, Хабр! Мы продолжаем наш цикл статьей, посвященный инструментам и методам анализа данных. Следующие 2 статьи нашего цикла будут посвящены Hive — инструменту для любителей SQL. В предыдущих статьях мы рассматривали парадигму MapReduce, и приемы и стратегии работы с ней. Возможно многим читателям некоторые решения задач при помощи MapReduce показались несколько громоздкими. Действительно, спустя почти 50 лет после изобретения SQL,  кажется довольно странным писать больше одной строчки кода для решения задач вроде «посчитай мне сумму транзакций в разбивке по регионам».

С другой стороны, классические СУБД, такие как Postgres, MySQL или Oracle не имеют такой гибкости в масштабировании при обработке больших массивов данных и при достижении объема большего дальнейшая поддержка становится большой головоной болью.



Собственно, Apache Hive был придуман для того чтобы объединить два этих достоинства:

  • Масштабируемость MapReduce
  • Удобство использования SQL для выборок из данных.

Под катом мы расскажем каким образом это достигается, каким образом начать работать с Hive, и какие есть ограничения на его применения.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии1

Как работает реляционная БД

Время на прочтение51 мин
Количество просмотров543K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Всего голосов 232: ↑229 и ↓3+226
Комментарии134

Подборка: Более 70 источников по машинному обучению для начинающих

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


Индикатор кулачкового аналогового компьютера / Wiki

В нашем блоге мы уже рассказывали о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решили вернуться к теме машинного обучения и привести адаптированную (источник) подборку полезных материалов.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии16

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Время на прочтение17 мин
Количество просмотров278K
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

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

Я предполагаю, что читатель уже знаком с тем, что такое mod_rewrite, и не буду описывать его основы, которые легко найти в интернете. Также нужно отметить, что в статье освещается работа mod_rewrite при использовании его директив в файле .htaccess. Отличия при работе в контексте <VirtualHost> изложены в конце статьи.

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

Почему так происходит?
Читать дальше →
Всего голосов 208: ↑203 и ↓5+198
Комментарии25

Основы Linux от основателя Gentoo. Часть 2 (1/5): Регулярные выражения

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

Предисловие


Об этом самоучителе


Добро пожаловать в «Азы администрирования», второе из четырех обучающих руководств, разработанных чтобы подготовить вас к экзамену 101 в Linux Professional Institute. В данной части мы рассмотрим как использовать регулярные выражения для поиска текста в файлах по шаблонам. Затем, вы познакомитесь со «Стандартом иерархии файловой системы» (Filesystem Hierarchy Standard или сокр. FHS), также мы покажем вам как находить нужные файлы в вашей системе. После чего, вы узнаете как получить полный контроль над процессами в Linux, запуская их в фоновом режиме, просматривая список процессов, отсоединяя их от терминала, и многое другое. Далее последует быстрое введение в конвейеры, перенаправления и команды обработки текста. И наконец, мы познакомим вас с модулями ядра Linux.



В частности эта часть самоучителя (Часть 2) идеальна для тех, кто уже имеет неплохие базовые знания bash и хочет получить качественное введение в основные задачи администрирования Linux. Если в Linux вы новичок, мы рекомендуем вам сперва закончить первую часть данной серии практических руководств. Для некоторых, большая часть данного материала будет новой, более опытные же пользователи Linux могут счесть его отличным средством подвести итог своим базовым навыкам администрирования.


Читать дальше →
Всего голосов 47: ↑38 и ↓9+29
Комментарии35

Покупка оптимальной квартиры с R

Время на прочтение12 мин
Количество просмотров62K
Многие люди сталкиваются с вопросом покупки или продажи недвижимости, и важный критерий здесь, как бы не купить дороже или не продать дешевле относительно других, сопоставимых вариантов. Простейший способ — сравнительный, ориентироваться на среднюю цену метра в конкретном месте и экспертно добавляя или снижая проценты от стоимости за достоинства и недостатки конкретной квартиры. image Но данный подход трудоемок, неточен и не позволит учесть все многообразие отличий квартир друг от друга. Поэтому я решил автоматизировать процесс выбора недвижимости, используя анализ данных путем предсказания «справедливой» цены. В данной публикации описаны основные этапы такого анализа, выбрана лучшая предиктивная модель из восемнадцати протестированных моделей на основании трех критериев качества, в итоге лучшие (недооцененные) квартиры сразу помечаются на карте, и все это используя одно web-приложение, созданное с помощью R.

Читать дальше →
Всего голосов 62: ↑59 и ↓3+56
Комментарии35

Сложности сборки Python3 + Qt5 приложений под Windows

Время на прочтение4 мин
Количество просмотров50K
Недавно потребовалось мне сделать небольшую прогу под Windows. Раньше мне не доводилось разрабатывать под нее.
Сама программа несложная, написалась относительно быстро. Намного больше времени отъела сборка ее под винду. Понятно, что выбранные инструменты (Python3 + Qt5) не родные, а универстальные, но что потребуется столько времени затратить на сборку, я не предполагал.
Соответственно, хочется поделиться практикой, может кому еще придется стучаться лбом в эту стену.
Под катом выстраданная инструкция как легко собирать PyQt5 приложения в single-file.exe не требующий инсталлятора.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии18

Kivy и Play Store

Время на прочтение4 мин
Количество просмотров48K
Около года назад я поучаствовал в конкурсе Kivy App Contest 2014. Игрушка заняла одно из призовых мест (номинация «лучшая идея») и ко мне неоднократно обращались с просьбой выложить её на маркет. Я долго откладывал, но позавчера наконец созрел и потратив вечер — выложил. Оказалось всё совсем просто и я решил написать эту инструкцию для тех, кто, как и я, пишет на киви «в стол». Ну или тех, кто пишет на Питоне и не в курсе, что на нём можно легко писать андроидные приложения и даже выкладывать их в маркете. Инструкция рассчитана на таких же как я полнейших чайников в разработке под Android. Профессионалам можно здесь прекратить чтение, а можно поправить/дополнить в комментариях.
Читать дальше →
Всего голосов 33: ↑25 и ↓8+17
Комментарии16

Визуализация и декодирование данных с магнитных АТМ-карт

Время на прочтение11 мин
Количество просмотров30K
Предмет интереса этой публикации — считывание и декодирование данных со второй дорожки банкоматовской карточки в условиях дефицита оборудования и средств.

Для начала приведу сухие теоретические знания. Если теория не интересует — можно пропустить.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии3

Тестирование Ni-MH аккумуляторов типоразмера AA(HR6)

Время на прочтение13 мин
Количество просмотров105K
Нас окружает огромное количество всевозможных устройств и гаджетов, призванных облегчить и разнообразить нашу жизнь, начиная от детских электронных игрушек и заканчивая многообразными фотоаппаратами, фотовспышками, фонарями, рациями и т.д. Электропитание многих из них обеспечивается от Ni-MH элементов питания типоразмера АА. В продаже имеется великое разнообразие данных источников питания. Мое внимание привлекли аккумуляторы, как наиболее экономные и экологичные источники питания. В данном обзоре собраны результаты тестирования десяти различных комплектов аккумуляторов.



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

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2+194
Комментарии120

Жонглирование. Теория. Практика

Время на прочтение5 мин
Количество просмотров41K
Настороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
  • У жонглирования есть своя теория — стройная и математически привлекательная!
  • Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
  • В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.

Теория


Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
Читать дальше →
Всего голосов 252: ↑242 и ↓10+232
Комментарии45

Создаём на wifi-роутере за-tor-енную точку доступа

Время на прочтение6 мин
Количество просмотров40K
Многие современные домашние роутеры по сути представляют собой мини-компьютер — у которого разве что нет монитора и мыши/клавиатуры. Впрочем, учитывая назначение этих самых железяк, последнее — вовсе не проблема.

Как правило, в базовой прошивке роутер умеет раздавать интернет на один или несколько LAN-портов, а также обслуживать собственную беспроводную сеть. Более продвинутые модели зачастую включают один или несколько портов USB, куда можно подключить, например, принтер или флэшку с файлами.

Однако всё богатство возможностей этого железа открывается при использовании открытых прошивок. Для новичков — dd-wrt, для более продвинутых — серия open-wrt и прочие wrt-based.
В настоящей статье речь пойдёт о настройке анонимизированной wifi-точки на базе роутера Asus RT-N16 с прошивкой dd-wrt и optware.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии13

Ричард Фейнман: удовольствие делать открытия

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


Первая часть программы Horizon (BBC, 1981) с Ричардом Фейнманом. О красоте, об отце, о названиях и именах, об алгебре, о наблюдениях и униформе. Это интервью во многом пересекается с книгой "Вы, конечно, шутите, мистер Фейнман", поэтому по большей части монолог касается жизни ученого, его взгляде на жизнь и тому, как такой взгляд развился и кто на него повлиял.
Читать дальше →
Всего голосов 177: ↑170 и ↓7+163
Комментарии30

Паяльная станция Lukey702

Время на прочтение3 мин
Количество просмотров221K
SMD Rework Station Lukey702

Долго думал в какой блок опубликовать. Станция дешевая, стоит в России от 1600 до 2500 рублей, в зависимости от жадности продавцов. Считаю, каждому самодельщику необходимо иметь такой девайс. Я давно хотел приобрести такую, и не понятно, как я раньше, обходился без нее! Станция компактная, те, кто знает другие поделки фирмы Lukey, станции старого поколения, сделанные в здоровенных железных ящиках, оценят, эргономичный корпус и органы управления.

image
Читать дальше →
Всего голосов 75: ↑70 и ↓5+65
Комментарии97

Управление мощной силовой нагрузкой от микроконтроллера.

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

Иногда нужно слабым сигналом с микроконтроллера включить мощную нагрузку, например лампу в комнате. Особенно эта проблема актуальна перед разработчиками умного дома. Первое что приходит на ум — реле. Но не спешите, есть способ лучше :)

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

Если речь идет о переменном токе, то лучше использовать симисторы или тиристоры. Что это такое? А сейчас расскажу. (Читать полностью)
Всего голосов 23: ↑20 и ↓3+17
Комментарии7

Ссылки в Windows, символьные и не только

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

Предыстория


В своём топике "Впечатления от Яндекс.Субботника" хабрачеловек absolvo высказал удивление, что один из докладчиков не знал о том, что символьные ссылки есть и в Windows. Честно говоря, не знал этого и я, поэтому поинтересовался об этих ссылках в комментариях.

Думаю, то, что удалось выяснить, может показаться кому-нибудь полезным.
Читать дальше →
Всего голосов 57: ↑52 и ↓5+47
Комментарии108

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Product Manager
Lead
Python
Project management
Algorithms and data structures
asyncio