Что такое машинное обучение и где оно применяется

Что такое машинное обучение и почему оно может лишить вас работы

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

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

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

Что такое машинное обучение

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

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

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

Quantamagazine.org

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

Почему машинное обучение — это важно

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

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

Источник: https://lifehacker.ru/chto-takoe-mashinnoe-obuchenie/

Обучение машин: что такое machine learning и как им овладеть

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

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

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

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

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

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

На вход поступают миллионы самых разнообразных «подписанных» (размеченных) картинок, алгоритм вычисляет, какие особенности характеризуют изображение машины или изображение кресла, а затем определяет, что изображено на неподписанной картинке.

С учителем и без: каким бывает машинное обучение

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

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

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

Это называют обучением с учителем (supervised machine learning): вы сами уже знаете соотношение, влияющее на цену, и позволяете компьютеру его рассчитать. У вас есть X и Y, а компьютер лишь находит связывающую их закономерность.

Другой тип машинного обучения — обучение без учителя (unsupervised machine learning). В этом случае у вас есть данные о домах, но о том, как они соотносятся с ценой, вы и не подозреваете. Однако анализ информации может обнаружить интересные закономерности в ценах по районам, по времени продаж и так далее.

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

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

Глубокое обучение (deep learning) включает работу с нейронными сетями. Нейронная сеть вступает в дело, когда входных параметров очень много, их взаимосвязь и расчет слишком сложны.

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

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

От НАСА до лесов Амазонии: где применяется machine learning (и нужно ли оно вам)

Онлайн-кинотеатр Netflix посещают около 117 млн пользователей по всему миру, и разработчики используют машинное обучение, чтобы рекомендовать пользователям фильмы и сериалы на основе персональной истории просмотра и оценок.

Помимо этого, они работают над «умным кэшированием», которое подгружает кусок следующей серии сериала, если зритель смотрит предыдущую.

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

Источник: https://theoryandpractice.ru/posts/16970-obuchenie-mashin-chto-takoe-machine-learning-i-kak-im-ovladet

Обзор самых популярных алгоритмов машинного обучения

Существует такое понятие, как «No Free Lunch» теорема. Её суть заключается в том, что нет такого алгоритма, который был бы лучшим выбором для каждой задачи, что в особенности касается обучения с учителем.

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

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

Алгоритмы машинного обучения можно описать как обучение целевой функции f, которая наилучшим образом соотносит входные переменные X и выходную переменную Y: Y = f(X).

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

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

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

1.  Линейная регрессия

Линейная регрессия — пожалуй, один из наиболее известных и понятных алгоритмов в статистике и машинном обучении.

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

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

Например: Y = B0 + B1 * X

Зная X, мы должны найти Y, и цель линейной регрессии заключается в поиске значений коэффициентов B0 и B1.

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

Линейная регрессия существует уже более 200 лет, и за это время её успели тщательно изучить. Так что вот пара практических правил: уберите похожие (коррелирующие) переменные и избавьтесь от шума в данных, если это возможно. Линейная регрессия — быстрый и простой алгоритм, который хорошо подходит в качестве первого алгоритма для изучения.

2 .  Логистическая регрессия

Логистическая регрессия — ещё один алгоритм, пришедший в машинное обучение прямиком из статистики. Её хорошо использовать для задач бинарной классификации (это задачи, в которых на выходе мы получаем один из двух классов).

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

Логистическая функция выглядит как большая буква S и преобразовывает любое значение в число в пределах от 0 до 1. Это весьма полезно, так как мы можем применить правило к выходу логистической функции для привязки к 0 и 1 (например, если результат функции меньше 0.5, то на выходе получаем 1) и предсказания класса.

Благодаря тому, как обучается модель, предсказания логистической регрессии можно использовать для отображения вероятности принадлежности образца к классу 0 или 1. Это полезно в тех случаях, когда нужно иметь больше обоснований для прогнозирования.

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

3. Линейный дискриминантный анализ (LDA)

Логистическая регрессия используется, когда нужно отнести образец к одному из двух классов. Если классов больше, чем два, то лучше использовать алгоритм LDA (Linear discriminant analysis).

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

  • Среднее значение для каждого класса;
  • Дисперсию, рассчитанную по всем классам.

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

4.  Деревья принятия решений

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

Листовые узлы — это выходная переменная, которая используется для предсказания. Предсказания производятся путём прохода по дереву к листовому узлу и вывода значения класса на этом узле.

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

5 . Наивный Байесовский классификатор

Наивный Байес — простой, но удивительно эффективный алгоритм.

Модель состоит из двух типов вероятностей, которые рассчитываются с помощью тренировочных данных:

  1. Вероятность каждого класса.
  2. Условная вероятность для каждого класса при каждом значении x.

После расчёта вероятностной модели её можно использовать для предсказания с новыми данными при помощи теоремы Байеса. Если у вас вещественные данные, то, предполагая нормальное распределение, рассчитать эти вероятности не составляет особой сложности.

Наивный Байес называется наивным, потому что алгоритм предполагает, что каждая входная переменная независимая. Это сильное предположение, которое не соответствует реальным данным. Тем не менее данный алгоритм весьма эффективен для целого ряда сложных задач вроде классификации спама или распознавания рукописных цифр.

6.  K-ближайших соседей (KNN)

К-ближайших соседей — очень простой и очень эффективный алгоритм. Модель KNN (K-nearest neighbors) представлена всем набором тренировочных данных. Довольно просто, не так ли?

Предсказание для новой точки делается путём поиска K ближайших соседей в наборе данных и суммирования выходной переменной для этих K экземпляров.

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

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

Идея ближайших соседей может плохо работать с многомерными данными (множество входных переменных), что негативно скажется на эффективности алгоритма при решении задачи. Это называется проклятием размерности. Иными словами, стоит использовать лишь наиболее важные для предсказания переменные.

7 .  Сети векторного квантования (LVQ)

Недостаток KNN заключается в том, что нужно хранить весь тренировочный набор данных. Если KNN хорошо себя показал, то есть смысл попробовать алгоритм LVQ (Learning vector quantization), который лишён этого недостатка.

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

Алгоритм ищет ближайшего соседа (наиболее подходящий кодовый вектор) путём вычисления расстояния между каждым кодовым вектором и новым экземпляром данных. Затем для наиболее подходящего вектора в качестве предсказания возвращается класс (или число в случае регрессии).

Лучшего результата можно достичь, если все данные будут находиться в одном диапазоне, например от 0 до 1.

8. Метод опорных векторов (SVM)

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

Гиперплоскость — это линия, разделяющая пространство входных переменных.

В методе опорных векторов гиперплоскость выбирается так, чтобы наилучшим образом разделять точки в плоскости входных переменных по их классу: 0 или 1.

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

Читайте также:  Электромобили 2018 года - 12 топовых моделей

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

Только эти точки имеют значение при определении гиперплоскости и при построении классификатора. Эти точки называются опорными векторами.

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

Метод опорных векторов, наверное, один из самых эффективных классических классификаторов, на который определённо стоит обратить внимание.

9 .  Бэггинг и случайный лес

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

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

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

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

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

10 .  Бустинг и AdaBoost

Бустинг — это семейство ансамблевых алгоритмов, суть которых заключается в создании сильного классификатора на основе нескольких слабых.

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

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

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

AdaBoost используют вместе с короткими деревьями решений. После создания первого дерева проверяется его эффективность на каждом тренировочном объекте, чтобы понять, сколько внимания должно уделить следующее дерево всем объектам.

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

После построения всех деревьев делаются предсказания для новых данных, и эффективность каждого дерева определяется тем, насколько точным оно было на тренировочных данных.

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

Пара слов напоследок

Когда новички видят всё разнообразие алгоритмов, они задаются стандартным вопросом: «А какой следует использовать мне?» Ответ на этот вопрос зависит от множества факторов:

  • Размер, качество и характер данных;
  • Доступное вычислительное время;
  • Срочность задачи;
  • Что вы хотите делать с данными.

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

Перевод статьи «A Tour of The Top 10 Algorithms for Machine Learning Newbies»

Никита Прияцелюк, последний центурион

Источник: https://tproger.ru/translations/top-machine-learning-algorithms/

Введение в машинное обучение

Перевод статьи разработчика алгоритмов машинного обучения, бизнес-консультанта и популярного автора Ганта Лаборде «Machine Learning: from Zero to Hero». 

Начнешь c “Зачем?”, придешь к “Я готов!”

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

Почему машинное обучение сейчас в тренде

Искусственный интеллект (далее ИИ) всегда имел применение, начиная от перемещения ракетки в пинг понге и заканчивая выполнением комбо в Street Fighter.

ИИ опирается на представление программиста о том, как программа должна себя вести. Но как часто становится понятно, не все программисты талантливы в программировании искусственного интеллекта. Стоит только погуглить “эпичные фейлы в играх” и наткнуться на глюки в физике, даже у опытных разработчков.

Несмотря на это, компьютер поддается обучению для игры в видеоигры, понимания языка и распознавания людей и предметов. Этот навык исходит из старой концепции, которая только недавно получила необходимые вычислительные мощности для существования вне теории. Я имею в виду машинное обучение (ML, Machine learning).

Не продумывайте сложные алгоритмы самостоятельно — обучите компьютер создавать собственные сложные алгоритмы. Как это будет работать? Алгоритм не столько написан, сколько выведен. Посмотри это короткое видео, с помощью анимации оно должно дать понимание общего принципа создания ИИ.

И как возможно такое, что мы даже не понимаем устройство рабочего алгоритма? Прекрасным визуальным примером был ИИ, написанный для прохождения игр Марио. Люди хорошо знают, как нужно играть в сайд-скроллеры, но это безумие пытаться определить стратегию игры для ИИ.

Впечатлены? Как это возможно? К счастью, Элон Маск представил некоммерческую компанию, которая предоставляет возможность подключения ИИ к любым играм и задачам с помощью дюжины строк кода. Посмотрите, как это работает.

Зачем следует использовать машинное обучение?

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

Во-вторых, если не влияете на мир, мир повлияет на вас. Компании инвестируют в ML, и эти инвестиции уже меняют мир. Лидеры мысли предупреждают, что нельзя позволить алгоритмам машинного обучения быть в тени. Представьте себе, если бы монополия из нескольких корпораций контролировала Интернет. Если мы не “возьмемся за оружие”, наука не будет нашей.

Christian Heilmann высказал правильную мысль в беседе о машинном обучении:

Хорошо, теперь я заинтересован…

Концепт полезный и веселый. Но что за дичь там в действительности творится? Как это работает? Если хочешь сразу погрузиться, советую пропустить раздел и перейти к следующему “С чего мне начать?”. Если вы уже мотивированы делать модели ML, эти видео не понадобятся.

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

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

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

Классический пример машинного обучения в действии — датасет прямиком из 1936-го года, называемый ирисами Фишера. На презентации эксперта JavaFX, посвященной машинному обучению, я узнал, как использовать этот инструмент, чтобы визуализировать прикрепление и обратное распространение весов к нейронам в нейронной сети. Понаблюдайте за тем, как тренируется нейронная сеть.

Обучение нейронной сети Ирисы

Готовы стать Эйнштейном новой эры? Прорывы происходят каждый день, поэтому начинайте сейчас.

С чего мне начать?

Доступных ресурсов много. Я рекомендую два подхода.

Основы

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

Если хочешь получить силу в этой сфере и вести серьезные обсуждения о ML, то этот путь для тебя. Советую пройти курс по искусственным нейронным сетям. Этот подход позволит вам изучать ML на вашем телефоне, убивая время, например, в очереди. Одновременной проходите курс о машинном обучении.

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

Гонщик

Если вы не заинтересованы в написании алгоритмов, но хотите использовать их для создания сайтов и приложений, то используйте TensorFlow и погрузитесь в crash course.

TensorFlow — это библиотека с открытым исходным кодом для машинного обучения. Ее можно использовать любым способом, даже с JavaScript. А вот crash source.

Услуги ML

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

Источник: https://neurohive.io/ru/osnovy-data-science/vvedenie-v-mashinnoe-obuchenie-kto-ego-primenjaet-i-kak-stat-razrabotchikom/

Машинное обучение: виды, алгоритмы, примеры

Машинное обучение стало настоящим прорывом и сейчас оказывает значительное влияние на жизнь человека и функционирование различных сфер промышленности и бизнеса.

Что представляет собой машинное обучение

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

Технология машинного обучения на основе анализа данных берёт начало в 1950-х гг., к

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

  • 3 примера применения машинного обучения, чтобы ускорить бизнес-процессы

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

Обучение продолжается и дальше, ведь все загруженные и проанализированные – и верно, и ошибочно – изображения попадают в ту же базу данных. Поэтому, чем больше данных обработано, тем «умнее» программа и всё более точно она решает поставленную задачу.

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

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

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

Более того, уже существует программное обеспечение, способное без участия человека писать новостные статьи (на тему экономики и, к примеру, спорта).

Источник: https://www.gd.ru/articles/9348-mashinnoe-obuchenie

Что такое машинное обучение?

По сути, это метод обучения компьютерам делать и улучшать прогнозы или поведение на основе некоторых данных. Что это за «данные»? Ну, это полностью зависит от проблемы. Это могут быть показания с датчиков робота, когда он учится ходить, или правильный вывод программы для определенного ввода.

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

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

И снова это зависит.

Один пример модифицируемого кода: Генетическое программирование, где вы, по сути, разрабатываете программу для выполнения задачи (конечно, программа не работает 't изменить себя, но он модифицирует другую компьютерную программу).

Нейронные сети, с другой стороны, автоматически изменяют свои параметры в ответ на подготовленные стимулы и ожидаемый ответ. Это позволяет им создавать множество моделей поведения (теоретически они могут производить любое поведение, потому что они могут приближать любую функцию к произвольной точности, учитывая достаточное время).

Следует отметить, что использование термина «база данных» означает, что алгоритмы машинного обучения работают путем «запоминания» информации, событий или событий. Это не обязательно (или даже часто!) Случай.

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

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

Представьте, что вы пытаетесь научить компьютер-драйверу перемещаться по дорогам в трафике. Используя метафору «базы данных», вы должны научить компьютер точно, что делать в миллионах возможных ситуаций.

Эффективный алгоритм машинного обучения (мы надеемся!) Сможет узнать сходство между разными состояниями и реагировать на них аналогичным образом.

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

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

С другой стороны, алгоритм машинного обучения «учился» на примере автомобиля и мог бы автоматически обобщать пример мотоцикла.

Источник: http://qaru.site/questions/77996/what-is-machine-learning

Как работает машинное обучение

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

Читайте также:  Что такое rfid: технология, скимминг, безопасность

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

Задача: отличить осмысленный текст от белиберды

Текст, который пишут настоящие люди, выглядит так:

Могу творить, могу и натворить!
У меня два недостатка: плохая память и что-то еще.
Никто не знает столько, сколько не знаю я.

Белиберда выглядит так:

ОРПорыав аоырОрпаыор ОрОРАыдцуцзущгкгеуб ыватьыивдцулвдлоадузцщ
Йцхяь длваополц ыадолцлопиолым бамдлотдламда.

Наша задача — разработать алгоритм машинного обучения, который бы отличал одно от другого. А поскольку мы говорим об этом применительно к антивирусной тематике, то будем называть осмысленный текст «чистым», а белиберду — «зловредной». Это не просто какой-то мысленный эксперимент, похожая задача на самом деле решается при анализе реальных файлов в реальном антивирусе.

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

Алгоритм

Наш алгоритм будет считать, как часто в нормальном тексте одна конкретная буква следует за другой конкретной буквой. И так для каждой пары букв. Например, для первой чистой фразы — «Могу творить, могу и натворить!» — распределение получится такое:

ат — 1 во — 2 гу — 2 ит — 2 мо — 2 на — 1 ог — 2 ор — 2 ри — 2 тв — 2

ть — 2

Что получилось: за буквой «в» следует буква «о» — два раза, а за буквой «а» следует буква «т» — один раз. Для простоты мы не учитываем знаки препинания и пробелы.

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

то — 8411 ст — 6591 на — 6236 го — 5639 ал — 5637 ра — 5273 не — 5199 по — 5174 ен — 4211 оу — 31 мб — 2

тж — 1

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

Отлично, «модель» русского языка у нас теперь есть, как же ее использовать? Чтобы определить, насколько вероятно исследуемая нами строка чистая или зловредная, посчитаем ее «правдоподобность». Мы будем брать каждую пару букв из этой строки, определять по «модели» ее частоту (по сути, реалистичность сочетания букв) и перемножать эти числа:

F(мо) * F(ог) * F(гу) * F(тв) * … =
2131 * 2943 * 474 * 1344 * … = правдоподобность

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

Использование модели

Теперь мы можем делать выводы: чем больше полученное число — тем правдоподобнее исследуемая строка ложится в нашу модель. Стало быть, тем больше вероятность, что ее писал человек, то есть она чистая.

Если же исследуемая строка содержит подозрительно большое количество крайне редких сочетаний букв (например, «ёё», «тж», «ъь» и так далее), то, скорее всего, она искусственная — зловредная.

Для строчек выше правдоподобность получилась следующая:

Могу творить, могу и натворить! — 1805 баллов
У меня два недостатка: плохая память и что-то еще. — 1535 баллов
Никто не знает столько, сколько не знаю я. — 2274 балла
ОРПорыав аоырОрпаыор ОрОРАыдцуцзущгкгеуб ыватьыивдцулвдлоадузцщ — 44 балла
Йцхяь длваополц ыадолцлопиолым бамдлотдламда — 149 баллов

Как видите, чистые строки правдоподобны на 1000–2000 баллов, а зловредные недотягивают и до 150. То есть все работает так, как задумано.

Чтобы не гадать, что такое «много», а что — «мало», лучше доверить определение порогового значения самой машине (пусть обучается).

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

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

В реальной жизни

Давайте осмыслим, что же у нас получилось.

1. Мы выделили признаки чистых строк, а именно пары символов.

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

Понять, что же на самом деле важно, — это все еще задача человека. Например, кто сказал, что надо использовать пары символов, а не тройки? Такие гипотезы как раз и проверяют в антивирусной лаборатории.

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

2. На основании выделенных признаков мы построили математическую модель и обучили ее на примерах.

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

3. На основе математической модели мы посчитали рейтинг «правдоподобности».

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

Альтернатива машинному обучению

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

ОРПорыав аоырОрпаыор ОрОРАыдцуцзущгкгеуб ыватьыивдцулвдлоадузцщ

Йцхяь длваополц ыадолцлопиолым бамдлотдламда

Антивирус сканирует файл, если встретил «зущгкгеу«, говорит: «Ну понятно, это белиберда номер 17». А если найдет «длотдламд» — то «белиберда номер 139».

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

  1. Длина слов от 1 до 20 символов.
  2. Заглавные буквы очень редко встречаются посередине слова, цифры тоже.
  3. Гласные обычно более-менее равномерно перемежаются с согласными.
  4. И так далее. Если много критериев нарушено — детектируем эту строку как зловредную.

По существу, это примерно то же самое, только вместо математической модели в этом случае набор правил, которые аналитик должен вручную написать. Это хорошо работает, но требует времени.

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

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

Недостатки

Преимущества понятны, но неужели это серебряная пуля, спросите вы. Не совсем. Этот метод хорошо справляется, если описанный выше алгоритм будет работать в облаке или в инфраструктуре, постоянно обучаясь на огромных количествах как чистых, так и вредоносных объектов.

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

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

Другое дело, когда кто-то пытается радикально сэкономить и использовать только математическую модель и только на стороне продукта, прямо у клиента. Тогда могут начаться трудности.

1. Ложные срабатывания.

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

В случае машинного обучения они будут возникать в непредсказуемых и зачастую труднообъяснимых местах. Например, эта чистая строка — «Мцыри и Мкртчян» — распознается как неправдоподобная: 145 баллов в модели из нашего примера.

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

2. Обход модели.

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

Например, следующая строка считается чистой (1200 баллов), хотя ее первая половина явно вредоносная: «лоыралоыврачигшуралорыловарДобавляем в конец много осмысленного текста, чтобы обмануть машину».

Какой бы умный алгоритм ни использовался, его всегда может обойти человек (достаточно умный). Поэтому антивирусная лаборатория обязана иметь продвинутую инфраструктуру для быстрой реакции на новые угрозы.

Один из примеров обхода описанного нами выше метода: все слова выглядят правдоподобно, но на самом деле это бессмыслица. Источник

3. Обновление модели.

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

А вредоносные файлы, с учетом креативности злоумышленников (смотри предыдущий пункт), — это как будто постепенно эволюционирующий алфавит. Ландшафт угроз меняется довольно быстро.

Мы за долгие годы исследований выработали оптимальный подход к постепенному обновлению модели прямо в антивирусных базах. Это позволяет дообучать и даже полностью переобучать модель «без отрыва от производства».

Заключение

Итак.

  1. Мы рассмотрели реальную задачу.
  2. Разработали реальный алгоритм машинного обучения для ее решения.
  3. Провели параллели с антивирусной индустрией.
  4. Рассмотрели с примерами достоинства и недостатки такого подхода.

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

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

Источник: https://www.kaspersky.ru/blog/machine-learning-explained/13605/

Что такое машинное обучение, и для чего это нужно?

Человечеству сегодня все чаще приходится сталкиваться с необходимостью обработки и анализа огромных объемов данных, что невозможно с использованием традиционных подходов. И в этом нам помогает машинное обучение.

Что такое машинное обучение?

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

Иными словами, это создание и использование компьютерных систем, способных не просто обрабатывать информацию, но становиться все более «опытными» благодаря получению новых данных в процессе эксплуатации.

И чем дольше используется система МО, тем выше качество ее работы.

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

В первом случае система просто получает готовый набор начальных критериев, на основе которых впоследствии делает собственные выводы.

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

Проанализировав миллионы различных случаев, можно найти зависимости, которые ускользнули бы от человеческого взгляда.

Так, анализ активности посетителей интернет-магазина, торгующего ПО, может показать, например, что владельцы компьютеров с Windows 7 и браузером Firefox чаще приобретают некое определенное приложение.

Но на это приложение почти не обращают внимания пользователи Windows 8 с браузером Chrome. Налицо закономерность, которой можно воспользоваться в рекламных целях.

При этом следует помнить, что закономерности способны изменяться со временем. И однажды полученные данные могут быть неверны уже через год. Тут все зависит от объекта изучения. Так, если дело касается физических законов, то изменений ждать не приходится. А покупательские интересы нередко меняются несколько раз в течение одного года.

Примеры использования МО

Сегодня МО активно применяется в самых разных сферах человеческой деятельности. Это многочисленные системы для распознавания лиц, поисковые системы, машинный перевод, рекомендательные системы и многое другое. Ну и, конечно же, очень заинтересованы в развитии МО военные.

Тут следует отметить, что несмотря на использование новейших достижений и сложнейших знаний МО применяется чаще всего для решения самых обыденных (но от того не менее важных) задач.

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

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

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

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

Кстати, все мы встречаемся с МО ежедневно, подчас десятки раз. Самый типичный пример — спам-фильтры, которые «обучены» перехватывать неблагонадежные письма.

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

Жалобы от пользователей на тонны спама сегодня раздаются гораздо реже.

Источник: http://datareview.info/article/chto-takoe-mashinnoe-obuchenie-i-dlya-chego-eto-nuzhno/

Машинное обучение. Как это работает?

Доклад был представлен Алексеем Воропаевым, руководителем группы ранжирования Поиска Mail.ru, на Четвертом Форуме Технологий Mail.Ru Group, который прошел 17 октября 2012 года в московском выставочном центре ИнфоПространство и был посвящен теме веб-технологий.

Читайте также:  Обзор lenovo watch 9 - характеристики, дизайн, функциональность

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

И в связи с этим возникает одна интересная проблема: большинству людей об этом известно, но известно ровно столько, сколько содержит в себе высказывание Джона Хеннесси (John Hennessy), президента Стэнфордского университета – «Машинное обучение – это новая популярная тема». О том, что это какая-то новая популярная тема – известно практически всем, а больше никто о ней ничего не знает.

Прежде, чем говорить о том, что такое машинное обучение (без каких-то деталей, без страшных математических формул), прежде, чем говорить об алгоритмах, нужно понять, зачем это нужно. Зачем нам нужно машинное обучение?

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

Когда эти знания находятся в голове разработчика, тогда никаких проблем – он садится и пишет код. Но бывает, что эти знания находятся в голове другого человека. И этот человек может объяснить разработчику, что у него в голове, а может и не рассказать всего, что знает. Ярким примером является создание поисковой формулы ранжирования.

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

Есть очень много всяких разных определений машинного обучения. Большинство из них звучат, как масло масляное, вроде: «машинное обучение – это машины, которые способны обучаться».

Однако лучшим определением машинного обучения является это: «Построение абстракций по множеству наблюдений». Это и есть как раз та бизнес-логика, которая лежит в голове у человека. Какие абстракции? Это все очень зависит о того, что конкретно разрабатывается.

И в общем случае абстракций примерно столько же, сколько и в изобразительном искусстве:

Первая абстракция, с которой можно начать – это абстракция черного ящика. Ярким примером такой абстракции является голова Гомера Симпсона.

То есть, эта голова может посмотреть на картинку и сказать, что на ней изображена цифра три. Но при этом никто, даже самый крутой ученый в мире не сможет до конца объяснить, как Гомер это делает.

Поэтому голова Гомера становится черным ящиком, ибо известно только, что приходит на вход и что приходит на выход.

Допустим, нужно создать некоторую модель компьютера, которая распознает эти буквы и взламывает капчи. Что нужно для этого сделать? Нужно оцифровать входные данные. В случае с изображениями это сделать достаточно легко — просто разным цветам нужно назначить разные числа и записать этот объект в виде длинного вектора. Получится некоторое векторное представление этого объекта:

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

Это значит, что один и тот же элемент вектора должен обозначать одно и то же для всех объектов.

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

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

Как это работает? Какие есть алгоритмы? Первый алгоритм, с которого нужно начать – наиболее известный на сегодняшний день и самый старый. Родился этот алгоритм из изучения биологии и называется он нейронные сети. Это на самом деле целый класс алгоритмов.

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

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

Сеть, в свою очередь, состоит из слоев. В каждом слое нейроны друг с другом не взаимодействуют, они полностью независимы.

Но зато каждый нейрон каждого слоя принимает сигнал от всех абсолютно нейронов предыдущего слоя и передает этот сигнал всем из следующего слоя.

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

Как это работает? Вернемся к старой задаче – распознать изображение, смоделировать Симпсона. Есть оцифрованная картинка, и есть первый слой нейронной сети.

Задача первого слоя – перераспределение информации на следующий слой, без какой-либо обработки. Соответственно, каждый входной нейрон соответствует какому-то пикселю на изображении.

Очевидно, что количество нейронов в нашем случае равно количеству элементов в векторе.

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

Так делают все нейроны входного слоя, и получается такая связь: все нейроны со всеми. После того, как информация приходит в нейрон выходного слоя, она там суммируется, и на выходе этого нейрона мы получаем некоторую вероятность того, что картинка принадлежит к данному классу картинок.

Первый нейрон отвечает за распознавание цифры «один», второй нейрон за распознавание цифры «два» и так далее.

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

Для тех пикселей, которые характерны для данного изображения, для цифры три – там будут положительные значения. Те синапсы, которые не соответствуют пикселям изображения, например, пиксели слева, обычно у цирф «три» они выключены – там будут отрицательные изображения. И появление какого-то сигнала будет говорить о том, что это не цифра три.

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

Получается такой итеративный процесс, который повторяется несколько раз и, в конце концов, сеть начинает это неплохо распознавать.

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

Допустим, есть некоторый текст. В этом тексте есть некоторый потенциальный делитель — точка. Это очень важно, потому что это помогает строить хорошие сниппеты. Но реальный интернет очень далек от литературного русского языка. Есть очень много кейсов, когда точка не является точкой.

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

Также проверяется, есть ли большая буква справа.

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

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

Если признак 20 не сработал – нужно идти налево, если сработал –направо. После того, как выбрано лево или право, там может быть проверка какого-то нового условия.

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

Но тут возникает проблема – у дерева ограниченное количество листов. И в результате, если используется только одно дерево, получается такая грубая ступенчатая функция, дающая совершенно недостаточное качество. Как можно это преодолеть?

Первый способ – увеличивать глубину дерева. В этом случае цепочки дерева становятся все длиннее и длиннее.

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

В итоге, по мере того, как дерево растет — и качество возрастает, но потом оно начинает деградировать и останавливается на каком-то недостаточном для решения задачи уровне.

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

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

И получается достаточно гладкое решение.

Следующий алгоритм, также заслуживающий рассмотрения, называется наивный Байес. Томас Байес (Thomas Bayes) – это был такой священник в 18 веке, поставивший целью своей жизни доказать существование Бога при помощи математики. Существование Бога он не доказал, зато придумал вот такую теорему Байеса:

Предположим, что есть некоторый объект. У этого объекта есть некоторые признаки, обозначенные буквой F. Нужно выяснить, какова вероятность принадлежности этого объекта к некоторому классу, который обозначен буквой C.

О чем говорит эта теорема? Вероятность того, что этот объект принадлежит классу С, при заданном наборе свойств F, — фактически равна вероятности встретить такой набор свойств F в некотором классе С.

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

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

И тут делается предположение — из-за этого алгоритм и получил свое название – что все эти свойства независимы.

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

А именно — эта вероятность попросту равна произведению вероятности встретить каждое слово в этом конкретном наборе. Т.е.

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

Алгоритм работает, но недостаточно хорошо. Для его улучшения используется технология Deep learning. Берется вероятность, которая не очень хорошо работает, к ней добавляются какие-то признаки и отгружаются в дерево. Результат получается замечательный. Детектор порнографии в поиске Mail.ru вполне сравним с детектором порнографии других ведущих поисковиков.

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

Допустим, таким способом были определены две характеристики, которые описывают пользователя.

Согласно этим характеристикам, пользователи разделились на две группы: одна группа – это нормальные люди, а другая группа – наглые спамеры, которые портят всем жизнь.

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

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

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

Но есть одна проблема. Мы предположили, что есть три вида пользователей, а их по факту два. И вот эти два кластера, два спамера – они описывают одну и ту же группу.

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

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

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

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

Отличие в том, что туда также подтягиваются и назначенные соседи, то есть, двигаются уже не один, а несколько центроидов:

Этот алгоритм используется, например, в исследовании пользователей поиска. Так, были собраны определенные характеристики на какое-то количество пользователей (на рисунке каждый кругляшок – это кластер, они объединены в двухмерную сетку, а цвет кругляшка показывает количество людей, которое туда попало).

Источник: https://www.searchengines.ru/mashinnoe_obuch.html

Ссылка на основную публикацию