Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Первая нейронная сеть
В этом упражнении мы будем тренировать нашу первую небольшую нейронную сеть. Нейронные сети дадут нам возможность изучать нелинейные модели без использования явного пересечения признаков.
Задача 1: Данная модель объединяет два наших входных признака в один нейрон. Изучит ли эта модель какие-либо нелинейности? Запустите его, чтобы подтвердить свое предположение.
Задача 2. Попробуйте увеличить количество нейронов в скрытом слое с 1 до 2, а также попробовать перейти от линейной активации к нелинейной активации, такой как ReLU. Можете ли вы создать модель, способную изучать нелинейности? Может ли он эффективно моделировать данные?
Задача 3. Попробуйте увеличить количество нейронов в скрытом слое с 2 до 3, используя нелинейную активацию, такую как ReLU. Может ли он эффективно моделировать данные? Как качество модели меняется от запуска к запуску?
Задача 4. Продолжайте экспериментировать, добавляя или удаляя скрытые слои и нейроны на каждом слое. Также не стесняйтесь менять скорость обучения, регуляризацию и другие настройки обучения. Какое наименьшее количество нейронов и слоев вы можете использовать, чтобы потери в тестах составляли 0,177 или меньше?
Улучшает ли увеличение размера модели подгонку или насколько быстро она сходится? Изменяет ли это то, как часто она сходится к хорошей модели? Например, попробуйте следующую архитектуру:
Первый скрытый слой с 3 нейронами.
Второй скрытый слой с 3 нейронами.
Третий скрытый слой с двумя нейронами.
(Ответы приведены сразу под упражнением.)
Нажмите значок плюса, чтобы получить ответ на задание 1.
Для активации установлено значение Linear , поэтому эта модель не может изучать какие-либо нелинейности. Потери очень велики, и мы говорим, что модель не соответствует данным.
Нажмите значок плюса, чтобы получить ответ на задание 2.
Функция нелинейной активации может изучать нелинейные модели. Однако один скрытый слой с двумя нейронами не может отразить все нелинейности в этом наборе данных и будет иметь большие потери даже без шума: он все равно не соответствует данным. Эти упражнения недетерминированы, поэтому некоторые прогоны не позволят изучить эффективную модель, в то время как другие прогоны будут достаточно хороши. Самая лучшая модель может иметь не ту форму, которую вы ожидаете!
Нажмите значок плюса, чтобы получить ответ на задание 3.
В этом упражнении проявляется недетерминированная природа игровой площадки. Одного скрытого слоя с тремя нейронами достаточно для моделирования набора данных (при отсутствии шума), но не все прогоны сходятся к хорошей модели.
Трех нейронов достаточно, поскольку функцию XOR можно выразить как комбинацию трех полуплоскостей (активация ReLU). Вы можете увидеть это, посмотрев на изображения нейронов, которые показывают выходные данные отдельных нейронов. В хорошей модели с 3 нейронами и активацией ReLU будет 1 изображение с почти вертикальной линией, определяющей положительный (или отрицательный; знак можно поменять), 1 изображение с почти горизонтальной линией, определяющей знак X 2 и 1 изображения с диагональной линией, фиксирующей их взаимодействие.
Однако не все прогоны приведут к хорошей модели. Некоторые прогоны будут не лучше, чем модель с двумя нейронами, и в этих случаях вы можете увидеть дублирующиеся нейроны.
Нажмите значок плюса, чтобы получить ответ на задание 4.
Один скрытый слой с тремя нейронами может моделировать данные, но в нем нет избыточности, поэтому во многих запусках он фактически теряет нейрон и не обучает хорошей модели. Один слой с более чем тремя нейронами имеет большую избыточность и, следовательно, с большей вероятностью сходится к хорошей модели.
Как мы видели, один скрытый слой, содержащий всего два нейрона, не может хорошо моделировать данные. Если вы попробуете, то увидите, что все элементы выходного слоя могут представлять собой только фигуры, состоящие из линий из этих двух узлов. В этом случае более глубокая сеть может моделировать набор данных лучше, чем один только первый скрытый слой: отдельные нейроны второго слоя могут моделировать более сложные формы, такие как верхний правый квадрант, путем объединения нейронов первого слоя. Хотя добавление второго скрытого слоя по-прежнему может моделировать набор данных лучше, чем один только первый скрытый слой, возможно, имеет смысл добавить больше узлов к первому слою, чтобы позволить большему количеству линий быть частью набора, из которого второй слой строит свои фигуры. .
Однако модель с 1 нейроном в первом скрытом слое не может обучиться хорошей модели, какой бы глубокой она ни была. Это связано с тем, что выходные данные первого слоя варьируются только по одному измерению (обычно по диагональной линии), чего недостаточно для хорошего моделирования этого набора данных. Более поздние слои не могут компенсировать это, какими бы сложными они ни были; информация во входных данных была безвозвратно утеряна.
Что, если вместо того, чтобы пытаться создать небольшую сеть, для решения такой простой задачи мы использовали множество слоев с множеством нейронов? Что ж, как мы видели, первый слой будет иметь возможность пробовать множество разных наклонов линий. А второй слой будет иметь возможность накапливать их во множество различных форм, с множеством фигур на последующих слоях.
Позволяя модели учитывать так много разных форм с помощью такого количества разных скрытых нейронов, вы создали достаточно места для того, чтобы модель могла легко переобучать шум в обучающем наборе, позволяя этим сложным формам соответствовать недостаткам обучающих данных. а не обобщенную основную истину. В этом примере более крупные модели могут иметь сложные границы для соответствия точным точкам данных. В крайних случаях большая модель может изучить остров вокруг отдельной точки шума, что называется запоминанием данных. Сделав модель намного больше, вы увидите, что на самом деле она часто работает хуже , чем более простая модель с достаточным количеством нейронов для решения проблемы.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2024-08-22 UTC."],[[["This exercise explores training a neural network to learn nonlinearities and model data effectively."],["Increasing the number of neurons and using nonlinear activation functions like ReLU improves model performance."],["A single hidden layer with 3 neurons using ReLU can sufficiently model the data, but model quality varies between runs."],["Deeper and wider networks risk overfitting, potentially memorizing noise instead of generalizing patterns."],["While adding layers can improve model performance, redundant layers and neurons might lead to worse results compared to a simpler, well-structured model."]]],[]]