Или как подготовиться к апокалипсису машинного обучения

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

Какое тебе дело?

Нравится нам это или нет, но однажды машины будут влиять на все, что мы делаем: от самоуправляемых автомобилей до медицины. Чтобы полностью понять, что происходит вокруг вас, жизненно важно знать основы того, как все работает. Если мы вернемся к беспилотным автомобилям, например, знание того, как программа ищет трафик, знает, когда остановиться и регулирует скорость, может помочь вам чувствовать себя более комфортно при ее использовании. То же самое и с медициной! Я лично думаю, что однажды мы сможем использовать машинное обучение, чтобы помочь врачам более точно диагностировать болезни. Знание того, как работает основной алгоритм, поможет вам доверять результатам машины.

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

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

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

Контролируемое обучение

Допустим, вам даны числа 180, 360, 540 и 720, и вам говорят, что эти числа представляют собой сумму внутренних углов треугольника, четырехугольника, пятиугольника и шестиугольника соответственно. Вам говорят, что вы должны найти уравнение, связывающее количество сторон фигуры с суммой ее внутренних углов. Придумать уравнение и проверить, работает ли оно, используя заданные данные, почти точно так же работает контролируемое обучение! Сначала вы даете своей модели набор данных с входными и выходными данными, после чего она пытается найти алгоритм, который лучше всего связывает числа. Чтобы проверить точность уравнения, мы используем функцию потерь; другими словами, мы смотрим, насколько далеки прогнозируемые результаты от результатов набора данных.

Классификация

Классификация – это особый вид контролируемого обучения. При использовании классификации вы просите компьютер «посмотреть» на ввод и отсортировать его в ранее существовавшую группу на основе некоторых имеющихся у него факторов. Например, вы можете дать компьютеру набор данных с изображениями собак и кошек, где каждое изображение собаки помечено как собака, а каждое изображение кошки помечено как кошка. Затем компьютер пытается выяснить сходство между изображениями собак и делает то же самое с изображениями кошек. Находя эти сходства, компьютер строит алгоритм; который проверяется путем предоставления компьютеру нового набора данных, в данном случае это изображения. Он не проверяет, является ли изображение собакой или кошкой, пока не будут обработаны все входные изображения. Наконец, он смотрит, сколько изображений он классифицировал неправильно. Если это большое число (относительно количества входных данных), то используемый алгоритм следует настроить и повторно протестировать. Когда вы, наконец, достигнете небольшого количества ошибок (или даже полного их отсутствия), ваш алгоритм будет готов к использованию с различными наборами данных!

Примеры: reCATPCHA

Регрессия

Регрессия — это еще одна модель, в которой используются идеи обучения с учителем. Если вы помните, что во время алгебры выполняли уравнения типа y=mx+b, вы увидите, что это очень похоже на это! Алгоритмы регрессии ищут взаимосвязь между входными и выходными данными, которую можно записать в виде уравнения и изобразить в виде графика. Для этого компьютер возьмет все входные, выходные и другие заданные переменные, а затем попытается создать уравнение, которое лучше всего представляет точки данных. Важно убедиться, что ваше уравнение не переобучено, чтобы хорошо работать только с данными, используемыми для обучения алгоритма; он не будет полезен, если он хорошо работает только для определенных входных данных.

Примеры: расчет цены дома на основе домов по соседству.

Прогнозирование временных рядов

Слово прогнозирование означает предсказывать будущее. Точно так же прогнозирование временных рядов — это алгоритм, который позволяет вам предсказать, как что-то будет выглядеть в будущем. Один важный аспект, который отличает прогнозирование от регрессии и классификации, заключается в том, что в качестве фактора используется время. Данные, которые вы передаете машине, в конечном итоге будут отслеживать ход выполнения чего-либо в течение определенного периода времени. Лучший тому пример – погода! Вы можете создать модель прогнозирования, в которой входными данными является средняя дневная температура за последние 3 месяца, и заставить компьютер использовать эту информацию для прогнозирования температуры на следующей неделе или около того. Есть, конечно, и другие переменные, влияющие на температуру, которые можно добавить (влажность, время года, атмосферное давление и т. д.), но в целом модель работает именно так.

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

Неконтролируемое обучение

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

Кластеризация

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

Примеры: когда вы не знаете, как сортировать данные (это особый вид кластеризации, называемый кластеризацией k-средних, о которой вы можете узнать больше здесь),

Ассоциация

Вас раздражает Amazon, когда они показывают «Люди, которые просматривали этот товар, также купили это!»? Или вы довольны этим, потому что он дает вам то, что вы хотите/наслаждаетесь, без необходимости искать это? В любом случае, это все из-за ассоциации: типа обучения без учителя, когда вы находите сходство между переменными в наборе данных. Он делает это, спрашивая себя: «Если человек посмотрел на эту вещь, смотрел ли он и на эту другую вещь?». Выполнение этого для всех данных помогает компьютеру разработать правила, которые впоследствии могут быть использованы человеком, чтобы помочь в таких вещах, как маркетинг продукта.

Примеры: лучше понять покупательские привычки клиентов.

Уменьшение размера

Dimension Reduction немного отличается от всех других алгоритмов, которые мы рассматривали до сих пор, потому что его основная цель — уменьшить размер ваших данных. Иногда наборы данных оказываются слишком большими со слишком большим количеством функций или характеристик. Это облегчает переоснащение модели (когда модель работает очень хорошо, но только для заданных данных) и затрудняет визуализацию. Чтобы решить эту проблему, вы можете использовать уменьшение размеров вашего набора данных на его стороне. Лучшая часть уменьшения размера заключается в том, что ваши данные по-прежнему будут точными и полезными, даже с уменьшенными баллами. Два основных способа сделать это — найти похожие функции и избавиться от них, в то время как другой находит совершенно новый набор функций, на которые стоит обратить внимание.

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

Полуконтролируемое обучение

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

Примеры: когда/если трудно получить данные и метки для данных

Обучение с подкреплением

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

Примеры: Pac-Man (Pac-man должен есть наггетсы и вишни, что является положительным подкреплением, и избегать призраков, что является отрицательным подкреплением) и AlphaGo Zero.

Надеюсь, теперь у вас есть лучшее представление о том, как работает машинное обучение, и о его различных типах и вкусах! Если у вас есть какие-либо вопросы, вы можете отправить мне электронное письмо на anjinikatari atgmail.com, или написать мне через instagram (@adragonjini) или LinkedIn!