Содержание статьи
- Классический кодинг vs машинное обучение
- Задачи искусственного интеллекта
- Чем машинлернинг может помочь в ИБ
- Что включает в себя машинное обучение
- Данные
- Признаки
- Алгоритмы
- Чем отличаются разные алгоритмы
- Наивный байесовский классификатор
- Деревья решений
- Отличия нейросетей от других алгоритмов
- Особенности машинного обучения в ИБ
- Подведем итоги
info
Редакция благодарит команду «Хакердом» за помощь в подготовке статьи.
Искусственный интеллект — это на самом деле сразу несколько областей компьютерных наук, которые решают задачи, свойственные человеческому разуму: распознавание речи, классификация объектов, а также разные игры вроде шахмат и го.
Машинное обучение — это часть темы искусственного интеллекта, где изучается не прямое программирование задач, а программирование через обучение в процессе решения однотипных задач.
В понятие машинлернинга входят разные алгоритмы — такие как random forest («случайный лес»), деревья решений, наивный байесовский классификатор, градиентный бустинг и другие. Нейронные сети, в том числе глубокие, — это тоже один из алгоритмов машинного обучения.
Классический кодинг vs машинное обучение
Как происходит программирование в классическом понимании? Допустим, у человека есть компьютер, который работает по определенному алгоритму. Человек вводит в него данные, задает программу, и алгоритм выдает результаты. В этом случае все предельно понятно. Человек может получить точность до 100 процентов, особенно если запрос — это математические операции.
А вот в случае с машинным обучением программа и выходы поменяются местами. То есть человек дает алгоритму данные и указывает правильные решения, а дальше компьютер думает, как сделать так, чтобы из этих данных получались желаемые результаты. В процессе такой работы и рождается программа.
Задачи искусственного интеллекта
Есть четыре основные задачи искусственного интеллекта:
- классификация;
- регрессия;
- ранжирование;
- кластеризация.
Машинное обучение состоит из двух процессов. Первый — это тренировка, когда человек берет данные, обучает модель и в итоге получает некий классификатор.
Второй процесс — это уже использование ML, когда обученный классификатор внедряется в систему, а затем на вход системы подают новые данные, которые классификатор не видел. В результате мы получаем предсказания от классификатора.
Чем машинлернинг может помочь в ИБ
Рассмотрим пример того, как человек пользуется своей электронной почтой. Можно выделить четыре паттерна поведения человека, анализ которых поможет определить его действия.
- В какое время суток человек пользуется почтой: утром, днем, вечером.
- Сколько устройств использует: телефон, компьютер или сразу несколько устройств одновременно.
- В каких локациях человек находится, когда пользуется почтой.
- В каком порядке человек проверяет письма: сверху вниз или снизу вверх. Мы можем определить это по тому, как он отвечает или удаляет из ящика рассылки и прочий мусор.
Совокупность ответов на эти вопросы создает портрет человека (на рисунке ниже поведение такого человека выделено красным). Для машинного обучения эти действия будут предсказуемые, без каких‑либо всплесков.
Теперь представим, что хакер взломал почту, узнав каким‑то образом пароль от нее, и зашел как пользователь. Его поведение будет явно отличаться от поведения человека, который пользовался электронным ящиком до него. На графике поведение хакера показано характерными всплесками.
Задача алгоритма заключается в том, чтобы определить тот момент, когда изменилось поведение человека, которое образовало такой всплеск. О подобном примере можешь почитать в блоге Яндекса на Хабре.
Другой хороший пример — соревнования Catch me if you can на сайте Kaggle. Это, кстати, очень полезный сайт для тех, кто хочет изучить машинное обучение.
Задача — отличить взломщика от нормального пользователя по его поведению. Например, дано: сайты, которые посещает человек, и время нахождения человека на них. Нужно по последовательности посещений сайтов определить взломщика. На стартовой странице представлен обзор задачи и размеченные данные. А также есть вкладка, где можно найти, как эту задачу решили другие пользователи. То есть Kaggle дает возможность не только поучаствовать в соревнованиях, но и набраться опыта у других людей.
Что включает в себя машинное обучение
Машинное обучение включает в себя три компонента: данные, признаки и алгоритмы. Давай рассмотрим их по отдельности.
Данные
В открытом доступе есть множество наборов данных, на которых можно тренировать алгоритмы. Но у таких наборов есть недостатки. Например, наборы могут быть неполными, плохо размечены и неточны. Если ты захочешь внедрить решение на ML-технологиях, нужно будет собрать набор данных под определенную задачу и готовый набор вряд ли будет хорошо соответствовать. Люди готовы выкладывать алгоритмы, рассказывать, что и как они используют, но мало кто хочет делиться своими наборами данных.
Задача дата‑сайентиста — подготовить набор данных к использованию: собрать, разметить и вычистить его. Это очень трудоемкий процесс, который занимает примерно 50–70 процентов работы.
Признаки
Рассмотрим простой веб‑запрос. Допустим, у тебя есть: длина запроса, код ответа, URL, контекст, популярность домена и так далее. Всего таких признаков можно набрать 600 штук. В этом случае возникает два важных вопроса:
- Какие из этих признаков брать, а какие не стоит?
- Где будет использовано решение — в режиме realtime или офлайн?
Причем тебе придется искать компромисс между этими двумя параметрами. Например, если решение будет использовано в реальном времени, нужно, чтобы модель могла быстро считать. Поэтому признаков стоит взять поменьше, модельку послабее. В офлайновом режиме можно выгрузить данные, анализировать их и раскидывать по категориям. В этом случае используй любую модель любой сложности, потому что можно заставить алгоритм думать столько, сколько понадобится.
Вот еще один пример. Предположим, нам нужно понять, опасный перед нами файл или нет. Для этого сначала ответим на следующие вопросы:
- Требует ли файл доступа в интернет?
- Делает ли он что‑то похожее на сканирование?
- Какие IP использует файл?
- Хочет ли он достучаться до реестра?
- Работает ли файл с памятью?
- Хочет ли он изменить файловую систему?
- Имеет ли файл возможность самокопирования или захвата других файлов?
Ответы на эти вопросы помогут выявить признаки, которые можно использовать для решения нашей задачи.
Алгоритмы
Алгоритмы можно разделить на несколько типов:
- обучение без учителя;
- обучение с учителем;
- обучение с частичным привлечением учителя (semi-supervised learning);
- обучение с подкреплением.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»