• Machine Learning news

      Дисклеймер: здесь я собираю новости абсолютно субъективно. 

      Часть новостей - новости только для меня и могли появиться довольно давно. Просто я заметил их только сейчас. 

      Я сопровождаю новость своим комментарием, в котором излагаю причину, почему эта новость интересна мне.

      Читать далее
    • Calico Enterprise: обзор

      • Translation

      Translation of this article written by John Armstrong on Jan 20, 2021

      Вступая в новый год, самое время поразмышлять о достижениях компании Tigera и о том, насколько  Calico Enterprise изменилась за последний год и как она стала ведущим решением в сфере безопасности и мониторинга сетей и микросервисов Kubernetes. Опыт работы с пользователями корпоративного класса помог Tigera определить наиболее важные требования пользователей для успешного развертывания кластеров Kubernetes и успешного перехода от пилотных проектов к промышленным проектам. Эти знания помогли Tigera создать систему Calico Enterprise, архитектура которой и представлена ниже. Давайте рассмотрим этот многофункциональный слоёный пирог, снизу вверх.

      Архитектура корпоративных решений Calico:

      Читать далее
    • Пора на свалку


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


        Я тут на днях смотрел на свою RSS-читалку и заметил, что под тегом «C++» у меня где-то три сотни непрочитанных статей. Я не прочитал ни одной статьи по плюсам с прошлого лета, и мне офигенно. Я не написал ни строчки осмысленного кода на плюсах за последние три месяца, с тех пор, как распустили отдел, где я работал, и мне просто супер. Я позволил себе хотеть больше никогда не писать на плюсах, и у меня появились крылья.


        Только стало страшно, потому что это давно уже стало куском моей самоидентификации. Я писал на плюсах лет 17, это почти две трети моей жизни, и как-то очень стрёмно всё это выкидывать. Всё моё сеньёрство-помидорство, львиная часть моего опыта — она там, в наступании на плюсограбли. Кто я без своего костюма?


        Короче, да, я выгорел. И я не знаю, что делать дальше.

        Читать дальше →
      • Как устроиться в LinkedIn, Facebook, Google в Кремниевой Долине

          Зачем это читать?


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


          Я работаю в LinkedIn, который был приобретен Microsoft в 2016 году. У меня были предложения от Facebook, Bayer и разных стартапов, плюс множество собеседований с другими компаниями в Долине, включая Google и Tesla.


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

          Читать дальше →
        • Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования


          Дисклеймер:


          Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

          Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
          Читать дальше →
        • Главные достижения в области обработки естественного языка в 2017 году

          • Translation

          Всем привет. Сразу поделим аудиторию на две части — тех, кто любит смотреть видео, и тех, кто, как я, лучше воспринимает тексты. Чтобы не томить первых, запись моего выступления на Дата-Ёлке:



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

          Читать дальше →
          • +61
          • 18k
          • 3
        • Kaggle: как наши сеточки считали морских львов на Алеутских островах

            header_im


            Привет, Коллеги!


            27 июня закончилось соревнование на Kaggle по подсчёту морских львов (сивучей) на аэрофотоснимках NOAA Fisheries Steller Sea Lions Population Count. В нем состязались 385 команд. Хочу поделиться с вами историей нашего участия в челлендже и (почти) победой в нём.

            Читать дальше →
          • Всё плохо

            • Translation

            image


            Что ж, всё плохо. Немного забавно так говорить: на конференции (Web à Québec) было много разговоров об удивительном будущем и вещах, возможных благодаря новым технологиям. О новых средствах и устройствах, которые должны сделать нашу жизнь проще. Мои знакомые знают, что у меня обычно очень циничный взгляд на технологии; лично я боюсь всех этих умных устройств, которые реагируют на мои слова, чем восхищались другие спикеры.


            В основном потому, что чем больше времени я трачу на программирование и провожу в этой отрасли, тем больше узнаю, как всё работает изнутри, и тем меньше доверия всё это мне внушает. Я подобрал изображение для слайда. Это картина «Триумф смерти» Питера Брейгеля. В некоторой степени она раскрывает моё отношение к «умному дому».

            Читать дальше →
          • Как я пишу код

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

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

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

            Код, использующий неявное поведение, может быть основан на каком-нибудь недокументированном, но уже реализованном функционале. Например, в мире написана целая куча НЕВЕРНОГО кода, который полагается на то, что функция файловой системы, возвращающая список директорий, вернёт их в отсортированном по алфавиту порядке. Это и вправду часто работает именно так, но ровно до того момента, пока не ломается по «непонятным» причинам. А на самом деле просто никто никогда этой сортировки не гарантировал.
            Читать дальше →
          • Алгоритм Джонкера-Волгенанта + t-SNE = супер-сила

            • Translation
            До:



            После:



            Заинтригованы? Но обо всем по порядку.

            t-SNE


            t-SNE — это очень популярный алгоритм, который позволяет снижать размерность ваших данных, чтобы их было проще визуализировать. Этот алгоритм может свернуть сотни измерений к всего двум, сохраняя при этом важные отношения между данными: чем ближе объекты располагаются в исходном пространстве, тем меньше расстояние между этими объектами в пространстве сокращенной размерности. t-SNE неплохо работает на маленьких и средних реальных наборах данных и не требует большого количества настроек гиперпараметров. Другими словами, если взять 100 000 точек и пропустить их через эту волшебный черный ящик, на выходе мы получим красивый график рассеяния.
            Читать дальше →
            • +63
            • 29.1k
            • 2
          • Катаракта: это ждёт лично вас (если доживёте, конечно)


              Так выглядит модель интраокулярной мультифокальной линзы компании Carl Zeiss. Настоящий размер такого хрусталика — 11 миллиметров, диаметр оптической зоны — 6 мм.

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

              Процедура лечения исторически была очень своеобразной — реклинация мутного хрусталика. Врач принимал пациента с очень плотным хрусталиком — до той стадии плотным, что пациент уже слеп. При раскопках поселений Древней Греции и Рима найдены инструменты, которыми пользовались врачи для удаления катаракты — острые иглы, которыми протыкали глаз и хрусталик, разрушая его поддерживающий аппарат. Хрусталик мог оторваться и в силу своей тяжести опуститься вниз также от удара по затылку тяжёлой палкой несколько раз. Иногда пациент умирал в процессе скорой офтальмологической помощи, иногда получал сотрясение мозга, а иногда хрусталик срывался со связок и летел вглубь глаза. Пациент снова начинал видеть — у него была большущая шишка и зрение около +10 +15 диоптрий.

              Теперь две новости. Плохая — люди стали всё чаще доживать до катаракты, и она неотвратима. Хорошая — у нас есть кое-что получше острых игл и тяжёлой палки.
              Читать дальше →
            • Machine learning в простом проекте

                Я CTO проекта Preply и хочу рассказать немного о том, о чем мечтает каждый программист, а именно о сложных и интересных задачах в простых проектах.

                Если быть точнее, то о том, как можно добавить немного науки к бизнесу и получить в результате немного пользы. Этой статьей я постараюсь описать один из контекстов использования Machine Learning в реальном проекте.
                Читать дальше →
              • Открытый курс машинного обучения. Тема 7. Обучение без учителя: PCA и кластеризация

                  Привет всем! Приглашаем изучить седьмую тему нашего открытого курса машинного обучения!


                  Данное занятие мы посвятим методам обучения без учителя (unsupervised learning), в частности методу главных компонент (PCA — principal component analysis) и кластеризации. Вы узнаете, зачем снижать размерность в данных, как это делать и какие есть способы группирования схожих наблюдений в данных.


                  UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


                  Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

                  Читать дальше →
                  • +51
                  • 126k
                  • 7
                • Открытый курс машинного обучения. Тема 4. Линейные модели классификации и регрессии


                    Всем привет!


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


                    Пример такой задачи – это соревнование Kaggle Inclass по идентификации пользователя в Интернете по его последовательности переходов по сайтам.


                    UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


                    Все материалы доступны на GitHub.
                    А вот видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017). В ней, в частности, рассмотрены два бенчмарка соревнования, полученные с помощью логистической регрессии.

                    Читать дальше →
                  • Открытый курс машинного обучения. Тема 3. Классификация, деревья решений и метод ближайших соседей


                      Привет всем, кто проходит курс машинного обучения на Хабре!


                      В первых двух частях (1, 2) мы попрактиковались в первичном анализе данных с Pandas и в построении картинок, позволяющих делать выводы по данным. Сегодня наконец перейдем к машинному обучению. Поговорим о задачах машинного обучения и рассмотрим 2 простых подхода – деревья решений и метод ближайших соседей. Также обсудим, как с помощью кросс-валидации выбирать модель для конкретных данных.


                      UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


                      Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

                      Читать дальше →
                    • Храним 300 миллионов объектов в CLR процессе

                        Камень преткновения — GC


                        Все managed языки такие как Java или C# имеют один существенный недостаток — безусловное автоматическое управление паматью. Казалось бы, именно это и является преимуществом managed языков. Помните, как мы барахтались с dandling-указателями, не понимая, куда утекают драгоценные 10KB в час, заставляя рестартать наш любимый сервер раз в сутки? Конечно, Java и C# (и иже с ними) на первый взгляд разруливают ситуацию в 99% случаев.

                        Так-то оно так, только вот есть одна проблемка: как быть с большим кол-вом объектов, ведь в том же .Net никакой магии нет. CLR должен сканировать огромный set объектов и их взаимных ссылок. Это проблема частично решается путём введения поколений. Исходя из того, что большинство объектов живёт недолго, мы высвобождаем их быстрее и поэтому не надо каждый раз ходить по всем объектам хипа.

                        Но проблема всё равно есть в тех случаях, когда объекты должны жить долго. Например, кэш. В нём должны находиться миллионы объектов. Особенно, учитывая возрастание объемов оперативки на типичном современном серваке. Получается, что в кэше потенциально можно хранить сотни миллионов бизнес-объектов (например, Person с дюжиной полей) на машине с 64GB памяти.

                        Однако на практике это сделать не удаётся. Как только мы добавляем первые 10 миллионов объектов и они “устаревают” из первого поколения во второе, то очередной полный GC-scan “завешивает” процесс на 8-12 секунд, причём эта пауза неизбежна, т.е. мы уже находимся в режиме background server GC и это только время “stop-the-world”. Это приводит к тому, что серверная апликуха просто “умирает” на 10 секунд. Более того, предсказать момент “клинической смерти” практически невозможно.
                        Что же делать? Не хранить много объектов долго?

                        Зачем


                        Но мне НУЖНО хранить очень много объектов долго в конкретной задаче. Вот например, я храню network из 200 миллионов улиц и их взаимосвязей. После загрузки из flat файла моё приложение должно просчитать коэффициенты вероятностей. Это занимает время. Поэтому я это делаю сразу по мере загрузки данных с диска в память. После этого мне нужно иметь object-graph, который уже прекалькулирован и готов “к труду и обороне”. Короче, мне нужно хранить резидентно около 48GB данных в течении нескольких недель при этом отвечаю на сотни запросов в секунду.

                        Вот другая задача. Кэширование социальных данных, которых скапливаются сотни миллионов за 2-3 недели, а обслуживать необходимо десятки тысяч read-запросов в секунду.
                        Читать дальше →
                      • NFX — Ультраэффективная Бинарная Сериализация в CLR

                          Требования


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

                          • самозацикленные графы объектов (деревья с back-references)
                          • массивы структур (value types)
                          • классы/структуры с readonly полями
                          • инстансы существующих .Net коллекций (Dictionary, List), которые внутренне используют custom-сериализацию
                          • большое кол-во инстансов типов, специализированных для конкретной задачи


                          Речь пойдёт о трёх аспектах, которые очень важны в распределённых кластерных системах:

                          • скорость сериализации/десериализации
                          • объём объектов в сериализированном виде
                          • возможность использовать существующие объекты без надобности “украшения” этих объектов и их полей вспомогательными атрибутами для сериализации

                          Читать дальше →
                        • Почему в сорок лет я решил поменять профессию и стать программистом Python

                          На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование — руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."
                          Читать дальше →
                        • Как вернуться в кодеры, когда за сорок

                            Сколько раз рассказывал коллегам и на собеседованиях. Видимо есть спрос и на Хабре. Кто-то встал перед выбором. Другой сомневается в правильности намеченного пути. Когда выгораешь, такое случается. Кому-то интересно, с чем предстоит столкнуться впереди, или сопоставить своё подобное. Поверьте, это короткая версия объёмной тоскливой истории.

                            Читать дальше →
                          • FAQ про лазерную коррекцию ReLEx SMILE: да, в России есть, но нет, в России нет



                              — Делают ли в России малоинвазивные операции по лазерной коррекции зрения методом извлечения лентикулы (Small Incision Lenticule Extraction)?

                              Да, примерно уже 5 лет. С каждым годом всё больше и больше на конференциях офтальмологов возникают вопросы не уровня «Что это?», а конкретные практические по нюансам технологии. Лазеры VisuMax есть в нескольких клиниках России, но именно под ReLEx SMILE используются значительно меньше, чем под femtoLASIK. Исторически так сложилось в России, что эта технология мало используется в центральной части и активно используется за Уралом.

                              — Что за история с лицензиями на конкретные операции?

                              Цейс продаёт конусы вместе с лицензиями. Конус — сменная деталь, прилегающая к глазу, покупается вместе с лицензией на использование лазерной процедуры, обычно пакетами по 10 или 100 операций. Поступает, например, 10 конусов и 10 лицензий. Лицензии вбиваются через меню лазера, и он позволяет по разу использовать соответствующие конусы для соответствующих типов программы. Лицензии на SMILE отдельно, на femtoLASIK отдельно, на FLEX, кольца и докоррекции также отдельные лицензии. У большинства производителей фемтосекундных и некоторых эксимерных лазеров похожая ситуация. Не нужны лицензии на эксимерные операции, пожалуй, разве на моделях примерно 5-летней давности и старше.

                              — И можно не получить такую лицензию на SMILE?

                              Запросто. Во-первых, этот модуль в лазере стоит как дорогостоящая опция, так что сам прибор без опции SMILE стоит дешевле. Во-вторых, если эта опция имеется, то лицензии на проведение операции ReLEx SMILE возможно приобрести только после проведения 5–10 тестовых прогонов на свиных глазах, затем проведения минимум 10 операций femtoLASIK на пациентах, затем 50 операций FLEX, и только после этого можно будет купить лицензию на SMILE для конкретного хирурга.
                              Читать дальше →