Недавно я присоединился к этому курсу на NPTEL. Вот и подумал написать об этом блог. Этот курс рассчитан на 8 недель и требует наличия базовых знаний ML и DL. Как следует из названия, он в основном фокусируется на практических аспектах ML, которые включают написание кода на Python с API TensorFlow 2.0. Каждую неделю концепция с теоретической точки зрения пересматривается, а затем реализуется.

Начиная с курса…

НЕДЕЛЯ 1

На 1 неделе,

1. Введение в TensorFlow 2.0:

В первой лекции представлен обзор TensorFlow (TF), платформы машинного обучения, которую выбирают многие разработчики машинного обучения по всему миру. Tensorflow разработан командой Google Brain и был открыт в ноябре 2015 года. Многие компании по всему миру используют Tensorflow для создания разнообразных бизнес-приложений на основе ИИ и машинного обучения.

Tensorflow 2.0 — это последний кандидат на выпуск (RC). TF 2.0 предоставляет простые в использовании API для построения моделей машинного обучения. Можно обучить модель машинного обучения распознаванию рукописных цифр менее чем за 10 строк кода, проверьте эту коллаб для такой модели.

Мы использовали Google Colab для разработки модели ML. Colab можно рассматривать как блокнот Jupyter в облаке, который не требует настройки. Он предоставляет аппаратные ускорители, такие как GPU и TPU, и позволяет делиться работой с коллегами через Google drive. Это ссылка на первую модель, которую мы разработали.

https://colab.research.google.com/drive/1Nntu00lYIhjoMYETJTyNn6DNpq_rVMCH

2. Обзор машинного обучения:

Что такое машинное обучение? Почему мы можем закодировать сложение двух чисел, но не можем закодировать обнаружение рукописных цифр с помощью компьютерного алгоритма?

В случае с первой задачей мы знаем точную формулу вычисления сложения двух чисел. F(а, Ь) = а + Ь. Однако в случае рукописного ввода цифр распознавание через компьютерную программу затруднено.

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

Терминология машинного обучения:

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

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

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

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

  • Функции, представляющие характеристики элемента данных и
  • Ярлык – это результат, который мы ожидаем от модели.

Мы широко классифицируем алгоритмы машинного обучения на основе наличия метки в обучающих данных.

  • Алгоритмы машинного обучения, которые обучаются на основе информации о метках, называются алгоритмом обучения с учителем.
  • Алгоритмы обучения без меток называются алгоритмы обучения без учителя.

В контролируемом обучении у нас есть два подтипа:

  • Метка — это действительное число, у нас проблема с регрессией.
  • Метка — это дискретная величина, у нас проблема с классификацией.

3. Шаги машинного обучения:

Шаги, связанные с ML:

Предварительная обработка данных: этот шаг используется для того, чтобы все функции были в одном масштабе. Это помогает нам получить более быструю сходимость параметров во время обучения. (нормализация)

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

Определение модели. Существуют разные типы моделей. Самая простая из них – линейная модель.

  • Линейная регрессия: (прогнозирование действительного числа) y = b + w1*x1 + w2* x2 + … + wn* xn для данных с n функциями {x1, x2, …, xn}.
  • Логистическая регрессия: (Прогнозирование вероятности. Эта модель сначала выполняет линейную комбинацию признаков и весов: z = b + w1*x1 + w2* x2 + … + wn* xn, а затем применяет к этому логистическую функцию количество, которое возвращает число от 0 до 1.

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

  • Полиномиальная регрессия: y = b + w1 *x1 + w2* x2 + w3* x1² + w4 *x2² + w5* x1* x2.
    Здесь данные имеют две функции x1 и x2. x1*x2 получается путем скрещивания признаков.
  • Модели нейронной сети с прямой связью (NN): NN позволяет автоматически создавать эти функции из исходных входных функций. NN можно рассматривать как изучение сложной функции, разбивая ее на более мелкие функции, а затем мы объединяем выходные данные этих функций для изучения сложной функции.

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

В случае линейной регрессии мы используем наименьший квадрат в качестве функции потерь. Общий проигрыш – это сумма проигрышей по всем точкам.

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

Оптимизация: (градиентный спуск)

  • Сначала случайным образом инициализируйте w1 некоторым значением. Найдите потери в этот момент.
  • Рассчитайте градиент или наклон функции потерь в этой точке. Переместитесь в отрицательном направлении наклона и обновите значение параметра. Управляйте движением в отрицательном направлении наклона с помощью скорости обучения. В частности, w1 (новый) := w1 (старый) -альфа *градиент
  • Повторяйте эти шаги, пока параметр не продолжит обновляться.