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

Традиционная парадигма программирования

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

В традиционном программировании правила идентифицируются и выражаются с использованием языка программирования, такого как Java, C++ или Python, для решения проблемы.

Рассмотрите этот пример

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

У вас есть данные. У вас есть правило. После этого вы можете получить ответ. Расширив это правило, вы можете использовать его, чтобы определить, работают ли они.

Например, если скорость меньше 4 миль в час, человек идет пешком. Если нет, то они рысью или бегом. Потрясающий! Это все еще работает.

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

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

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

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

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

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

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

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

Здесь часто используется термин «потеря». Более высокие потери примерно аналогичны более низкой точности.

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

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

Диаграмма описывает машинное обучение на высоком уровне.

ПРИМЕЧАНИЕ. Слово «ответы» представляет собой «ярлыки» и обычно используется для термина, описывающего ваши данные. Но остальное пока стоит.

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

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

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

С уважением, Эштон Оньянго