Что такое машинное обучение? Разведка, полученная из данных

Определение машинного обучения

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

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

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

Приложения машинного обучения

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

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

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

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

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

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

Алгоритмы машинного обучения

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

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

Алгоритмы классификации

Проблема классификации - это проблема контролируемого обучения, которая требует выбора между двумя или более классами, обычно предоставляя вероятности для каждого класса. За исключением нейронных сетей и глубокого обучения, которые требуют гораздо более высокого уровня вычислительных ресурсов, наиболее распространенными алгоритмами являются наивный байесовский алгоритм, дерево решений, логистическая регрессия, K-ближайших соседей и машина опорных векторов (SVM). Вы также можете использовать методы ансамбля (комбинации моделей), такие как Random Forest, другие методы Bagging и методы повышения, такие как AdaBoost и XGBoost.

Алгоритмы регрессии

Проблема регрессии - это проблема контролируемого обучения, которая требует от модели предсказать число. Самый простой и быстрый алгоритм - это линейная регрессия (методом наименьших квадратов), но вы не должны останавливаться на достигнутом, потому что он часто дает посредственный результат. Другие распространенные алгоритмы регрессии машинного обучения (за исключением нейронных сетей) включают Naive Bayes, Decision Tree, K-Nearest Neighbours, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost и XGBoost. Вы заметите, что алгоритмы машинного обучения для регрессии и классификации частично пересекаются.

Алгоритмы кластеризации

Проблема кластеризации - это проблема неконтролируемого обучения, которая просит модель найти группы похожих точек данных. Самый популярный алгоритм - кластеризация K-средних; другие включают кластеризацию со средним сдвигом, DBSCAN (пространственная кластеризация приложений с шумом на основе плотности), GMM (модели гауссовой смеси) и HAC (иерархическая агломеративная кластеризация).

Алгоритмы уменьшения размерности

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

Методы оптимизации

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

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

Нейронные сети и глубокое обучение

Нейронные сети были вдохновлены архитектурой биологической зрительной коры. Глубокое обучение - это набор методов обучения в нейронных сетях, который включает в себя большое количество «скрытых» слоев для идентификации функций. Скрытые слои располагаются между входным и выходным слоями. Каждый слой состоит из искусственных нейронов, часто с функцией активации сигмовидной или ReLU (выпрямленной линейной единицы).

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

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

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

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

Прорывом в области нейронных сетей для зрения стала LeNet-5 1998 года Яна Лекуна, семиуровневая сверточная нейронная сеть (CNN) для распознавания рукописных цифр, оцифрованных в изображениях 32x32 пикселей. Для анализа изображений с более высоким разрешением сети потребуется больше нейронов и больше слоев.

Сверточные нейронные сети обычно используют сверточные, объединяющие, ReLU, полностью связанные слои и слои потерь для имитации зрительной коры. Сверточный слой в основном принимает интегралы многих небольших перекрывающихся областей. Слой объединения выполняет форму нелинейной понижающей дискретизации. Слои ReLU, о которых я упоминал ранее, применяют ненасыщающую функцию активации f(x) = max(0,x).

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

Обработка естественного языка (NLP) - еще одна важная область применения глубокого обучения. В дополнение к проблеме машинного перевода, которую решает Google Translate, основные задачи НЛП включают автоматическое обобщение, разрешение сопутствующих ссылок, анализ дискурса, морфологическую сегментацию, распознавание именованных сущностей, генерацию естественного языка, понимание естественного языка, тегирование части речи, тональность. анализ и распознавание речи.

В дополнение к CNN, задачи NLP часто решаются с помощью рекуррентных нейронных сетей (RNN), которые включают модель Long-Short Term Memory (LSTM).

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

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

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

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

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

Как использовать машинное обучение

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

Очистка данных для машинного обучения

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

  1. Просмотрите данные и исключите все столбцы, в которых много данных отсутствует.
  2. Посмотрите на данные еще раз и выберите столбцы, которые вы хотите использовать ( выбор функций ) для своего прогноза. Это то, что вы можете изменить при повторении.
  3. Исключите из оставшихся столбцов все строки, в которых все еще отсутствуют данные.
  4. Исправляйте очевидные опечатки и объединяйте эквивалентные ответы. Например, США, США, США и Америка следует объединить в одну категорию.
  5. Исключите строки с данными, выходящими за пределы допустимого диапазона. Например, если вы анализируете поездки на такси в пределах Нью-Йорка, вам нужно отфильтровать строки с широтой и долготой посадки или высадки, которые выходят за пределы границы мегаполиса.

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

Кодирование и нормализация данных для машинного обучения

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

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