Как стать автором
Обновить

Машинное обучение для поиска ошибок в коде: как я стажировался в JetBrains Research

Блог компании Питерская Вышка Машинное обучение *Учебный процесс в IT
Недавно мы рассказывали о том, как попасть на стажировку в Google. Помимо Google наши студенты пробуют свои силы в JetBrains, Яндекс, Acronis и других компаниях.

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


Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 5.5K
Комментарии 8

Как учиться с помощью машинного обучения у экспертов в Dota 2

Блог компании Питерская Вышка Алгоритмы *Машинное обучение *Учебный процесс в IT Искусственный интеллект
Recovery mode

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


Всего голосов 31: ↑27 и ↓4 +23
Просмотры 13K
Комментарии 4

Как я научила робота бегать по видео с YouTube

Блог компании Питерская Вышка Алгоритмы *Машинное обучение *Учебный процесс в IT Искусственный интеллект
Мы продолжаем рассказывать о совместных научных проектах наших студентов и JetBrains Research. В этой статье поговорим об алгоритмах глубокого обучения с подкреплением, которые используются для моделирования двигательного аппарата человека.

Смоделировать все возможные движения человека и описать все сценарии поведения — достаточно сложная задача. Если мы научимся понимать, как человек двигается, и сможем воспроизводить его движения «по образу и подобию» — это сильно облегчит внедрение роботов во многие области. Как раз для того, чтобы роботы учились повторять и анализировать движения сами, и применяется машинное обучение.


Читать дальше →
Всего голосов 42: ↑39 и ↓3 +36
Просмотры 10K
Комментарии 14

Реляционное программирование: боль, интерес и снова боль

Блог компании Питерская Вышка Ненормальное программирование *Алгоритмы *Математика *Учебный процесс в IT
В предыдущем посте мы подробно рассказывали, чему учим студентов на направлении «Промышленное программирование». Для тех, чья сфера интересов лежит в более теоретической области, например, привлекают новые парадигмы программирования или абстрактная математика, используемая в теоретических исследованиях по программированию, существует другая специализация — «Языки программирования».

Сегодня я расскажу о своем исследовании в области реляционного программирования, которым занимаюсь в университете и в качестве студента-исследователя в лаборатории языковых инструментов JetBrains Research.

Что такое реляционное программирование? Обычно мы запускаем функцию с аргументами и получаем результат. А в реляционном случае можно делать наоборот: зафиксировать результат и один аргумент, а второй аргумент получить. Главное — правильно написать код и запастись терпением или хорошим кластером.


Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 8.2K
Комментарии 10

Подход интенсивного обучения STEM

Блог компании Образовательные проекты JetBrains Учебный процесс в IT
Из песочницы
В мире инженерного образования существует много отличных курсов, но зачастую программа обучения, построенная на них, обладает одним серьезным недостатком — отсутствием хорошей связности между различными темами. Можно возразить: как же так?

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

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

Университетское обучение экстенсивно — учащийся идет широким фронтом и зачастую не видит смысла и практической значимости знаний, которые получает. Мы решили перевернуть парадигму университетского обучения STEM (от слов Science, Technology, Engineering, Math) и сделать такую программу, которая опирается на связность знаний, допуская наращивание полноты в будущем, то есть подразумевает интенсивное освоение предметов.
Читать статью
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 4K
Комментарии 2

Arend – язык с зависимыми типами, основанный на HoTT (часть 2)

Блог компании Образовательные проекты JetBrains Программирование *
В первой части статьи про язык Arend мы рассматривали простейшие индуктивные типы, рекурсивные функции, классы и множества.

2. Сортировка списков в Arend


2.1 Упорядоченные списки в Arend


Определим тип упорядоченных списков как пару, состоящую из списка и доказательства его упорядоченности. Как мы уже говорили, в Arend зависимые пары определяются при помощи ключевого слова \Sigma. Определение типа Sorted дадим через сопоставление с образцом, вдохновившись определением из уже упомянутой статьи про упорядоченные списки.

\func SortedList (O : LinearOrder.Dec) => \Sigma (l : List O) (Sorted l)

\data Sorted {A : LinearOrder.Dec} (xs : List A) \elim xs
 | nil => nilSorted
 | :-: x nil => singletonSorted
 | :-: x1 (:-: x2 xs) => consSorted ((x1 = x2) || (x1 < x2)) (Sorted (x2 :-: xs))

Обратите внимание: Arend сумел автоматически вывести, что тип Sorted содержится во вселенной \Prop. Это произошло потому, что все три образца в определении Sorted являются взаимно исключающими, а конструктор consSorted имеет два параметра, оба из которых принадлежат \Prop.
Докажем какое-нибудь очевидное свойство предиката Sorted, скажем, что хвост упорядоченного списка сам является упорядоченным списком (это свойство пригодится нам в дальнейшем).
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 2.8K
Комментарии 0

Введение в функциональные зависимости

Блог компании Образовательные проекты JetBrains Исследования и прогнозы в IT
В этой статье мы поговорим о функциональных зависимостях в базах данных — что это такое, где применяются и какие алгоритмы существуют для их поиска.

Рассматривать функциональные зависимости мы будем в контексте реляционных баз данных. Если говорить совсем грубо, то в таких базах данных информациях хранится в виде таблиц. Далее мы используем приближенные понятия, которые в строгой реляционной теории не являются взаимозаменяемыми: саму таблицу будем называть отношением, столбцы — атрибутами (их множество — схемой отношения), а набор значений строки на подмножестве атрибутов — кортежем.


Читать дальше
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 16K
Комментарии 3

Введение в контекстно-ориентированное программирование на Kotlin

Блог компании Образовательные проекты JetBrains Программирование *
Это перевод статьи An introduction to context-oriented programming in Kotlin

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

Несколько слов о разрешении функций


Как хорошо известно, существует три основных парадигмы программирования (примечание Педанта: есть и другие парадигмы):

  • Процедурное программирование
  • Объектно-ориентированное программирование
  • Функциональное программирование
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 8.5K
Комментарии 12

Открытые лекции лабораторий JetBrains Research

Блог компании Образовательные проекты JetBrains
В прошедшем осеннем семестре сотрудники лабораторий JetBrains Research провели несколько открытых лекций в Computer Science Center. Тематика докладов разнообразная, как и области исследований лабораторий. Для удобства собрали ссылки на все выступления. Приятного просмотра!
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 5.3K
Комментарии 3

Анализ данных ChIP-seq: от гистонов к информатическим задачам

Блог компании Образовательные проекты JetBrains Биотехнологии
Каждый год Институт биоинформатики в Санкт-Петербурге и Москве набирает биологов, математиков и программистов, чтобы погрузить в мир биоинформатики. Биологи учатся программировать и тренируются реализовывать идеи в коде, а информатики изучают биологию и применяют алгоритмические подходы к биологическим и медицинским задачам. Самая важная часть обучения — реальные научные проекты. В этой статье мы расскажем о работе и результатах студентов Института, сделанной под руководством Олега Шпынова из JetBrains Research в 2019 году. Проект посвящен изучению изменения хроматина человека с помощью машинного обучения.


Студенты-информатики 2019 Института биоинформатики
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.7K
Комментарии 0

Статистическая регуляризация некорректных обратных задач им. Турчина (часть 1)

Блог компании Образовательные проекты JetBrains Алгоритмы *Математика *
Привет, Хабр! Сегодня мы хотим рассказать, чем занимается лаборатория методов ядерно-физических экспериментов, входящая в JetBrains Research.

Где JetBrains и где ядерная физика, спросите вы. Мы сошлись на почве любви к Kotlin, хотя в данном посте о нем речи не пойдет. Наша группа ориентируется на развитие методик анализа данных, моделирования и написание софта для ученых, и поэтому ориентирована на сотрудничество и обмен знаниями с IT-компаниями.

В этой статье мы хотим поговорить о популяризуемом нами методе статистической регуляризации, предложенном В.Ф.Турчиным в 70-х годах XX века, и его реализации в виде кода на Python и Julia.
Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 2.7K
Комментарии 8

Истории развития популяций, генетика и генетические алгоритмы

Блог компании Образовательные проекты JetBrains Алгоритмы *
Многим знакома гипотеза зарождения человечества в Африке. В рамках этой гипотезы предполагается, что все современное неафриканское население Земли в значительной степени происходит от популяций Homo sapiens, покинувших Африку. Первым эту теорию предложил Чарльз Дарвин, основываясь на том, что человек очень близок к таким обезьянам, как гориллы и шимпанзе, которые обитают в Африке. И если в основных моментах этой гипотезы ученые уже пришли к консенсусу, то многие детали остаются дискуссионными: был ли один выход из Африки или несколько, когда это происходило, какой длительности были эти волны и так далее.

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


Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 3.2K
Комментарии 1

Learn to Run

Блог компании Образовательные проекты JetBrains Машинное обучение *

Об авторе статьи


Александра Малышева — выпускница бакалавриата по направлению «Прикладная математика и информатика» Санкт-Петербургского Академического университета и выпускница магистратуры питерской Вышки по направлению «Программирование и анализ данных». Кроме того, исследовательница в лаборатории «Агентные системы и обучение с подкреплением» JetBrains Research, а также ассистентка преподавателя по обучению с подкреплением в бакалавриате Вышки.

Мотивация проекта


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

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


Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.1K
Комментарии 2

Открытые материалы: курс по вычислительной нейронауке

Блог компании Образовательные проекты JetBrains Учебный процесс в IT

В осеннем семестре 2020 года команда лаборатории Нейробиологии и физиологии развития прочитала курс «Вычислительные Нейронауки» для студентов партнерских магистратур ВШЭ и ИТМО, а также для заинтересованных вольнослушателей. Курс проводится в рамках образовательных программ JetBrains c 2019 года. В этом году, в отличие от прошлого, формат обучения был, естественно, дистанционный –– лекции и семинары проводились в виде видеоконференций. В ходе курса студентам был предложен базовый материал для изучения и обсуждения в аудитории, материалы для самостоятельного, более глубокого погружения, интересные практические задания по моделированию нейронов и биологических нейронных сетей. 

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.8K
Комментарии 0

Model Checking для тестирования многопоточности? С Lincheck — легко

Блог компании Образовательные проекты JetBrains Тестирование IT-систем *

Привет! Сегодня мы будем говорить про многопоточность и расскажем про инструмент  Lincheck – один из ключевых проектов  Лаборатории параллельных вычислений в JetBrains Research. Если в двух словах, то это фреймворк для тестирования многопоточных структур данных под JVM, предоставляющий возможность декларативного написания тестов. Что это значит? Как правило, при написании тестов мы пишем саму логику тестирования. С Lincheck-ом же все иначе – вместо указания того, как тестировать, вы объявляете операции, которые необходимо проверить, критерий корректности (например, линеаризуемость) и возможные ограничения (например, "single-consumer" для очередей) – то есть указываете что тестировать. А дальше Lincheck уже сам со всем разберется.  В этом посте мы сделаем краткий обзор Lincheck-а и расскажем про режим model checking, который мы недавно зарелизили и который уже спас нам десятки часов отладки ошибок в алгоритмах.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.6K
Комментарии 0

Из студентов в преподаватели: интервью с выпускниками магистерской программы JetBrains + ИТМО. Часть 2

Блог компании Образовательные проекты JetBrains Учебный процесс в IT Карьера в IT-индустрии
Продолжаем знакомить вас с выпускниками магистратуры JetBrains и ИТМО «Разработка программного обеспечения», которые по завершении обучения пополнили преподавательский состав программы. Во второй части интервью ребята рассказывают подробнее о своих задачах, подходах к преподаванию и дают советы абитуриентам. Первая часть интервью.


Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 2K
Комментарии 0

Научно-исследовательские инициативы JetBrains

Блог компании JetBrains Машинное обучение *Исследования и прогнозы в IT Робототехника Биотехнологии
«Develop with pleasure», «The drive to develop» — об этом вы наверняка от нас слышали. Но наши интересы далеко не ограничиваются разработкой и созданием мощных инструментов для повышения продуктивности. Мы верим, что можем многое изменить и сделать мир лучше. Один из верных способов — проведение исследований в области передовых технологий и образования. Совместно с ведущими научными учреждениями мира мы занимается прикладными исследованиями, способными влиять на жизни людей и двигать нас всех вперед.

Наши научные исследования объединены в рамках направления JetBrains Research.

Ниже мы представим исследовательские группы JetBrains Research и расскажем, чем они занимаются.

Наука сегодня для технологий будущего



JetBrains Research объединяет более 150 исследователей, участвующих в проектах более 19 лабораторий и групп. Лаборатории и группы ведут работу в самых разных направлениях — от физики элементарных частиц до разработки ПО.

Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 5.8K
Комментарии 6

JetBrains Education: предсказание побочных эффектов лекарств

Блог компании JetBrains Машинное обучение *Биотехнологии Химия

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

Меня зовут Елена Картышева, я выпускница программы «Разработка программного обеспечения» Университета ИТМО — одной из образовательных инициатив JetBrains. Вообще я занимаюсь биоинформатикой и машинным обучением, и сегодня хочу рассказать о своей выпускной квалификационной работе. В рамках диплома я улучшила модель предсказания совместных побочных эффектов лекарств. Это поможет разрабатывать более эффективный дизайн клинических исследований и собирать информацию о побочных эффектах новых препаратов.  

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 2.7K
Комментарии 0

Первый truly stateless оптимальный алгоритм модел-чекера и его проверка на Coq

Блог компании Образовательные проекты JetBrains Тестирование IT-систем *Алгоритмы *Функциональное программирование *

Надоели нестабильные баги в многопоточном коде? Попробуй воспользоваться модел-чекерами! Ведь больше не надо бояться неверифицированных модел-чекеров,  работающих либо за экспоненциальное время, либо неоптимально. Все это в прошлом: в Max Planck Institute for Software Systems разработали новый алгоритм под названием TruSt, который решает эти проблемы и, кроме того, верифицирован на Coq.

Меня зовут Владимир Гладштейн. Этим летом я проходил стажировку в MPI-SWS в группе, которая придумала алгоритм нового модел-чекера для поиска багов в многопоточных программах. Этот алгоритм является оптимальным и truly stateless (вследствие чего работает с линейными затратами по памяти). В этом посте я расскажу, как работают модел-чекеры, в каких случаях их можно использовать, и что за алгоритм придумали мои коллеги. А еще как я проверял доказательства его корректности на Coq.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 2.6K
Комментарии 40

Экосистема разработки в 2021 году: чем живут программисты в России и мире

Блог компании JetBrains Программирование *Исследования и прогнозы в IT

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

Отчет основан на мнениях 31 743 респондентов из 183 стран и регионов, большое спасибо всем участникам! Около двух тысяч опрошенных программистов — из России, и это позволило сделать выводы о том, чем российский рынок разработки отличается от остального мира. Вот некоторые интересные отличия:

— Российские разработчики моложе, но менее счастливы. В мире доля программистов старше 40 лет составляет 14%, а в России их 8%. Однако только 6% российских программистов считают, что они очень счастливы, в других же странах – 21%.

Другие результаты
Всего голосов 22: ↑20 и ↓2 +18
Просмотры 7.2K
Комментарии 5