Шаги, необходимые для построения нейронной сети MLP:
1. Предварительно обработайте данные:
- В соответствии с поставленной задачей выполните очистку данных, например дедупликацию, удаление ненужных элементов, таких как URL-адреса и т. д. (при работе с текстовыми данными).
- Преобразуйте текстовые данные в числовые векторы. (при работе с текстовыми данными)
- Не забудьте нормализовать данные.
2. Выбор архитектуры:
В соответствии с потребностями цели:
- Выберите соответствующее количество слоев MLP для построения.
- Выберите соответствующее количество нейронов в каждом слое.
- Подходящее количество слоев/нейронов можно выбрать, выполнив настройку гиперпараметров для различного количества слоев/нейронов.
3. Инициализация веса:
Выберите подходящую (с помощью настройки гиперпараметров) схему инициализации случайного веса, такую как:
- Начните со всех весов = 0 (используется редко)
- Равномерная инициализация (подходит для функции активации Sigmoid)
- Инициализация Ксавьера/Глорота:
- Униформа
- Нормальный
- Инициализация
- Униформа
- Нормальный
- Дополнительные схемы инициализации весов см. в документации Keras здесь.
4. Выбор функции активации:
Выберите подходящую (с помощью настройки гиперпараметров) функцию активации, например:
- Сигмоид (следует избегать из-за проблемы «исчезающих градиентов»)
- Tanh (следует избегать из-за проблемы с исчезающими градиентами)
- ReLu (предпочтительнее для задач регрессии)
- Softmax (предпочтительнее для задач классификации)
- Дополнительные функции активации см. в документации Keras здесь.
5. Выбор оптимизатора:
- Обычно мы избегаем использования SGD для целей оптимизации в глубоком обучении (в отличие от машинного обучения) из-за проблемы «седловых точек» на кривой, которые SGD не обрабатывает должным образом.
Седловая точка — это точка на кривой, где наклон равен 0, что обычно не является локальным экстремумом на кривой.
- Следовательно, мы выбираем другие методы оптимизации, такие как:
- Адам
- Ададельта
- Адаград
- Адамакс
- Чтобы узнать больше об оптимизаторах, ознакомьтесь с документацией Keras здесь.
6. Использование пакетной нормализации (необязательно):
- Как правило, пакетная нормализация используется в случаях многослойных MLP с очень глубокими слоями.
- Небольшое изменение значений весов в начальных слоях МЛП могло привести к большим изменениям в глубинных слоях.
- Следовательно, прежде чем небольшие изменения приведут к большим изменениям, мы пакетно нормализуем глубокие слои в MLP.
7. Использование Dropouts (необязательно):
- Выпадение относится к выпадению определенного количества нейронов в слое, что приводит к упорядочению MLP.
- Определенное количество нейронов выключается случайным образом, поэтому их выходы не используются при построении модели.
- Регуляризация используется для «компромиссов смещения и дисперсии», что относится к «переоснащению» или «недообучению» модели.
8. Выбор функции потерь:
Вот некоторые из функций потерь, используемых для вычисления количества, которое модель должна стремиться минимизировать во время обучения:
- Cross-Entropy (предпочтительнее для задач классификации)
- Среднеквадратическая ошибка (предпочтительнее для задач регрессии)
- Средняя абсолютная ошибка
- Дополнительные функции Loss см. в документации Keras здесь.
9. Мониторинг градиента и отсечение (при необходимости):
- Некоторые функции активации вызывают проблему «исчезающих градиентов» и проблему «взрывающихся градиентов».
- Проблема исчезающих градиентов относится к тому, что градиенты становятся настолько малыми из-за многочисленных произведений градиентов с малыми значениями, что становятся неэффективными для целей оптимизации, поскольку веса никогда не сходятся.
Используйте функцию активации ReLu, чтобы решить проблему исчезающих градиентов.
- Проблема взрывающихся градиентов относится к тому, что градиенты становятся очень большими из-за множества произведений градиентов с большими значениями, что они становятся неэффективными для целей оптимизации, поскольку веса никогда не сходятся.
Используйте L2-Norm Clipping, чтобы решить проблему взрывающихся градиентов.
- Обе эти проблемы часто возникают с функциями активации Sigmoid и Tanh в нейронных сетях с глубокими слоями.
10. Оценка модели:
- Узнайте точность и потери построенной модели.
- Постройте график «Test Loss vs Number of Epochs», который может дать представление о частоте ошибок для каждой эпохи модели.