Нейронные сети: упражнения на игровой площадке

Первая нейронная сеть

В этом упражнении мы обучим нашу первую маленькую нейронную сеть. Нейронные сети дадут нам возможность изучать нелинейные модели без использования явных скрещиваний признаков.

Задача 1: Данная модель объединяет две наши входные функции в один нейрон. Изучит ли эта модель какие-либо нелинейности? Запустите его, чтобы подтвердить свою догадку.

Задача 2: Попробуйте увеличить количество нейронов в скрытом слое с 1 до 2, а также попробуйте перейти от линейной активации к нелинейной активации, такой как ReLU. Можете ли вы создать модель, которая может изучать нелинейности? Может ли он эффективно моделировать данные?

Задача 3: Попробуйте увеличить количество нейронов в скрытом слое с 2 до 3, используя нелинейную активацию, например ReLU. Может ли он эффективно моделировать данные? Как качество модели меняется от запуска к запуску?

Задача 4: Продолжайте экспериментировать, добавляя или удаляя скрытые слои и нейроны для каждого слоя. Также не стесняйтесь изменять скорость обучения, регуляризацию и другие настройки обучения. Какое наименьшее количество нейронов и слоев вы можете использовать, чтобы получить потери при тестировании 0,177 или ниже?

Улучшает ли увеличение размера модели подгонку или насколько быстро она сходится? Изменяется ли это, как часто он сходится к хорошей модели? Например, попробуйте следующую архитектуру:

  • Первый скрытый слой с 3 нейронами.
  • Второй скрытый слой с 3 нейронами.
  • Третий скрытый слой с 2 ​​нейронами.

(Ответы находятся сразу под упражнением.)



Инициализация нейронной сети

В этом упражнении снова используются данные XOR, но рассматривается повторяемость обучения нейронных сетей и важность инициализации.

Задача 1: Запустите модель четыре или пять раз. Перед каждым испытанием нажимайте кнопку « Сбросить сеть» , чтобы получить новую случайную инициализацию. (Кнопка « Сброс сети» — это круглая стрелка сброса слева от кнопки «Воспроизвести».) Пусть каждая пробная версия выполняется не менее чем на 500 шагов, чтобы обеспечить конвергенцию. К какой форме сходится выход каждой модели? Что это говорит о роли инициализации в невыпуклой оптимизации?

Задача 2: Попробуйте немного усложнить модель, добавив слой и пару дополнительных узлов. Повторите испытания из Задания 1. Добавляет ли это дополнительную стабильность результатам?

(Ответы находятся сразу под упражнением.)



Спираль нейронной сети

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

Задача 1: Обучите лучшую из возможных моделей, используя только X 1 и X 2 . Не стесняйтесь добавлять или удалять слои и нейроны, изменять настройки обучения, такие как скорость обучения, скорость регуляризации и размер пакета. Какую максимальную потерю при тестировании вы можете получить? Насколько гладкой является выходная поверхность модели?

Задача 2. Даже при использовании нейронных сетей для достижения наилучшей производительности часто требуется некоторый объем разработки функций. Попробуйте добавить дополнительные функции перекрестного произведения или другие преобразования, такие как sin(X 1 ) и sin(X 2 ). У вас есть лучшая модель? Является ли выходная поверхность модели более гладкой?

(Ответы находятся сразу под упражнением.)