Фреймворки для нейронных сетей

Урок 6 из 25 курса «Основы ИИ для начинающих»: официальный курс Microsoft AI for Beginners (Майкрософт) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Как вы уже знаете, для эффективного обучения нейронных сетей необходимо выполнить два действия: Работать с тензорами, например, умножать, складывать и вычислять функции, такие как сигмоида или softmax. Вычислять градиенты всех выражений, чтобы выполнять оптимизацию методом градиентного спуска. Хотя библиотека numpy может выполнять первую часть, нам нужен механизм для вычисления градиентов. В нашем фреймворке, который мы разработали в предыдущем разделе, приходилось вручную программировать все функции производных внутри метода backward, выполняющего обратное распространение ошибки. В идеале фреймворк должен давать возможность вычислять градиенты любого выражения, которое вы можете определить. Ещё один важный аспект: возможность выполнять вычисления на GPU или любых других специализированных вычислительных блоках, таких как TPU. Обучение глубоких нейронных сетей требует очень много вычислений, и возможность параллелизации этих вычислений на GPU крайне важна. ✅ Термин «параллелизовать» означает распределение вычислений между несколькими устройствами. В настоящее время двумя наиболее популярными фреймворками для нейронных сетей являются TensorFlow и PyTorch. Оба предоставляют низкоуровневый API для работы с тензорами как на CPU, так и на GPU. Помимо низкоуровневого API, существуют также высокоуровневые API, называемые Keras и PyTorch Lightning соответственно. Низкоуровневый API TensorFlow PyTorch Высокоуровневый API Keras PyTorch Lightning Низкоуровневые API в обоих фреймворках позволяют создавать так называемые вычислительные графы. Такой граф определяет, как вычислить выходные данные (обычно функцию потерь) с заданными входными параметрами, и может быть передан для вычисления на GPU, если оно доступно. Существуют функции для дифференцирования этого вычислительного графа и вычисления градиентов, которые затем можно использовать для оптимизации параметров модели. Высокоуровневые API рассматривают нейронные сети как последовательность слоёв и значительно упрощают построение большинства нейронных сетей. Обучение модели обычно требует подготовки данных, а затем вызова функции fit для выполнения работы. Высокоуровневый API позволяет очень быстро создавать типичные нейронные сети, не беспокоясь о множестве деталей.

План урока

  1. Предлекционный тест
  2. Обучение
  3. ✍️ Упражнения: Фреймворки
  4. Почему возникает переобучение
  5. Как обнаружить переобучение
  6. Как предотвратить переобучение
  7. Переобучение и компромисс между смещением и дисперсией
  8. Заключение

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды