Машинное обучение (1): 5 минут, чтобы понять машинное обучение и приступить к работе

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

введение

Большинство учебных пособий по машинному обучению на рынке сегодня сначала изучают основы математики, затем изучают математические алгоритмы машинного обучения, затем строят математическую модель машинного обучения, затем изучают глубокое обучение, затем изучают инженерное дело, а затем рассматривают возможность посадки. Каждое из этих звеньев быстро развивается, но приземление дается особенно сложно. Мы тратим много времени и средств на изучение вышеуказанного контента, и стоимость, несомненно, очень высока. Следовательно, мы могли бы также исследовать машинное обучение с «слепыми, касающимися слона» и «не требующими глубокого понимания», и остановиться на этом. Если вы думаете о своих собственных сценариях приложений, применяйте то, что вы узнали, и тщательно изучайте. Это, несомненно, решение, которое минимизирует необратимые затраты.
Этот учебник подходит для людей с широким кругом интересов, чтобы увеличить широту своих знаний.С точки зрения применения, я хотел бы «использовать» инструмент машинного обучения, который представляет собой типичное мышление черного ящика. Это очень соответствует образу мыслей автора, и, конечно же, это также мое личное ограничение шаблона.
Этот урок будет прост для понимания и поможет вам быстро начать работу. Но если вы хотите пойти дальше, изучайте математику. Конечно, мы лишь временно откладываем в сторону математику и сначала строим собственную систему знаний.

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

поднять угол

От ручного труда к индустриализации и искусственному интеллекту — это процесс постепенного освобождения человека от производственной деятельности. Использование машин для помощи людям в работе всегда было добрым желанием человечества. Сделать машины разумными, чтобы решать более сложные задачи вместо людей, может быть простым объяснением искусственного интеллекта.
Многие учебники или книги объясняют взаимосвязь между искусственным интеллектом, машинным обучением и глубоким обучением как подчиненные отношения: искусственный интеллект > машинное обучение > глубокое обучение. Это объяснение хорошее, но оно не может выразить более глубокую связь между ними.
Машинное обучение — это средство достижения искусственного интеллекта путем математического поиска объяснений в данных. Глубокое обучение — это передовая методика, разработанная на основе машинного обучения применительно к нервной системе.Между ними существует определенная зависимость и эволюционная тенденция.
В узком смысле традиционное машинное обучение — это процесс выяснения законов данных посредством непрерывного вывода математических моделей. Среди них особое значение имеет выбор математической модели. С развитием вычислительной мощности, такой как GPU и TPU, и развитием технологии алгоритмов появилась даже технология автоматического выбора модели и автоматической настройки параметров. Мы можем создавать сложные структуры нейронных сетей, если у нас достаточно вычислительной мощности и достаточно времени для обработки очень сложных задач с помощью глубокого обучения. Поэтому с точки зрения работы с кодом глубокое обучение даже более дружелюбно и понятно для программистов, чем традиционное машинное обучение. Преимущество изучения сначала традиционного машинного обучения, а не непосредственного изучения глубокого обучения, заключается в том, что мы можем понять процесс машинного обучения, распаковав «черный ящик», понять концепцию машинного обучения, и я объясню математическую модель, применяемую в нем.

Давайте сначала посмотрим на структуру отраслевой цепочки искусственного интеллекта, как показано ниже:

Мы видим, что три краеугольных камня машинного обучения — вычислительная мощность, алгоритмы и данные. Развитие машинного обучения неотделимо от прогресса алгоритмической математики, а также неотделимо от развития вычислительной мощности.
На техническом уровне машинное обучение достигло ключевых успехов и приложений в области компьютерного зрения (CV, Computer Vision) и обработки естественного языка (NLP, обработка естественного языка).
С точки зрения классификации алгоритмов машинное обучение делится на обучение с учителем, обучение без учителя, обучение с полуучителем, обучение с подкреплением и т. д.

  • контролируемое обучение: Образцы данных имеют метки.
  • неконтролируемое обучение: выборка данных не имеет меток.
  • полуконтролируемое обучение: Образцы данных имеют частичные (маленькие) метки.
  • обучение с подкреплением: На пути к результату вознаграждается, а отклонение от результата наказывается.

Так называемый Garbage in, Garbage out (мусор на входе, мусор на выходе). Данные лежат в основе машинного обучения. Нам нужно тратить много времени на обработку данных, даже если это составляет более 90% всей задачи машинного обучения.
Например, при сборе данных во время обработки данных, если наш метод выборки не подходит, это может привести к нерепрезентативным наборам данных, что приводит к систематической ошибке выборки.
В наших данных может быть много неверных данных, нам необходимо удалить неверные данные, что называется очисткой данных.
Мы обнаруживаем менее очевидные закономерности, анализируя большие объемы данных, что называется анализом данных.

Процесс индустриализации машинного обучения

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

Процесс разделен на шесть частей: ввод данных, проверка данных, проектирование функций, модель обучения, модель проверки, применение хорошей модели и предоставление модели:

  1. Введите данные и разделите набор данных по мере необходимости.
  2. Создавайте статистику функций для обучающих данных и данных обслуживания. Схемы создаются путем вывода типов, классов и диапазонов из обучающих данных. Определите выбросы в обучении и обслуживании данных.
  3. Выполните разработку функций в наборе данных.
  4. Обучите модель и настройте гиперпараметры модели.
  5. Выполните углубленный анализ результатов обучения и помогите проверить экспортированные модели. Убедитесь, что модель действительно обслуживаема инфраструктурой, и предотвратите отправку неверных моделей.
  6. Разверните модель в сервисной инфраструктуре.

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

Как машины учатся

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

Возьмем, к примеру, шкалу Цельсия в Фаренгейтах.
В традиционном программировании мы запрашиваем соотношение между градусами Цельсия и Фаренгейта, нам нужно найти формулу:Fahrenheit=Celsius*1.8+32Fahrenheit = Celsius * 1.8 + 32

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

Как показано на рисунке, у нас есть данные по Цельсию 0, 8, 15, 22, 38 и данные по Фаренгейту 32, 46,4, 59, 71,6, 100,4 Процесс машинного обучения — это процесс нахождения формулы. Среди них Цельсий нашособенность, Фаренгейты нашиЭтикетка, связь между градусами Цельсия и Фаренгейтапример.

  • особенность: Вход в нашу модель. В данном случае есть только одно значение - Цельсий.
  • Этикетка: результат, предсказанный нашей моделью. В данном случае значение только одно — Фаренгейты.
  • пример: Пара ввода/вывода, используемая во время обучения. В нашем случае это пара градусов Цельсия/Фаренгейта, например, (0, 32), (8, 46,4).

Синяя часть указывает на то, что мы устанавливаем математическую функцию, а затем непрерывно корректируем веса и смещения.соответствоватьданные и, наконец, получить правило, которое может представлятьМодельпроцесс.

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

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

Прежде чем приступить к коду, я предполагаю, что вы уже настроили среду и освоили использование Jupyter, Numpy, Pandas и Matplotlib. Если у вас нет вышеперечисленных навыков, обратитесь к вспомогательному руководству, которое я написалСерия предмашинного обучения

import numpy as np
import matplotlib.pyplot as plt
celsius    = [[-40], [-10], [ 0], [ 8], [15], [22], [ 38]]
fahrenheit = [[-40], [ 14], [32], [46.4], [59], [71.6], [100.4]]
plt.scatter(celsius,fahrenheit, c='red', label='real')
plt.xlabel('celsius')
plt.ylabel('fahrenheit')
plt.legend()
plt.grid(True)
plt.title('real data')
plt.show()

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

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(celsius,fahrenheit)

Мы обучили данные всего тремя строками кода выше.LinearRegressionЭто метод линейной регрессии в пакете scikit-learn, который представляет собой обычную линейную регрессию методом наименьших квадратов. иfitЭто означает подгонку, чтобы обучить модель.

celsius_test = [[-50],[-30],[10],[20],[50],[70]]
fahrenheit_test = lr.predict(celsius_test)
plt.scatter(celsius,fahrenheit, c='red', label='real')
plt.scatter(celsius_test,fahrenheit_test, c='orange', label='predicted')
plt.xlabel('celsius')
plt.ylabel('fahrenheit')
plt.legend()
plt.grid(True)
plt.title('estimated vs real data')
plt.show()

Далее мы звонимlr.predict(celsius_test)метод, чтобы сделать прогнозы, чтобы проверить точность нашей модели. По желтым точкам на изображении ниже видно, что наша модель очень точна.

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

Кстати, код глубокого обучения

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

import tensorflow as tf
import numpy as np

# prepare data
celsius_q    = np.array([-40, -10,  0,  8, 15, 22,  38],  dtype=float)
fahrenheit_a = np.array([-40,  14, 32, 46.4, 59, 71.6, 100.4],  dtype=float)

# fit model
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1))
history = model.fit(celsius_q, fahrenheit_a, epochs=500, verbose=False)
print("Finished training the model")

# print loss
import matplotlib.pyplot as plt
plt.xlabel('Epoch Number')
plt.ylabel("Loss Magnitude")
plt.plot(history.history['loss'])

Мы создали однослойную нейронную сеть, используя встроенный в TensorFlow метод Keras, выбрали функцию потерь MSE и оптимизатор Adam и обучили 500 поколений.

Как видно на рисунке ниже, по мере увеличения количества эпох результат функции потерь постепенно уменьшается.

Так что же такое функция потерь? Узнаем в следующей статье. Спасибо за внимание к паблику [caiyongji] и поддержку!

Серия предварительного обучения