О чём урок
Как вы уже знаете, для эффективного обучения нейронных сетей необходимо выполнить два действия: Работать с тензорами, например, умножать, складывать и вычислять функции, такие как сигмоида или 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 позволяет очень быстро создавать типичные нейронные сети, не беспокоясь о множестве деталей.
План урока
- Предлекционный тест
- Обучение
- ✍️ Упражнения: Фреймворки
- Почему возникает переобучение
- Как обнаружить переобучение
- Как предотвратить переобучение
- Переобучение и компромисс между смещением и дисперсией
- Заключение
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.