В приведенных ниже интерактивных упражнениях вы более подробно изучите внутреннее устройство нейронных сетей. Сначала вы увидите, как изменения параметров и гиперпараметров влияют на прогнозы сети. Затем вы используете полученные знания для обучения нейронной сети аппроксимации нелинейных данных.
Упражнение 1
Следующий виджет настраивает нейронную сеть со следующей конфигурацией:
- Входной слой с 3 нейронами, содержащими значения
0.00 , 0.00 и 0.00 - Скрытый слой с 4 нейронами
- Выходной слой с 1 нейроном
- Функция активации ReLU применяется ко всем узлам скрытого слоя и выходному узлу.
Проверьте первоначальную настройку сети (обратите внимание: пока не нажимайте кнопки ▶️ или >| ), а затем выполните задачи, расположенные под виджетом.
Задание 1
Значения всех трех входных признаков для модели нейронной сети равны 0.00 . Щелкните по каждому узлу в сети, чтобы увидеть все инициализированные значения. Прежде чем нажать кнопку «Воспроизвести» ( ▶️ ), ответьте на этот вопрос:
Как вы думаете, какое значение будет получено в результате: положительное, отрицательное или равное 0?
Положительное значение выходного сигнала
Вы выбрали положительное выходное значение . Следуйте приведенным ниже инструкциям, чтобы выполнить вывод на основе входных данных и проверить, правы ли вы.
Отрицательное выходное значение
Вы выбрали отрицательное выходное значение . Следуйте приведенным ниже инструкциям, чтобы выполнить вывод на основе входных данных и проверить, правы ли вы.
Выходное значение: 0
Вы выбрали выходное значение 0. Следуйте приведенным ниже инструкциям, чтобы выполнить вывод на основе входных данных и проверить, правы ли вы.
Теперь нажмите кнопку «Воспроизвести» (▶️) над сетью и наблюдайте, как заполняются значения скрытого слоя и выходного узла. Ваш ответ выше был правильным?
Нажмите здесь для пояснения.
Точное выходное значение будет варьироваться в зависимости от того, как случайным образом инициализируются параметры веса и смещения. Однако, поскольку каждый нейрон во входном слое имеет значение 0, все веса, используемые для вычисления значений узлов скрытого слоя, будут обнулены. Например, вычисление для первого узла скрытого слоя будет следующим:
y = ReLU(w 11 * 0,00 + w 21 * 0,00 + w 31 * 0,00 + b)
y = ReLU(b)
Таким образом, значение каждого узла скрытого слоя будет равно значению функции активации 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
Прежде чем модифицировать нейронную сеть, ответьте на следующий вопрос:
Если после первого скрытого слоя добавить к нейронной сети еще один скрытый слой и добавить в него 3 узла, сохранив при этом все входные параметры и параметры весов/смещений неизменными, то на вычисления каких других узлов это повлияет?
Все узлы сети, кроме входных узлов.
Вы выбрали все узлы в сети, кроме входных узлов . Следуйте приведенным ниже инструкциям, чтобы обновить нейронную сеть и проверить правильность своих действий.
Только узлы в первом скрытом слое
Вы выбрали только узлы первого скрытого слоя . Следуйте приведенным ниже инструкциям, чтобы обновить нейронную сеть и проверить правильность своих действий.
Только выходной узел
Вы выбрали только выходной узел . Следуйте приведенным ниже инструкциям, чтобы обновить нейронную сеть и проверить правильность своих действий.
Теперь изменим нейронную сеть, добавив новый скрытый слой с 3 узлами следующим образом:
- Нажмите кнопку «+» слева от текста «1 скрытый слой» , чтобы добавить новый скрытый слой перед выходным слоем.
- Дважды нажмите кнопку «+» над новым скрытым слоем, чтобы добавить к слою еще 2 узла.
Ваш ответ выше был правильным?
Нажмите здесь для пояснения.
Изменяется только выходной узел. Поскольку вывод в этой нейронной сети осуществляется по принципу «прямого распространения» (вычисления выполняются от начала до конца), добавление нового слоя в сеть повлияет только на узлы после нового слоя, а не на те, которые ему предшествуют.
Задание 3
Щелкните второй узел (сверху) в первом скрытом слое графа сети. Прежде чем вносить какие-либо изменения в конфигурацию сети, ответьте на следующий вопрос:
Если изменить значение веса w 12 (отображается под первым входным узлом, x 1 ), то это может повлиять на вычисления других узлов для некоторых входных значений?
Никто
Вы выбрали «ничего» . Следуйте инструкциям ниже, чтобы обновить нейронную сеть и проверить, правильно ли вы всё сделали.
Второй узел в первом скрытом слое, все узлы во втором скрытом слое и выходной узел.
Вы выбрали второй узел в первом скрытом слое, все узлы во втором скрытом слое и выходной узел . Следуйте приведенным ниже инструкциям, чтобы обновить нейронную сеть и проверить правильность своих действий.
Все узлы в первом скрытом слое, во втором скрытом слое и в выходном слое.
Вы выбрали все узлы в первом скрытом слое, во втором скрытом слое и в выходном слое . Следуйте приведенным ниже инструкциям, чтобы обновить нейронную сеть и проверить правильность своих действий.
Теперь щелкните в текстовом поле для веса 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.