В интерактивных упражнениях ниже вы дополнительно изучите внутреннюю работу нейронных сетей. Во-первых, вы увидите, как изменения параметров и гиперпараметров влияют на прогнозы сети. Затем вы будете использовать полученные знания для обучения нейронной сети обработке нелинейных данных.
Упражнение 1
Следующий виджет настраивает нейронную сеть со следующей конфигурацией:
- Входной слой с 3 нейронами, содержащими значения
0.00
,0.00
и0.00
- Скрытый слой с 4 нейронами
- Выходной слой с 1 нейроном
- Функция активации ReLU применяется ко всем узлам скрытого слоя и выходному узлу.
Просмотрите первоначальную настройку сети (примечание: пока не нажимайте кнопки ▶️ или >| ), а затем выполните задачи под виджетом.
Задача 1
Все значения трех входных функций модели нейронной сети равны 0.00
. Щелкните каждый из узлов сети, чтобы просмотреть все инициализированные значения. Прежде чем нажать кнопку «Воспроизвести» ( ▶️ ), ответьте на этот вопрос:
Теперь нажмите кнопку «Воспроизвести» (▶️) над сетью и наблюдайте, как заполняются все значения скрытого слоя и выходного узла. Был ли ваш ответ выше правильным?
Нажмите здесь для объяснения
Точное выходное значение, которое вы получите, будет зависеть от того, как случайно инициализируются параметры веса и смещения. Однако, поскольку каждый нейрон во входном слое имеет значение 0, все веса, используемые для расчета значений узлов скрытого слоя, будут обнулены. Например, расчет первого узла скрытого слоя будет таким:
y = ReLU(w 11 * 0,00 + w 21 * 0,00 + w 31 * 0,00 + b)
у = ReLU(б)
Таким образом, значение каждого узла скрытого слоя будет равно значению ReLU смещения (b), которое будет равно 0, если b отрицательное, и самому b, если b равно 0 или положительному.
Затем значение выходного узла будет рассчитываться следующим образом:
y = ReLU(w 11 * x 11 + w 21 * x 21 + w 31 * x 31 + w 41 * x 41 + b)
Задача 2
Прежде чем модифицировать нейронную сеть, ответьте на следующий вопрос:
Теперь измените нейронную сеть, добавив новый скрытый слой с тремя узлами следующим образом:
- Нажмите кнопку + слева от скрытого слоя текста 1, чтобы добавить новый скрытый слой перед выходным слоем.
- Дважды нажмите кнопку + над новым скрытым слоем, чтобы добавить к слою еще 2 узла.
Был ли ваш ответ выше правильным?
Нажмите здесь для объяснения
Меняется только выходной узел. Поскольку вывод для этой нейронной сети является «упреждающим» (вычисления выполняются от начала до конца), добавление нового слоя в сеть повлияет только на узлы после нового слоя, а не на узлы, которые предшествуют ему.
Задача 3
Щелкните второй узел (сверху) в первом скрытом слое сетевого графика. Прежде чем вносить какие-либо изменения в конфигурацию сети, ответьте на следующий вопрос:
Теперь щелкните текстовое поле для веса w 12 (отображается под первым входным узлом, x 1 ), измените его значение на 5.00
и нажмите Enter. Наблюдайте за обновлениями графика.
Был ли ваш ответ правильным? Будьте осторожны при проверке своего ответа: если значение узла не меняется, означает ли это, что базовый расчет не изменился?
Нажмите здесь для объяснения
Единственный узел, затронутый в первом скрытом слое, — это второй узел (тот, который вы щелкнули). Вычисления значений для других узлов в первом скрытом слое не содержат w 12 в качестве параметра, поэтому на них это не влияет. Это затрагивает все узлы второго скрытого слоя, поскольку их расчеты зависят от значения второго узла первого скрытого слоя. Аналогичным образом это влияет на значение выходного узла, поскольку его расчеты зависят от значений узлов второго скрытого слоя.
Думали ли вы, что ответом будет «нет», потому что ни одно из значений узлов в сети не изменилось, когда вы изменили значение веса? Обратите внимание, что базовое вычисление для узла может измениться без изменения значения узла (например, ReLU(0) и ReLU(–5) оба выдают на выходе 0). Не делайте предположений о том, как это повлияло на сеть, просто глядя на значения узлов; не забудьте также просмотреть расчеты.
Упражнение 2
В упражнениях по перекрестным объектам в модуле Категориальные данные вы вручную создавали перекрестные объекты для соответствия нелинейным данным. Теперь вы увидите, сможете ли вы создать нейронную сеть, которая сможет автоматически подбирать нелинейные данные во время обучения.
Ваша задача: настроить нейронную сеть, которая сможет отделить оранжевые точки от синих на диаграмме ниже, добившись потерь менее 0,2 как на обучающих, так и на тестовых данных.
Инструкции:
В интерактивном виджете ниже:
- Измените гиперпараметры нейронной сети, поэкспериментировав с некоторыми из следующих настроек конфигурации:
- Добавляйте или удаляйте скрытые слои, нажимая кнопки + и – слева от заголовка СКРЫТЫЕ СЛОИ на сетевой диаграмме.
- Добавьте или удалите нейроны из скрытого слоя, нажимая кнопки + и – над столбцом скрытого слоя.
- Измените скорость обучения, выбрав новое значение в раскрывающемся списке «Скорость обучения» над диаграммой.
- Измените функцию активации, выбрав новое значение в раскрывающемся списке «Активация» над диаграммой.
- Нажмите кнопку «Воспроизвести» (▶️) над диаграммой, чтобы обучить модель нейронной сети с использованием указанных параметров.
- Наблюдайте за визуализацией модели, соответствующей данным по мере обучения, а также за значениями «Потери при тестировании» и «Потери при обучении» в разделе «Вывод» .
- Если модель не достигает потерь ниже 0,2 на тестовых и обучающих данных, нажмите «Сброс» и повторите шаги 1–3 с другим набором настроек конфигурации. Повторяйте этот процесс, пока не достигнете желаемых результатов.
Нажмите здесь, чтобы увидеть наше решение
Нам удалось добиться потерь при тестировании и обучении ниже 0,2 за счет:
- Добавление 1 скрытого слоя, содержащего 3 нейрона.
- Выбрав скорость обучения 0,01.
- Выбор функции активации ReLU.