• Треугольник Паскаля vs цепочек типа «000…/111…» в бинарных рядах и нейронных сетях

      Серия «Белый шум рисует черный квадрат»



      История цикла этих публикаций начинается с того, что в книге Г.Секей «Парадоксы в теории вероятностей и математической статистике» (стр.43), было обнаружено следующее утверждение:


      Рис. 1.

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

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


      Рис. 2.

      Для понимания теоремы Эрдёша-Реньи составим аналогичную модель, но узлы будут формироваться из значений, в которых присутствуют наибольшие цепочки, состоящие последовательно из одинаковых значений. Кластеризации будет проводиться по следующему правилу: цепочки 01/10, к кластеру «1»; цепочки 00/11, к кластеру «2»; цепочки 000/111, к кластеру «3» и т.д. При этом разобьём пирамиду на две симметричные составляющие рисунок 3.


      Рис. 3.

      Первое что бросается в глаза это то, что все перемещения происходят из более низкого кластера в более высокий и наоборот быть не может. Это естественно, так как если цепочка размера j сложилась, то она уже не может исчезнуть.
      Читать дальше →
      • +17
      • 3.4k
      • 5
    • Галерея лучших блокнотов по ML и Data Science

        Привет, читатель.

        Представляю пост который идёт строго (!) в закладки и передаётся коллегам. Он с подборкой примечательных файлов формата Jupyter Notebook по Machine Learning, Data Science и другим сферам, связанным с анализом данных. Эти блокноты Jupyter, будут наиболее полезны специалистам по анализу данных — как обучающимся новичкам, так и практикующим профи.

        image

        Итак, приступим.

        Вводные курсы в Jupyter Notebook


        Читать дальше →
        • +27
        • 22.5k
        • 7
      • Перечитывая Лу Гринзоу «Философия программирования Windows 95/NT»

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

          В оригинале исповедь автора называется «Дзен программирования в Windows 95» (Zen of Windows 95 Programming). Пусть вас не пугает цифра «95», ключевым сюжетом является именно Дзен, а не быстро меняющеся номера версий основной операционной системы последних десятилетий. Книга представляет собой набор рекомендаций и практик для вертикального (full-stack) разработчика, позволяющих не только выжить в мире современного программирования, но и выдать результат требуемого качества.

          На стр. 22 Лу так и определяет типичного читателя: «Фанатик качества». Тем, кто по жизни вполне доволен работой по методологии «тяп-ляп — в эксплуатацию» («х*як-х*як и в продакшен»), книга вряд ли чем-то поможет.

          Не устарела ли книга? В самом начале описано стремительное изменение сцены в 1995-96 году, когда Windows 95 (в меньшей степени NT) стали широко распространены, интерфейсы программирования (API) сменились чуть меньше, чем полностью, при этом оказалось необходимым поддерживать работоспособность своих программ сразу в трех вариантах операционных систем Microsoft. Самому же Лу Гринзоу в ту пору было тридцать с небольшим лет (стр. 87).
          Читать дальше →
        • Как нужно решать задачу коммивояжёра?

          В обсуждении трёх моих заметок про ИИ лишь один человек осмелился сказать, что у него интеллект есть, «зато» появилась целая куча «учителей», которые стали учить меня, как надо играть в шахматы, да как надо решать переборные задачи. Даже «лингвисты» обнаружились, которые говорили, что полный перебор и brute force есть «полные синонимы», и что для полного перебора необходимо искать решение задачи коммивояжёра тем самым идиотским способом с факториальной сложностью. Их логика понятна: «сила есть — ума не надо», но если всё-таки «шевельнуть извилиной», станет ясно, что ПОЛНЫЙ перебор вовсе не обязательно ГРУБАЯ сила, а вполне может представлять собой CLEVER force! Так что решать задачу мы будем именно ПОЛНЫМ перебором, не забывая, что это очень умный, тонкий, сложный алгоритм. Точнее, набор алгоритмов, которые передают друг другу задачу «по цепочке».
          Читать дальше →
        • Искусственный интеллект, великий и ужасный

          Далее

          Мой мальчик! Тебе эту песню дарю.
          Рассчитывай силы свои.
          И, если сказать не умеешь «хрю-хрю»,
          Визжи, не стесняясь: «ИИ!»…
          С. Я. Маршак

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

          Шахматы


          Нет, я понимаю, что когда-то шахматы ассоциировались именно с ИИ. Это продолжалось до тех пор, пока компьютеры играли плохо, и потому «сапиенсы» имели возможность задирать нос и бахвалиться своим ЕИ, который у них, якобы, имеется «по умолчанию». Но сейчас-то? Да, в шахматы с компьютером играть уже не интересно, он постоянно выигрывает. А как насчёт интеллекта? Признаем за железякой его наличие?
          Читать дальше →
        • Красивые точные часы из старого смартфона



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

          Я расскажу о некоторых выясненных особенностях сихронизации времени в ОС Андроид, а также о разных электрических хитростях в системе питания смартфона. Опишу пример схемы на несложных аналоговых компонентах, которая осуществляет автоматическое резервное питание. И конечно речь будет о программной части андроид – как и с помощью чего можно самому сделать из смартфона красивые часы на любой вкус.
          Читать дальше →
        • Загоризонтный Дятел: недолгая история объекта «Чернобыль-2»


            С лета 1976-го коротковолновую связь по всему миру начал терроризировать «эфирный хулиган». На ряде частот, выделенных для гражданской связи и авиации, поселился характерный стучащий сигнал с частотой 10 импульсов в секунду, мешающий переговорам и трансляциям во множестве стран. Этот стук доводил до белого каления как радиолюбителей, так и тех, для кого радиосвязь была профессиональным инструментом. Судите сами:

            https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Woodpecker.ogg

            Причём сигнал был «плавающий» — поработав несколько минут на одной частоте, он переходил на другую. Загадочность и создаваемые неудобства привели к тому, что военные ряда стран попытались запеленговать источник. Оказалось, что он расположен в глубине Советского Союза. А поскольку сигнал — к тому времени получивший прозвище «Русский Дятел», — периодически вторгался на частоты, зарезервированные для авиации, этим не замедлили воспользоваться США, Великобритания и Канада, заявившие СССР протест. СССР сделал удивлённое лицо и ответил, что ничего не знает ни о каком сигнале.
            Читать дальше →
          • Реализация алгоритма Левенберга-Марквардта для оптимизации нейронных сетей на TensorFlow

            • Tutorial

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




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


            Kushnir, D., Velker, N., Bondarenko, A., Dyatlov, G., & Dashevsky, Y. (2018, October 29). Real-Time Simulation of Deep Azimuthal Resistivity Tool in 2D Fault Model Using Neural Networks (Russian). Society of Petroleum Engineers. doi:10.2118/192573-RU


            Одним вечером я показал, как keras реализовать простую нейронную сеть, и друг на работе запустил обучение на насчитанных данных. Через пару дней обсудили результат. С моей точки зрения он выглядел перспективно, но друг сказал, что нужны вычисления с точностью прибора. И если средняя квадратичная ошибка (mean squared error) получилась в районе 1, то нужна была 1е-3. На 3 порядка меньше. В тысячу раз.

            Читать дальше →
          • Как проектируют ненастоящие программисты

            Настоящие программисты — это облака, big data, high load… А у нас — практически DIY. 2 установки — уже тиражирование, 100 штук — производство… Но зато атомные ледоколы, маневровые локомотивы, трактора, шлюзы, мосты, опускающиеся вниз от лишнего асфальта, беспилотники размером в дом, 50 человек персонала на цех длиной больше двух километров… и надежность, надежность, надежность… И пяток гендиректоров в костюмах прямо на поле при демонстрации системы на тракторе…

            image
            Обычное окончание отладки — убираем антенны с путеправильной машины

            Итак… пришла просьба от коллег — написать ТКП (технико-коммерческое предложение) на хитрый GPS-трекер. И комментарии, что большие и настоящие делать отказались.
            Читать дальше →
          • Памятки по искусственному интеллекту, машинному обучению, глубокому обучению и большим данным

            • Translation


            В течение нескольких месяцев мы собирали памятки по искусственному интеллекту, которыми периодически делились с друзьями и коллегами. В последнее время сложилась целая коллекция, и мы добавили к памяткам описания и/или цитаты, чтобы было интереснее читать. А в конце вас ждёт подборка по сложности «О большое» (Big-O). Наслаждайтесь.

            UPD. Многие картинки будут читабельнее, если открыть их в отдельных вкладках или сохранить на диск.
            Читать дальше →
            • +43
            • 27.6k
            • 9
          • Выход из «Китайской комнаты» или может ли машина думать

            Предисловие


            Давно интересуюсь проблемой сознания и его связи с мозгом. Однажды я натолкнулся на очень интересный мысленный эксперимент, называемый «Китайская комната». Не помню в какой публикации я впервые прочел о нем, но он меня очень заинтересовал, поэтому я стал изучать вопрос. Только после прочтения оригинальной статьи [1] я понял, что в большинстве источников идеи автора представлены упрощенно, искажены и не поняты до конца. Эксперимент с Китайской комнатой ставит вопросы, и пытается дать ответы. Вопросы очень интересные, а ответы, на мой взгляд, неудовлетворительны. Поэтому я долго размышлял и решил сам сформулировать решение данной проблемы, о чем и будет моя статья.
            Читать дальше →
          • Обзор задач по алгоритмам для собеседований — генерация множеств

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


            Этим постом начинается разбор задачек по алгоритмам, которые крупные IT-компании (Mail.Ru Group, Google и т.п.) так любят давать кандидатам на собеседованиях (если плохо пройти собеседование по алгоритмам, то шансы устроиться на работу в компанию мечты, увы, стремятся к нулю). В первую очередь этот пост полезен для тех, кто не имеет опыта олимпиадного программирования или тяжеловесных курсов по типу ШАДа или ЛКШ, в которых тематика алгоритмов разобрана достаточно серьезно, или же для тех, кто хочет освежить свои знания в какой-то определенной области.


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



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

            Читать дальше →
          • Доклады с весенней конференции С++ Russia 2018


              С 19 по 21 апреля в Санкт-Петербурге прошла конференция С++ Russia 2018. Из года в год организация и проведение становится на уровень выше, что не может не радовать. Спасибо бессменному организатору С++ Russia Сергею Платонову за его вклад в развитие этого направления.
              Читать дальше →
              • +45
              • 13.6k
              • 3
            • Git снизу вверх

              • Translation
              У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


              Изображение из твиттера @girlie_mac

              Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
              Читать дальше →
            • История разработки TWIME — нового высокоскоростного интерфейса Московской Биржи

                В этом хабе мы расскажем вам о своем уникальном опыте разработки высокоскоростного интерфейса TWIME для Московской биржи, объясним, почему нам так важна низкая latency (время отклика) и как ее сократить. Надеемся, в заключении вам станет немного понятнее, почему Московская биржа более технологична в некоторых областях, чем, к примеру, такие гиганты High Load как Nginx, VK или MailRu.
                Читать дальше →
                • +13
                • 10.7k
                • 7
              • Сколько нужно нейронов, чтобы узнать, разведён ли мост Александра Невского?

                  image


                  Введение.


                  На той неделе darkk описал свой подход к проблеме распознавания состояния моста(сведён/разведён).


                  Алгоритм, описанный в статье, использовал методы компьютерного зрения для извлечения признаков из картинок и скармливал их логистической регрессии для получения оценки вероятности того, что мост сведён.


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


                  В последние несколько лет сильную популярность обрели нейронные сети, как алгоритм, который умудряется в автоматическом режиме извлекать признаки из данных и обрабатывать их, причём делается это настолько просто с точки зрения того, кто пишет код и достигается такая высокая точность, что во многих задачах (~5% от всех задач в машинном обучении) они рвут конкурентов на британский флаг с таким отрывом, что другие алгоритмы уже даже и не рассматриваются. Одно из этих успешных для нейронных сетей направлений — работа с изображениями. После убедительной победы свёрточных нейронных сетей на соревновании ImageNet в 2012 году публика в академических и не очень кругах возбудилась настолько, что научные результаты, а также програмные продукты в этом направлении появляются чуть ли не каждый день. И, как результат, использовать нейронные сети во многих случаях стало очень просто и они превратились из "модно и молодёжно" в обыкновенный инструмент, которым пользуются специалисты по машинному обучению, да и просто все желающие.


                  Читать дальше →
                • Лучшие пакеты для машинного обучения в R, часть 1

                  • Translation
                  Один из наиболее частых вопросов, с которыми сталкиваются специалисты по обработке и анализу данных — «Какой язык программирования лучше всего использовать для решения задач, связанных с машинным обучением?» Ответ на этот вопрос всегда приводит к сложному выбору между R, Python и MATLAB. Вообще говоря, никто не может дать объективный ответ, какой же язык программирования лучше. Конечно, язык, который вы выбираете для машинного обучения, зависит от ограничений конкретной задачи и данных, предпочтений самого специалиста и тех методов машинного обучения, которые нужно будет применить. Согласно опросу о любимом инструменте пользователей Kaggle для решения задач анализа данных R предпочитают 543 из 1714.

                  Сейчас в CRAN доступен 8341 пакет. Кроме CRAN, есть и другие репозитории с большим количеством пакетов. Синтаксис для установки любого из них прост: install.packages(“Name_Of_R_Package”).

                  Вот несколько пакетов, без которых вы вряд ли обойдетесь, как специалист по анализу данных: dplyr, ggplot2, reshape2. Безусловно, это не полный список. В этой статье мы подробнее остановимся на пакетах, применяемых в машинном обучении.
                  Читать дальше →
                  • +8
                  • 14.5k
                  • 7
                • Генерация и визуализация многомерных данных с R

                  • Translation
                  Возможность генерировать данные с заданной корреляцией очень важна для моделирования. В R ожидаемо обширный набор инструментов — пакетов и функций для генерации и визуализации данных из многомерных распределений. Базовая функция для генерации многомерных нормально распределенных данных — mvrnorm() из пакета MASS, части R, хотя пакет mvtnorm также предлагает функции для симуляции и многомерного нормального, и t-распределения.
                  Читать дальше →
                  • +20
                  • 10.1k
                  • 1
                • Квинтовый круг: Говорим о музыке простыми словами



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

                    Впервые квартово-квинтовый круг был описан в книге «Идея грамматики мусикийской» от 1679 года русско-украинского композитора Николая Дилецкого.
                    Читать дальше →
                  • Как уменьшить количество измерений и извлечь из этого пользу

                      Сначала я хотел честно и подробно написать о методах снижения размерности данных — PCA, ICA, NMF, вывалить кучу формул и сказать, какую же важную роль играет SVD во всем этом зоопарке. Потом понял, что получится текст, похожий на вырезки из опусов от Mathgen, поэтому количество формул свел к минимуму, но самое любимое — код и картинки — оставил в полном объеме.
                      Читать дальше →