Шаги, необходимые для построения нейронной сети 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», который может дать представление о частоте ошибок для каждой эпохи модели.

Для реализации кода следите за мной на GitHub.