# машинное обучение

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

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

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

DevFeed: [Code Completion. Часть 4: обучение модели](<https://devfeed.tech/articles/code-completion-4-23939.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/582388/>)

Author: p0b0rchy (JetBrains)

Published: 2021-10-11T09:02:36Z

Content type: article

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [code-completion](<https://devfeed.tech/topics/code-completion.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [catboost](<https://devfeed.tech/tags/catboost.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [ide](<https://devfeed.tech/tags/ide.md>), [metric-learning](<https://devfeed.tech/tags/metric-learning.md>), [ml](<https://devfeed.tech/tags/ml.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-baed6d151ab4](<https://devfeed.tech/tags/tag-baed6d151ab4.md>)

### AI overview

This fourth article in a code-completion series describes problems encountered while training a machine-learning model. It explains anonymizing collected IDE data, investigating anomalous autocomplete usage through logs, and excluding users with alphabetical suggestion sorting from the training dataset and experiments.

### Source excerpt

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

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

DevFeed: [Code Completion. Часть 3: где взять данные для обучения?](<https://devfeed.tech/articles/code-completion-3-23935.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/578650/>)

Author: p0b0rchy (JetBrains)

Published: 2021-09-20T10:27:02Z

Content type: article

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [code-completion](<https://devfeed.tech/topics/code-completion.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [data-protection](<https://devfeed.tech/tags/data-protection.md>), [dataset](<https://devfeed.tech/tags/dataset.md>), [ide](<https://devfeed.tech/tags/ide.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-9bf5e01ce62e](<https://devfeed.tech/tags/tag-9bf5e01ce62e.md>), [tag-baed6d151ab4](<https://devfeed.tech/tags/tag-baed6d151ab4.md>)

### AI overview

This article explains how JetBrains approaches building training data for machine-learning-based code completion. It describes why user code cannot be collected and why datasets derived only from completed open-source repositories do not adequately represent real development scenarios.

### Source excerpt

В предыдущей статье цикла мы установили, что современной системе автодополнения нужно машинное обучение -- чтобы ранжировать варианты подсказок. Машине, как и человеку, для обучения нужны данные. Мы используем подход "обучение с учителем". Он предполагает, что мы показываем алгоритму примеры задач, для которых нам заранее известно правильное решение. Алгоритм извлекает из этих примеров закономерности и учится принимать правильные решения даже в тех ситуациях, которых он раньше не видел. Результат обучения критическим образом зависит от качества и объема этих примеров. И именно здесь у нас возникают трудности. С одной стороны, собирать базу на основе кода наших пользователей нельзя: результат вашего труда остается только у вас, на серверы JetBrains он не попадает. С другой стороны, из доступных репозиториев с открытым кодом полноценный датасет собрать не получается. Делая так, мы обучали бы алгоритм работать только с готовым (рабочим) кодом. Сегодня обсудим, как мы выкручиваемся из этой ситуации. Для начала давайте более подробно рассмотрим, почему не получается работать с готовыми репозиториями. А потому что они "готовые"

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

DevFeed: [Code Completion. Часть 2: зачем тут машинное обучение?](<https://devfeed.tech/articles/code-completion-2-23929.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/572864/>)

Author: p0b0rchy (JetBrains)

Published: 2021-08-17T09:45:16Z

Content type: tutorial

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [code-completion](<https://devfeed.tech/topics/code-completion.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [ide](<https://devfeed.tech/tags/ide.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-baed6d151ab4](<https://devfeed.tech/tags/tag-baed6d151ab4.md>)

### AI overview

The second part of a series explains why machine learning is used in code completion. It examines conflicts among heuristic rules, including prefix and CamelCase matching, and discusses ranking suggestions by correctness and proximity to the edited code.

### Source excerpt

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

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

DevFeed: [Code Completion. Часть 1: сценарии и требования](<https://devfeed.tech/articles/code-completion-1-23920.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/568884/>)

Author: p0b0rchy (JetBrains)

Published: 2021-07-21T11:18:54Z

Content type: article

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [code-completion](<https://devfeed.tech/topics/code-completion.md>), [Code](<https://devfeed.tech/topics/code.md>), [ide](<https://devfeed.tech/topics/ide.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [ide](<https://devfeed.tech/tags/ide.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>)

### AI overview

This first article in a series examines why machine learning is useful for code completion in JetBrains IDEs. It introduces completion-use scenarios and requirements, including dataset collection, data protection, model training, and quality evaluation with desktop-application A/B tests.

### Source excerpt

Знаете, сколько всего успевает сделать IDE, чтобы показать окно сode сompletion, когда вы начинаете набирать новое слово? Под капотом формулы, полученные с помощью машинного обучения. Сортировка подсказок -- одно из первых применений машинного обучения в IDE JetBrains. Думаем, вам будет интересно узнать, через какие тернии нам пришлось пройти, чтобы эту сортировку реализовать. Данная статья -- первая из цикла, в рамках которого мы расскажем, зачем окну с подсказками вообще нужно машинное обучение и как мы решали некоторые связанные с этим задачи. А задач тех немало