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

  1. Я люблю учиться на практике, поэтому большая часть терминологии машинного обучения и тензорного потока в этом уроке будет продемонстрирована на примерах. Если вам нужна сложная математика машинного обучения, вы не получите их здесь, но вы, по крайней мере, получите все остальное и интуитивно поймете математический процесс.
  2. Для этого урока у вас должны быть установлены tensorflow и python (numpy и matplotlib). Вы можете легко найти ресурсы в Интернете о том, как выполнить установку. Кроме того, на вашем ноутбуке должен быть установлен Jupyter Notebook или любой IDLE по вашему выбору. Если установка становится настолько сложной, вы можете использовать блокнот Google Colab прямо в Интернете и использовать «!pip install package_name» для выполнения всей установки.
  3. Вы должны быть хотя бы знакомы с основами Python, чтобы получить максимальную отдачу от кодов в этой статье, но я постараюсь изо всех сил объяснить шаги.

Теперь давайте углубимся в реальный бизнес. Что такое машинное обучение?Машинное обучение – это приложение искусственного интеллекта (ИИ), которое предоставляет системам возможность автоматически обучаться и совершенствоваться на основе полученного опыта без явного программирования. Я объясню, как лучше работать с вами на примере:

Предположим, у вас есть следующие входные и выходные значения; когда вы вводите 0, вы получаете выход 32, когда вы вводите 8, вы получаете вывод 46,4 и т. д. Теперь вопрос: можете ли вы выяснить, какое значение Output для входного значения 38 будет быть?

Если ваш ответ 100,4, вы рок-звезда, но как вы это выяснили? Построив простую линейную систему. Вы можете согласиться со мной, что в конце концов линейная система выглядит как y = 1,8*x +32, что приводит к широко известному преобразованию градусов Цельсия в градусы Фаренгейта. Другими словами, входные данные показывают значения температуры в градусах Цельсия, а выходные данные представляют соответствующую температуру в градусах Фаренгейта.

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

Традиционная разработка программного обеспечения: входные данные и алгоритм известны, и вы пишете функцию для получения выходных данных. то есть 1. входные данные, 2. применить к ним логику (алгоритм), 3. получить вывод. Давайте рассмотрим пример. Предположим, вы хотите написать компьютерную программу, которая конвертирует градусы Цельсия в градусы Фаренгейта, используя отношение, которое мы вывели выше. При разработке программного обеспечения эту программу можно легко реализовать на любом языке программирования с помощью функции. Вот пример на питоне:

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

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

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

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

  1. Импортировать все необходимые зависимости:

Сначала мы вводим TensorFlow и другие зависимости Python, необходимые для построения нашей модели. Здесь я буду использовать блокнот Jupyter:

2. Настройка тренировочных данных:

Для упрощения мы будем использовать numpy для создания простых обучающих данных, позже мы будем импортировать данные непосредственно из tensorflow. мы создаем два массива celsius_a и fahrenheit_a, которые мы можем использовать для обучения нашей модели.

Некоторая терминология машинного обучения

  • Функция — входные данные для нашей модели. В данном случае единственное значение — градусы Цельсия.
  • Ярлыки — выходные данные, которые предсказывает наша модель. В данном случае единственное значение — градусы по Фаренгейту.
  • Пример — пара входных/выходных данных, используемых во время обучения. В нашем случае пара значений из celsius_a и fahrenheit_a по определенному индексу, например (22,72).

3. Создание модели и сборка слоев в модели:

Мы будем использовать самую простую модель под названием Dense Network, так как проблема очень проста. Для этой сети требуется только один слой с одним нейроном.

Мы назовем слой l0 и создадим его, создав экземпляр tf.keras.layers.Dense со следующей конфигурацией:

  • input_shape=[1] — это указывает, что вход для этого слоя является одним значением. То есть фигура представляет собой одномерный массив с одним членом. Поскольку это первый (и единственный) слой, эта входная форма является входной формой всей модели. Единственное значение представляет собой число с плавающей запятой, представляющее градусы Цельсия.
  • units=1 — указывает количество нейронов в слое. Количество нейронов определяет, сколько внутренних переменных слой должен попытаться узнать, как решить проблему (подробнее позже). Поскольку это последний слой, он также является размером выходных данных модели — одно значение с плавающей запятой, представляющее градусы по Фаренгейту. (В многоуровневой сети размер и форма слоя должны соответствовать input_shape следующего уровня.) После определения слоев их необходимо собрать в модель. Определение последовательной модели принимает в качестве аргумента список слоев, определяя порядок расчета от входа к выходу.

4. Компиляция и обучение модели:

Перед обучением модель должна быть скомпилирована. При компиляции для обучения модели дается:

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

Оптимизатор и функция потерь могут быть изменены в зависимости от необходимости. Это будет объяснено очень хорошо в следующей статье. Одна часть оптимизатора, о которой вам, возможно, придется подумать при создании собственных моделей, — это скорость обучения (0.1 в приведенном выше коде). Это размер шага, используемый при корректировке значений в модели. Если значение слишком мало, для обучения модели потребуется слишком много итераций. Слишком большой, и точность падает. Поиск подходящего значения часто требует проб и ошибок, но диапазон обычно находится в пределах от 0,001 (по умолчанию) до 0,1. Аргумент epochs указывает, сколько раз должен выполняться этот цикл, а аргумент verbose определяет, сколько выходных данных выдает метод. Мы вызываем метод fit для обучения модели машинному обучению.

5. Визуализация величины убытка

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

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

Теперь у вас есть модель, обученная изучению связи между celsius_a и fahrenheit_a. Вы можете использовать метод прогнозирования, чтобы вычислить градусы Фаренгейта для ранее неизвестных градусов Цельсия. Теперь давайте найдем значение градуса Фаренгейта, если градус Цельсия равен 100. Используя уравнение, которое мы вывели в начале этого урока, Фаренгейт (F) = 100 * 1,8 + 32 = 212. Теперь давайте посмотрим, что предсказывает наша модель.

Теперь вы просто создаете модель машинного обучения, которая может конвертировать градусы Цельсия в градусы Фаренгейта с точностью 99,5% (вы можете рассчитать это самостоятельно, используя tensorflow или среднеквадратичную ошибку Python). Такой точности не будет, когда мы будем иметь дело с более крупными проблемами. , но цель этого — изучить основы машинного обучения.

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

Приведенный выше единый плотный слой — это именно то, что мы использовали для построения нашей модели. Он принимает x1 в качестве входных данных, а затем повторяет снова и снова, чтобы настроить внутренние переменные w11 и b1 (вес (наклон в общем смысле) и смещение соответственно), пока они не смогут предсказывать с высокой точностью.

Вы изучили основы машинного обучения и научились обучать простую модель машинного обучения. Далее вы построите реальную модель, используя набор данных tensorflow mnist. Обратите внимание на часть 2.