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

В чем разница между машинным обучением, глубоким обучением и искусственным интеллектом?

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

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

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

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

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

Под присмотром

Контролируемое обучение - это когда модель обучается на помеченных данных: это означает четкие входные данные и «решения» для данных.

Обучение с учителем можно разделить на два типа: классификация и регрессия.

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

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

Алгоритмы, на которые стоит обратить внимание:

Адам, RMSprop, Стохастический градиентный спуск

Без присмотра

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

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

Алгоритмы, на которые стоит обратить внимание:

К-средство кластеризации, наивный байесовский классификатор, классификатор случайных лесов

Введение в нейронные сети и глубокое обучение:

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

Есть 2 способа понять нейронные сети: точка зрения непрофессионала:

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

Эта перспектива сохраняет макро-перспективу того, что на самом деле делает нейронная сеть, не вдаваясь в мельчайшие математические детали.

Взгляд математика:

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

Мини-урок математики:

(Я постараюсь сделать это как можно проще)

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

Математический способ описания нейронной сети:

pred = w*x
x = input_data
w = weight
pred = output

Это означает, что выход рассчитывается путем умножения входных данных на переменную w. Переменная w - это сердце нейронных сетей.

Представляем деривативы:

Теперь давайте построим график того, как изменяется значение y при изменении значения w (при условии, что x является постоянным):

Рассчитаем производную графика:

Производная - это просто причудливый способ сказать, как перейти от значения w к y?

Since pred = w*x,
the derivative of w is x, as you can multiply w by x to get pred.

MSE:

MSE - это расчет того, насколько точна линия наилучшего соответствия:

С линией наилучшего соответствия и набором истинных точек это уравнение:

for every real_point:
    mse += (real_point-line_of_best_fit)^2

MSE по сути вычисляет сумму всех ошибок и складывает их вместе, чтобы получить общее представление о том, насколько точна линия наилучшего соответствия.

Расчет производных:

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

С математической точки зрения, мы ищем частную производную MSE по параметру w.

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

В этом случае это означает, что нужно просто вычислить скорость изменения между MSE и выходным значением, затем output_value для параметра y и умножить их вместе.

Since the derivative of x^2 is 2x,
the derivative of the MSE function is 2(real_points-y)
We already calculated the derivative of the parameter w to be x.
Therefore, the derivative of the MSE function to w is:
x*2(y-pred)

Это означает, что при каждом изменении w функция MSE увеличивается на x * 2 (y-pred). Поскольку функция MSE является мерой ошибки, мы пытаемся найти, какое значение параметра w минимизирует функцию MSE.

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

Код:

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

'''
This is a simple neural network with just one input and one output.
The goal of the network is to change the value of w to be 2, as the true value is 2 and the x_value is 1.
'''
x = 1
true_values = 2*x
w = 1
for i in range(100):
    pred = w*x
mse = (true_values-pred)**2
    # derivative of mse and prediction
    dmse_dpred = (true_values-pred)*2
    dpred_dw = x
    # Therefore
    dmse_dw = dmse_dpred * dpred_dw
    w += dmse_dw*0.1
# This value should be very close to 0, as the accuracy of the network is increasing
print(mse)

Приложения:

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

Где работает машинное обучение:

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

А где его нет:

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

Вывод:

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

Удачи в ваших начинаниях, связанных с машинным обучением!