Я рос в 90-х, когда у меня появился телевизор и начал проявляться интерес к научной фантастике, и я, естественно, столкнулся с технологическими подвигами, которые никогда не думал, что увижу в своей жизни. Будь то видео телефонных звонков с "Mars Attacks!" или доски для наведения из Назад в будущее, я всегда думал про себя… это было бы хорошо… но этого никогда не произойдет!. И все же ... вот я сижу в кафе в 2019 году со смартфоном, который может делать гораздо больше, чем видеозвонки, и со знанием, что Lexus разработал настоящую летающую доску. Но из всех технологических чудес наиболее впечатляющим я считаю искусственный интеллект ... где машины применяют навыки, характерные для человеческого интеллекта (например, планирование, решение проблем), для выполнения задач. В этом посте мы собираемся изучить один из основных драйверов ИИ - машинное обучение.

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

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

Простой пример применения машинного обучения можно увидеть в разработке интеллектуальных помощников, таких как Amazon Alexa, Apple Siri и Google Home. Эти умные помощники реагируют на наши голосовые инструкции и выполняют задачи за нас (например: установка будильников ⏰, воспроизведение музыки 🎵, рассказывание анекдотов 😆). По мере того как я и миллионы других людей во всем мире отдаем команды умным помощникам, они незаметно становятся умнее за кулисами. С тех пор, как они были впервые выпущены, они научились лучше вас слушать ... например ... применять контекст ваших предыдущих команд к новым и делать выводы о том, что вы имеете в виду, когда даете варианты одной и той же команды.

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

Как реализуется машинное обучение

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

Типы машинного обучения

Первый тип машинного обучения - это обучение с учителем. В этом подходе компьютерная программа получает входные данные, которые уже помечены желаемым выходом. Идея состоит в том, что программа может усвоить эти впечатления, сравнить их с фактическими результатами, полученными при вводе новых данных, и принять более точные решения. Одно из самых популярных приложений контролируемого обучения - это обучающие программы для выполнения классификации и категоризации данных. Популярный пример этого можно увидеть в эксперименте с искусственным интеллектом Google’s Quick Draw. Если вы перейдете по этой ссылке, вам будет предложено испытать технологию машинного обучения Google, нарисовав объект и посмотрев, сможет ли их программа угадать, нарисовали ли вы на самом деле его пример или что-то еще. Если вы рисуете что-то, что вам предлагают (скажем, флаг для гольфа), вы, в свою очередь, отправляете фрагмент помеченных образцов данных, которые программа Google использует, чтобы лучше классифицировать данные (да, это же флаг для гольфа ⛳️✅). Сбор помеченных образцов данных может быть чрезвычайно дорогостоящим, и, превратив его в игру, Google нашел чрезвычайно умный способ собрать данные бесплатно. Это также отличный способ рассказать о том, как они используют нейронные сети (подробнее об этом позже), и продемонстрировать возможности их технологии машинного обучения.

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

На другом конце спектра находится обучение без учителя. В этой форме обучения специалисты по информатике будут вводить в программу исключительно немаркированные данные, чтобы программа / алгоритм обучения отвечал за обнаружение закономерностей в данных. Звучит сомнительно, правда? Что ж, когда мы с вами сталкиваемся с чем-то совершенно новым для нас, например, с языком, который мы никогда не изучали ... мы все еще можем изучать вещи с течением времени, даже не говоря, что означает ни одно слово. Это почему? Это потому, что при достаточном воздействии мы начинаем распознавать закономерности в различных звуках, которые мы слышим (данные, которые мы обрабатываем). Компьютерная программа может делать то же самое, если вводится сама по себе немаркированная информация. Он может выявить закономерности и прийти к неизвестным нам выводам. Фактически, это одна из основных причин для внедрения обучения без учителя ... чтобы научить программы обнаруживать значимые закономерности, которые мы не смогли бы обнаружить самостоятельно. Помимо возможности помочь нам обнаружить скрытые закономерности в наборе данных, программа, в которую поступают немаркированные данные, также может помочь нам определить новые категории для размещения указанных данных. За счет подачи в программу большего количества немаркированных данных ее алгоритм может извлекать уроки из прошлого опыта. и улучшить способ категоризации информации. Распространенное применение обучения без учителя - анализ потребителей, где исходными данными могут быть сведения о привычках расходов различных групп людей. Программа может помочь вам выявить значимые отношения, например, когда человек, который покупает X, с большей вероятностью купит Y.

Обучение с подкреплением - это последний из основных типов машинного обучения. Здесь программу учат оптимизировать свое поведение на основе входных данных и связанных результатов. Это метод проб и ошибок, при котором программа изучает, какие действия она должна предпринять, чтобы получить наибольшее вознаграждение. Этот тип машинного обучения предпочтительнее, если программе поручено быть основным лицом, принимающим решения. Например, в программе AlphaGo компании Alphabet Inc. используется обучение с подкреплением, чтобы побеждать игроков-людей в стратегической игре Го. Он учится оценивать позиции на доске, распознавать шаблоны ходов и применять эти идеи для победы. В частности, он назначает кредиты на ходы и, имея достаточное количество данных, может судить о силе хода на основе сценария.

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

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

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

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

Вот список других популярных алгоритмов ...

Подходит для обучения с учителем:

  1. Линейная регрессия
  2. Логистическая регрессия
  3. Машины опорных векторов

Подходит для обучения без учителя:

  1. Случайные леса
  2. Кластеризация K-средних
  3. Анализ основных компонентов

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

Глубокое обучение

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

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

Не забывайте о человеческих предубеждениях

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

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

В машинном обучении замечательно то, что начать его довольно легко, если вы хорошо разбираетесь в линейной алгебре и статистике. Для его реализации хорошо подходят различные языки (Python, Javascript, R, C ++), и существует множество платформ с открытым исходным кодом, которые вы можете использовать (например, Tensor Flow, PyTorch, Keras).

Спасибо, что остались со мной и изучаете машинное обучение! А теперь пора злиться на машину 🔥

Источники