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

Когда нам нужно машинное обучение?

Но этого было недостаточно. Хотя компьютерные языки общего назначения являются полными по Тьюрингу, это не решает всей проблемы человеческого интеллекта, поскольку компьютер может решать только те проблемы, для которых известен алгоритм. Что делать, если алгоритм неизвестен? Здесь на помощь приходит алгоритм машинного обучения. Давайте рассмотрим пример. Джек и Мэри - молодожены, и они хотят купить место в ближайшем пригороде, где они хотят построить дом. Вложение в дом и покупка дома - одна из самых дорогих и крупных покупок любого человека. Итак, Джек и Мэри хотят иметь недорогой способ отслеживания цен на землю, который их интересует. Теперь цена земли зависит от различных факторов, таких как площадь земли и местность, в которой она расположена, для чего мы нужен эксперт по недвижимости, чтобы правильно это оценить. Однако эксперт может иметь предвзятость, когда консультирует нас. Как мы можем узнать, что можем доверять этому человеку? Только если бы у нас был алгоритм или математическая формула, которые могли бы правильно ответить, это было бы идеально. Это своего рода проблема, в которой, похоже, нет ничего подобного. Итак, в этом случае мы воспользуемся помощью машинного обучения.

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

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

  • Шаблон существует
  • Паттерн не может быть определен математически. По крайней мере, сейчас этого никто не знает
  • Данные должны существовать

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

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

Наконец, данные должны существовать. Если данных нет, то делать больше нечего. Период.

Процесс

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

[
a1 -> area of the house
a2 -> distance of the house from the nearest store
a3 -> previous selling price of the house.
...
an
]

Такой дом будет иметь оптимальную цену, которая, можно сказать, равна его стоимости. Мы можем сказать, что если вышеупомянутый вектор называется x, то существует некоторая функция f, такая, что f(x) = y, где y - стоимость дома. Машинное обучение стремится найти значение f, которое является идеальной формулой. Проблема в том, что эта функция f неизвестна и может быть чем угодно. Эта функция f представляет собой бесконечный набор всех существующих функций. Итак, как найти эту функцию f. Мы говорим, что эта функция f невычислимая. Вместо использования набора данных, который у нас есть, мы сформулируем x и y, а затем попытаемся угадать, используя методы машинного обучения, функцию g такую, что g ≈ f (g - это приближение f). Итак, хотя f нам неизвестен, g очень хорошо известен и называется набором гипотез. Мы надеемся, что g - хорошая оценка функции f.

Набор гипотез и алгоритм обучения

Мы можем получить все это в виде следующей диаграммы.

Итак, мы начинаем с определения x и y и спрашиваем, существует ли функция f такая, что f(x) = y. Затем мы берем набор данных и придумываем алгоритм обучения, в котором мы генерируем функцию g, так что g является хорошим приближением к f. Есть еще одна важная вещь, которая необходима в сочетании, - это набор гипотез. Алгоритм обучения и набор гипотез - это инструменты, которые мы выбрали, чтобы прийти к окончательному решению. Набор гипотез - это набор функций, которые обладают некоторыми общими и уникальными свойствами, которые делают их жизнеспособными кандидатами на рассмотрение для окончательной гипотезы. Мы применяем алгоритм обучения к набору гипотез, а затем выбираем конкретную функцию из набора гипотез. В терминах примеров набор гипотез может быть линейной регрессией, а алгоритм обучения может быть градиентным спуском, или набор гипотез может быть нейронными сетями, а алгоритм обучения может быть обратным распространением. Таким образом, говоря словами, набор гипотез - это набор аналогичных функций, которые, как было показано, дают хорошие результаты при определенных условиях, а алгоритм обучения - это алгоритм, который будет выполнять фактический поиск. Он будет искать в пространстве возможных гипотез и производить конкретную функцию, которую мы будем рассматривать.

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

Теперь, работая с примером прогнозирования стоимости жилья, возьмем простой набор гипотез - линейная регрессия. Скажем, возьмем только одно измерение x или один объект, который для простоты является площадью дома.

Итак, для ввода x = (x1, x2, x3, … xN) это соответствующие площади N домов.

Будем говорить, что output y = (y1, y2, y3,…, yN) - соответствующие значения домов. Скажем, этот набор данных можно отобразить на графике, показанном ниже. Обратите внимание, что этот график возможен, потому что мы берем только одну особенность набора данных. Во многих случаях набор данных будет иметь огромные размеры, поэтому мы не сможем визуализировать график, но нам придется прибегнуть к другим методам, чтобы получить представление о данных.

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

Мы можем преобразовать это уравнение в матричную форму, которую можно записать в следующем формате:

где h - выходной вектор, Θ и X - веса модели и входные матрицы соответственно. Для начала инициализируем Θ случайными значениями. Это дает нам случайную строку.

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

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

Если вам это интересно и вы хотите поговорить об этом подробнее, просто напишите мне сообщение @ alt227Joydeep. Буду рад обсудить это дальше. Вы также можете нажать кнопку Нравится и подписаться на меня здесь, на Medium.