машинное обучение что делает

Машинное обучение — это легко

Для кого эта статья?

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

машинное обучение что делает

В цифрах

С каждым годом растёт потребность в изучении больших данных как для компаний, так и для активных энтузиастов. В таких крупных компаниях, как Яндекс или Google, всё чаще используются такие инструменты для изучения данных, как язык программирования R, или библиотеки для Python (в этой статье я привожу примеры, написанные под Python 3). Согласно Закону Мура (а на картинке — и он сам), количество транзисторов на интегральной схеме удваивается каждые 24 месяца. Это значит, что с каждым годом производительность наших компьютеров растёт, а значит и ранее недоступные границы познания снова «смещаются вправо» — открывается простор для изучения больших данных, с чем и связано в первую очередь создание «науки о больших данных», изучение которого в основном стало возможным благодаря применению ранее описанных алгоритмов машинного обучения, проверить которые стало возможным лишь спустя полвека. Кто знает, может быть уже через несколько лет мы сможем в абсолютной точности описывать различные формы движения жидкости, например.

Анализ данных — это просто?

Да. А так же интересно. Наряду с особенной важностью для всего человечества изучать большие данные стоит относительная простота в самостоятельном их изучении и применении полученного «ответа» (от энтузиаста к энтузиастам). Для решения задачи классификации сегодня имеется огромное количество ресурсов; опуская большинство из них, можно воспользоваться средствами библиотеки Scikit-learn (SKlearn). Создаём свою первую обучаемую машину:

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

— Если все так просто, почему до сих пор не каждый предсказывает, например, цены на валюту?

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

Ближе к делу

— Получается, зарабатывать на этом деле я не сразу смогу?

Итак, сегодня нам потребуются:

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

Как обычно, импортируем необходимые для работы библиотеки:

— Ладно, с Numpy всё понятно. Но зачем нам Pandas, да и еще read_csv?

Иногда бывает удобно «визуализировать» имеющиеся данные, тогда с ними становится проще работать. Тем более, большинство датасетов с популярного сервиса Kaggle собрано пользователями в формате CSV.

— Помнится, ты использовал слово «датасет». Так что же это такое?

Датасет — выборка данных, обычно в формате «множество из множеств признаков» → «некоторые значения» (которыми могут быть, например, цены на жильё, или порядковый номер множества некоторых классов), где X — множество признаков, а y — те самые некоторые значения. Определять, например, правильные индексы для множества классов — задача классификации, а искать целевые значения (такие как цена, или расстояния до объектов) — задача ранжирования. Подробнее о видах машинного обучения можно прочесть в статьях и публикациях, ссылки на которые, как и обещал, будут в конце статьи.

Знакомимся с данными

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

Работая в Jupyter notebook, получаем такой ответ:

машинное обучение что делает

Это значит, что теперь нам доступны данные для анализа. В первом столбце значения Grade показывают, к какому сорту относится вино, а остальные столбцы — признаки, по которым их можно различать. Попробуйте ввести вместо data.head() просто data — теперь для просмотра вам доступна не только «верхняя часть» датасета.

Простая реализация задачи на классификацию

Переходим к основной части статьи — решаем задачу классификации. Всё по порядку:

Создаем массивы, где X — признаки (с 1 по 13 колонки), y — классы (0ая колонка). Затем, чтобы собрать тестовую и обучающую выборку из исходных данных, воспользуемся удобной функцией кросс-валидации train_test_split, реализованной в scikit-learn. С готовыми выборками работаем дальше — импортируем RandomForestClassifier из ensemble в sklearn. Этот класс содержит в себе все необходимые для обучения и тестирования машины методы и функции. Присваиваем переменной clf (classifier) класс RandomForestClassifier, затем вызовом функции fit() обучаем машину из класса clf, где X_train — признаки категорий y_train. Теперь можно использовать встроенную в класс метрику score, чтобы определить точность предсказанных для X_test категорий по истинным значениям этих категорий y_test. При использовании данной метрики выводится значение точности от 0 до 1, где 1 100% Готово!

— Неплохая точность. Всегда ли так получается?

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

— Слишком легко. Больше мяса!

Для наглядного просмотра результата обучения на данном датасете можно привести такой пример: оставив только два параметра, чтобы задать их в двумерном пространстве, построим график обученной выборки (получится примерно такой график, он зависит от обучения):

машинное обучение что делает

Да, с уменьшением количества признаков, падает и точность распознавания. И график получился не особенно-то красивым, но это и не решающее в простом анализе: вполне наглядно видно, как машина выделила обучающую выборку (точки) и сравнила её с предсказанными (заливка) значениями.

Предлагаю читателю самостоятельно узнать почему и как он работает.

Последнее слово

Надеюсь, данная статья помогла хоть чуть-чуть освоиться Вам в разработке простого машинного обучения на Python. Этих знаний будет достаточно, чтобы продолжить интенсивный курс по дальнейшему изучению BigData+Machine Learning. Главное, переходить от простого к углубленному постепенно. А вот полезные ресурсы и статьи, как и обещал:

Материалы, вдохновившие автора на создание данной статьи

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

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

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

Источник

Машинное обучение

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

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

Компания IBM внесла немалый вклад в историю машинного обучения. Так, ввод в обиход термина «машинное обучение» приписывают одному из сотрудников компании, Артуру Самюэлю в его исследовании (PDF, 481 КБ) (внешняя ссылка) игры в шашки. В 1962 году самопровозглашенный мастер по шашкам Роберт Нили сыграл партию с компьютером IBM 7094 и проиграл. По сравнению с современными возможностями это достижение кажется сущим пустяком, но оно считается важной вехой в области искусственного интеллекта. В следующие пару десятилетий технологии в области хранения данных и вычислительные мощности достигнут такого уровня, что будут созданы революционные в то время (но привычные и любимые сегодня) продукты, например система рекомендаций Netflix или беспилотные автомобили.

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

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

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

Разница между глубоким и машинным обучением заключается в способе обучения алгоритмов. В глубоком обучении большая часть процесса извлечения признаков автоматизирована, что практически исключает необходимость контроля со стороны человека и позволяет использовать большие наборы данных. Лекс Фридман в своей лекции в Массачусетском технологическом институте (00:30) (внешняя ссылка) называет глубокое обучение «масштабируемым машинным обучением». Эффективность классического, «неглубокого» машинного обучения в большей степени зависит от контроля со стороны человека. Набор признаков для понимания разницы между входными данными определяется специалистом-человеком. Обычно для машинного обучения требуются более структурированные данные.

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

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

Для того чтобы подробней ознакомиться с разными концепциями, обратитесь к публикации «AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: What’s the Difference?»

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

Согласно UC Berkeley (внешняя ссылка), система обучения алгоритма машинного обучения состоит из трех основных частей.

Методы машинного обучения

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

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

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

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

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

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

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

Для более подробного знакомства с различиями между этими подходами, обратитесь к веб-станице «Контролируемое и неконтролируемое обучение: в чем разница?»

Машинное обучение с подкреплением

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

Хороший пример тому — система IBM Watson®, которая в 2011 году стала победителем в игре Jeopardy!. Система использовала обучение с подкреплением для принятия решений о том, стоит ли пытаться дать ответ (или задать вопрос), какой квадрат выбрать на доске и какую сделать ставку — особенно в случае двойных ставок.

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

Вот лишь несколько примеров применения машинного обучения в повседневной жизни:

Распознавание речи: технология, использующая обработку естественного языка (NLP) для записи человеческой речи в виде текста. Также называется «автоматическое распознавание речи» (ASR), «компьютерное распознавание речи» или «преобразование речи в текст». Во многих мобильных устройствах распознавание речи встроено в системы голосового поиска (например, Siri) или программы для переписки.

Обслуживание клиентов: практически повсеместно операторов-людей заменяют на онлайн-чатботов. Они способны ответить на частые вопросы (FAQ) по определенной тематике, например по доставке, или дать персонализированный совет, предложить сопутствующие товары или помочь подобрать размер одежды или обуви. Чатботы полностью перевернули наши представления о взаимодействии с клиентами на сайтах и в социальных сетях. В качестве примеров можно привести виртуальных помощников на сайтах интернет-магазинов, приложения для обмена сообщениями типа Slack и Facebook Messenger, а также задачи, которые обычно выполняют виртуальные и голосовые помощники.

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

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

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

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

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

Технологическая сингулярность

Несмотря на то, что эта тема активно будоражит умы населения, многие исследователи не видят реальных оснований тому, что уже в ближайшем будущем ИИ станет умнее человека. Это явление иногда называют «сверхразумом», что Ник Бустрём определяет как «интеллект, который многократно превосходит самых выдающихся людей в умственном развитии практически в каждой области: в научно-технической деятельности, житейской мудрости и развитии социальных навыков». Несмотря на то, что появление Сильного ИИ и сверхразума обществу не грозит, эта идея породила ряд интересных вопросов, связанных с использованием автономных систем типа беспилотных автомобилей. Считать, что беспилотные автомобили никогда не попадут в ДТП — утопия, поэтому встает вопрос: кто будет нести ответственность в таких ситуациях? Должны ли мы по-прежнему стремиться к созданию полностью автономных автомобилей, или все же стоит ограничиться интеграцией этой технологии, оставив транспортные средства полуавтономными и отдав безопасность на поруки водителю? Единого ответа на эти вопросы до сих пор нет, но чем стремительнее развиваются инновационные технологии ИИ, тем чаще возникают этические дискуссии такого толка.

Влияние ИИ на рынок труда

Сейчас очень многие опасаются, что искусственный интеллект вытеснит их с рабочих мест, но, возможно, пришло время пересмотреть эти убеждения. Мы видим, что каждая революционная технология порождает сдвиг рыночного спроса в сторону той или иной категории специалистов. Например, если посмотреть на автомобильную промышленность, то многие крупные производители типа GM сейчас переключаются на производство электромобилей, чтобы идти в ногу с экологическими инициативами. Энергетическая отрасль никуда не девается, но теперь она больше нацелена на производство электроэнергии, чем топлива. То же самое касается и искусственного интеллекта: на рынке неизбежно появится спрос на специалистов в других областях. Например, в цене будут люди, способные управлять этими системами в условиях ежедневного роста объемов данных и стремительных перемен. Также ничто не заменит людей при решении более сложных, нестандартных проблем в тех сферах, которых, скорее всего, коснется переквалификация, например обслуживание клиентов. Важным аспектом ИИ и его влияния ИИ на рынок труда будет содействие людям при переходе в эти новые области рыночного спроса.

Конфиденциальность

Как правило, тема конфиденциальности обсуждается в контексте конфиденциальности данных, их защиты и безопасности, и в последние годы регулирующие органы немалого достигли на этом поприще. Так, в 2016 году был разработан закон GDPR, обеспечивающий защиту персональной информации людей в странах Европейского Союза и Европейской экономической зоны. Благодаря этому закону люди получили больше контроля над своими данными. Отдельные штаты США разрабатывают свои правила, например Закон Калифорнии о защите конфиденциальности потребителей (CCPA), требующий от предприятий информировать потребителей о сборе их данных. Этот новый закон заставил компании пересмотреть свои способы хранения и использования персональных данных (PII). Все это привело к тому, что предприятия стали больше вкладывать в безопасность, стремясь устранить все возможные уязвимости и возможности слежки, взлома и кибератак.

Предвзятость и дискриминация

Случаи проявления предвзятости и дискриминации при использовании некоторых ИИ-систем подняли ряд этических вопросов, связанных с использованием искусственного интеллекта. Как защититься от предвзятости и дискриминации, если сами учебные данные могут быть предвзятыми? Хотя обычно компании реализуют автоматизацию с самыми благими намерениями, агентство Reuters (внешняя ссылка) рассказывает о нескольких непредвиденных последствиях внедрения ИИ в процессы найма сотрудников. Так, стремясь автоматизировать и упростить процесс найма, компания Amazon неумышленно фильтровала потенциальных соискателей технических должностей по половому признаку. В конечном счете компании пришлось свернуть проект автоматизации. В свете таких событий Harvard Business Review (внешняя ссылка) поднимает и другие, не менее острые вопросы, касающиеся использования ИИ в процессах трудоустройства. Например, какие данные должно быть разрешено использовать для оценки соискателя должности?

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

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

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

Ответственность

За отсутствием мало-мальски значимых законов, регулирующих разработки в области ИИ и его использование, нет и реального механизма обеспечения этичности ИИ. Сейчас организации стараются соблюдать эти нормы главным образом потому, что неэтичное использование ИИ в итоге отрицательно сказывается на прибыли. Для заполнения этого пробела специалисты по этике и исследователи совместно выработали нравственные нормы, регулирующие создание ИИ-моделей и их распространение в обществе. Но пока они носят только рекомендательный характер, и исследование (внешняя ссылка) (PDF, 984 КБ) показывает, что разобщенная ответственность вкупе с недальновидностью и неспособностью предусмотреть возможные последствия — не очень хороший план по предотвращению ущерба обществу.

Более подробно о позиции IBM в отношении этики использования ИИ можно узнать здесь.

Машинное обучение и IBM Cloud

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

IBM Watson Machine Learning в составе IBM Cloud Pak for Data помогает специалистам по ИИ и данным ускорить разработку и упростить развертывание ИИ на основе облачной платформы данных и ИИ. IBM Watson Machine Learning Cloud, управляемая услуга в среде IBM Cloud, предлагает самый быстрый способ перехода от экспериментальных моделей к производственному использованию. Для небольших команд, которым требуется масштабировать среды машинного обучения, IBM Watson Machine Learning Server предлагает простую установку в любом частном или общедоступном облаке.

Для того чтобы приступить к работе, зарегистрируйтесь для получения IBMid и создайте учетную запись IBM Cloud.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *