Pull to refresh
72
0
Роман Поборчий @p0b0rchy

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

Send message

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

Reading time4 min
Views1.5K

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

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

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

Например
Total votes 12: ↑12 and ↓0+12
Comments9

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

Reading time7 min
Views1.4K

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

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

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

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

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

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

А потому что они «готовые»
Total votes 10: ↑9 and ↓1+12
Comments0

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

Reading time5 min
Views2.4K

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

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

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

Как на самом деле работают подсказки
Total votes 16: ↑16 and ↓0+16
Comments3

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

Reading time7 min
Views4.5K

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

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

А задач тех немало
Total votes 23: ↑23 and ↓0+23
Comments17

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

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



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

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

Reading time14 min
Views13K
Чем больше пользователей у вашего сервиса, тем выше вероятность, что им понадобится помощь. Чат с техподдержкой — очевидное, но довольно дорогое решение. Но если применить технологии машинного обучения, можно неплохо сэкономить.

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



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

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

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



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

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

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

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


Total votes 21: ↑19 and ↓2+17
Comments2

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

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

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


Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments9

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

Reading time9 min
Views5.1K


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

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

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

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

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


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

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

Reading time7 min
Views3.1K


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

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

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

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

Reading time8 min
Views14K


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

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

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

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

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

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



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

Дисклеймер: про SOA только разбираемый доклад, а не сама статья.
Total votes 18: ↑16 and ↓2+14
Comments7

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

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



Слайды доклада можно найти тут.
Total votes 29: ↑29 and ↓0+29
Comments0

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

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


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

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

Сюжет


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

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

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

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


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

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

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

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


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

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

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

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


Слайды тут.

Про Java только разбираемый доклад, а не сама статья.
Total votes 35: ↑33 and ↓2+31
Comments8

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

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


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

Information

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