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