Как стать автором
Обновить
72
0
Роман Поборчий @p0b0rchy

Пользователь

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

Code Completion. Часть 4: обучение модели

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

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

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

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

Например
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

Code Completion. Часть 3: где взять данные для обучения?

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

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

Машине, как и человеку, для обучения нужны данные. Мы используем подход «обучение с учителем». Он предполагает, что мы показываем алгоритму примеры задач, для которых нам заранее известно правильное решение. Алгоритм извлекает из этих примеров закономерности и учится принимать правильные решения даже в тех ситуациях, которых он раньше не видел.

Результат обучения критическим образом зависит от качества и объема этих примеров. И именно здесь у нас возникают трудности.

С одной стороны, собирать базу на основе кода наших пользователей нельзя: результат вашего труда остается только у вас, на серверы JetBrains он не попадает.

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

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

А потому что они «готовые»
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

Code Completion. Часть 2: зачем тут машинное обучение?

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

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

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

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

Как на самом деле работают подсказки
Всего голосов 16: ↑16 и ↓0+16
Комментарии3

Code Completion. Часть 1: сценарии и требования

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

Знаете, сколько всего успевает сделать IDE, чтобы показать окно сode сompletion, когда вы начинаете набирать новое слово? Под капотом формулы, полученные с помощью машинного обучения.

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

А задач тех немало
Всего голосов 23: ↑23 и ↓0+23
Комментарии17

Что будет на конференции UseData Conf 2019?

Время на прочтение9 мин
Количество просмотров1.9K
Ура! Мы завершили формирование программы конференции UseData Conf 2019! Эта конференция для тех, кто решает практические задачи с помощью методов машинного обучения. Между идеальным алгоритмом в вакууме и его применением на реальных данных часто лежит пропасть. Мы хотим, чтобы те, кто умеет преодолевать эту пропасть, встретились и смогли обменяться опытом.



Магия машинного обучения для управленцев, истории применения ML для анализа эффективности рекламы в телевизоре, беспилотные игрушечные машинки, нефть и автомобильные номера — это лишь часть докладов на UseData 2019. Об этих и других темах подробнее под катом.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии0

Deep Learning vs common sense: разрабатываем чат-бота

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

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



Двигаясь от простых методов к более сложным в задаче разработки чат-бота, разберем вопросы практической реализации и посмотрим, какой прирост качества можно получить и сколько это будет стоить.
Всего голосов 37: ↑35 и ↓2+33
Комментарии2

Как мы обучили нейронную сеть классифицировать шурупы

Время на прочтение10 мин
Количество просмотров27K
Нейронная сеть может опознать котика на фотографии, найти диван, улучшить видеозапись, нарисовать картинку из щенят или простого наброска. К этому мы уже привыкли. Новости о нейросетях появляются почти каждый день и стали обыденными. Компании Grid Dynamics поставили задачу не обыденную, а сложную — научить нейросеть находить специфический шуруп или болт в огромном каталоге интернет-магазина по одной фотографии. Задачка сложнее, чем найти котика.



Проблема интернет-магазина шурупов — в ассортименте. Тысячи или десятки тысяч моделей. У каждого шурупа свое описание и характеристики, поэтому на фильтры нет надежды. Что делать? Искать вручную или искать в гипермаркете на полках? В обоих случаях это потеря времени. В итоге клиент устанет и пойдет забивать гвоздь. Чтобы помочь ему, воспользуемся нейросетью. Если она может находить котиков или диваны, то пусть занимается чем-то полезным — подбирает шурупы и болты. Как научить нейросеть подбирать для пользователя шурупы быстро и точно, расскажем в расшифровке доклада Марии Мацкевичус, которая в компании Grid Dynamics занимается анализом данных и машинным обучением.
Всего голосов 88: ↑84 и ↓4+80
Комментарии33

Жизненный цикл ML в боевых условиях

Время на прочтение16 мин
Количество просмотров13K
В реальном внедрении ML само обучение занимает от силы четверть усилий. Остальные три четверти — подготовка данных через боль и бюрократию, сложный деплой часто в закрытом контуре без доступа в интернет, настройка инфраструктуры, тестирование и мониторинг. Документы на сотни листов, ручной режим, конфликты версий моделей, open source и суровый enterprise — все это ждет data scientist’а. Но такие «скучные» вопросы эксплуатации ему не интересны, он хочет разработать алгоритм, добиться высокого качества, отдать и больше не вспоминать.

Возможно, где-то ML внедряется легче, проще, быстрее и одной кнопкой, но мы таких примеров не видели. Все, что выше — опыт компании Front Tier в финтехе и телекоме. О нем на HighLoad++ рассказал Сергей Виноградов — эксперт в архитектуре высоконагруженных систем, в больших хранилищах и тяжелом анализе данных.


Всего голосов 21: ↑19 и ↓2+17
Комментарии2

Используем данные на практике

Время на прочтение7 мин
Количество просмотров3K
Между идеальным алгоритмом машинного обучения в вакууме и его применением на реальных данных часто лежит пропасть. Вроде бы берешь статью: алгоритм есть, сходимость для данных такого-то типа есть — бери и применяй. Но почему-то оказывается, что твоих данных недостаточно для обучения, да и отличаются они от модельных из статьи, потому что настоящие, не синтетические.

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


Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии9

Я так хотел попасть в программный комитет конференции, и вот я здесь, и что мы будем делать?

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


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

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

Я говорю о работе с нормальными людьми, профессионалами в своём деле, а не в выступлениях. О работе с теми, кто сам подаёт заявку на доклад через форму подачи заявок. О работе с теми, кто на самом деле обеспечивает конференциям приток свежей крови и новых знаний, без которых весь процесс очень быстро выродится.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии15

Разбор доклада Дмитрия Столярова о мониторинге Kubernetes

Время на прочтение6 мин
Количество просмотров6.3K
Ох, больше года прошло с предыдущего разбора, но пришла пора возвращать традиции. Сегодня смотрим доклад Дмитрия distol Столярова «Мониторинг и Kubernetes», который был представлен в мае этого года на фестивале РИТ++, и пытаемся на его примере понять, почему людям обычно нравятся доклады Дмитрия.


Слайды (все 344 штуки) можно найти тут.
Дисклеймер: про мониторинг и Kubernetes не сама статья, а доклад, который в ней разбирается.
Всего голосов 51: ↑50 и ↓1+49
Комментарии3

Пойди туда, не знаю куда: по следам конференции SmartData

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


Конференций, связанных с AI / ML / data science в последнее время и у нас стало довольно много. Организаторы до сих пор ищут форматы, концепции конференций меняются, но состав спикеров повторяется процентов на 50.

Задача поиска формата стояла и перед программным комитетом SmartData. Задача эта довольно размытая. Кто тот человек, который занимается анализом и / или обработкой данных, что ему интересно? От участников конференции мы получили частичные ответы на эти вопросы, но данных хочется больше. В связи с этим хочу поделиться тем представлением об идеальном мире, которое сложилось на данный момент, и пригласить читателей к дискуссии в комментариях. Помогите сделать такую конференцию, на которую вам потом самим захочется сходить.

Кроме вопросов о ваших интересах и задачах, за кликом вас ждут две ранее не публиковавшиеся видеозаписи выступлений с первой конференции, технический приём написания текстов на Хабр и один забавный факт о беспилотных автомобилях.
И кое-что ещё
Всего голосов 30: ↑28 и ↓2+26
Комментарии3

Легко ли выступать на конференции в первый раз?

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


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

В этот же момент возникает одна из болезней роста: новые люди боятся подавать заявки. Не то чтобы совсем пропадают, но их оказывается меньше, чем хотелось бы. Многие, и совершенно напрасно, рассуждают в духе «не с моим рылом в калашный ряд». На примере прошедшего Highload++ давайте посмотрим, насколько тяжело приходится докладчику-новичку. Можно ли с первого раза выступить успешно?

Спойлер: можно. Что для этого нужно делать?
Статистика, отзывы зрителей и советы новичкам
Всего голосов 50: ↑49 и ↓1+48
Комментарии13

Разбор доклада Ивана Круглова «Строим свой Service Mesh»

Время на прочтение6 мин
Количество просмотров5.8K
На каждой крупной регулярной конференции есть докладчики, которые приходят каждый год, рассказывают что-нибудь новое и всегда нравятся аудитории. Всегда быть в самом-самом топе для человека, который не занимается выступлениями профессионально, очень трудно (да и зачем), но всегда выдавать уверенно хороший материал — реально. Один из спикеров, сделавших несколько успешных докладов и на Highload++, и на РИТ++, — Иван Круглов из Booking.com.

Несколько дней назад в блоге Онтико уже была статья о подготовке докладчиков, посвящённая больше подаче материала, а сегодня хотелось бы рассказать о другом аспекте подготовки, которым на РИТ++ и Highload++ я в основном и занимаюсь. Давайте на примере последнего выступления Ивана рассмотрим, что важно и над чем мы при подготовке конференции работаем с докладчиками в области содержания.



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

Дисклеймер: про SOA только разбираемый доклад, а не сама статья.
Всего голосов 18: ↑16 и ↓2+14
Комментарии7

Анализ доклада Никиты Макарова о револьвере, мнемонике, заведующем складом и других полезных вещах

Время на прочтение6 мин
Количество просмотров4.5K
В блоге JUG.ru новый разбор, на этот раз под увеличительное стекло попал Никита Макаров из «Одноклассников», многократный участник программных комитетов наших конференций. Сегодня мы рассмотрим доклад о микросервисах для автоматизации тестирования. Выступление состоялось в 2015 году на встрече devclub.eu в Таллинне:



Слайды доклада можно найти тут.
Всего голосов 29: ↑29 и ↓0+29
Комментарии0

Разбор доклада Артёма Гавриченкова о масштабировании TLS

Время на прочтение5 мин
Количество просмотров3.7K
Сегодняшняя статья посвящена докладу про безопасность. Это рассказ Артёма ximaera Гавриченкова «Масштабируя TLS», который был представлен на Highload++ в ноябре 2016 года:


Слайды можно найти тут.

Disclaimer: про сертификаты и TLS только разбираемое выступление, а не сама статья.

Сюжет


Всегда приятно смотреть, как докладчик находит в какой-то общеупотребительной вещи подводные камни, которые вас, да-да, вот именно вас, запросто могут больно задеть. Это благодатные темы, заходят они обычно на ура. При этом человеку, который глубоко занимается тем, чем обычные люди просто пользуются, всегда есть чем шокировать публику.
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Разбор доклада Романа Неволина про F#

Время на прочтение7 мин
Количество просмотров3.7K
С предыдущего разбора прошло много времени, но я не бросил затею. Сегодня предлагаю вашему вниманию доклад Романа nevoroman Неволина, посвящённый тому, какой выход есть у человека, если он, во-первых, data scientist, а во-вторых, почему-то любит .NET.

Вполне логично, что это выступление состоялось на DotNext в декабре 2016 года:


Слайды можно найти тут.

Традиционный дисклеймер: про .NET только разбираемый в статье доклад, а не сама статья.
Всего голосов 24: ↑18 и ↓6+12
Комментарии0

Разбор доклада Андрея Акиньшина про арифметику

Время на прочтение5 мин
Количество просмотров8.8K
Всем привет, готов ещё один разбор. Сегодня будем смотреть доклад не с JPoint, а с DotNext! Автор доклада — Андрей DreamWalker Акиньшин, и посвящено его выступление деталям реализации арифметики с плавающей точкой в .NET:


Слайды можно найти здесь.

Дисклеймер: про реализацию арифметики только сам разбираемый доклад, а не собственно статья.
Всего голосов 27: ↑25 и ↓2+23
Комментарии26

Анализ доклада Баруха Садогурского с JPoint 2015

Время на прочтение6 мин
Количество просмотров7.5K
Созрел ещё один разбор, в этот раз смотрим доклад Баруха jbaruch Садогурского «Как писать асинхронные многопоточные http-приложения» с JPoint 2015:


Слайды тут.

Про Java только разбираемый доклад, а не сама статья.
Всего голосов 35: ↑33 и ↓2+31
Комментарии8

Анализ доклада Руслана Черёмина с JPoint 2016

Время на прочтение5 мин
Количество просмотров3.9K
Всем добрый день, с вами снова Роман Поборчий в блоге JUG.ru, и сегодня мы разбираем доклад Руслана cheremin Черёмина про escape-анализ и скаляризацию:


Слайды можно посмотреть и скачать тут. Традиционный disclaimer: про Java только разбираемый в статье доклад, а не сама статья.
Всего голосов 16: ↑16 и ↓0+16
Комментарии8
1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность