Вопросы про нейронную сеть?

Здраствуйте, в университете начался курс по нейросетям и у меня появились вопросы.
Так как сижу на карантине у преподавателя задать вопросы не могу.

Нам выдали методичку где было сказано советы для выбора количество слоев и нейронов в слои. Основные тезисы:

  • 0 - Способен только представлять линейные отделимые функции или решения.

  • 1 - может аппроксимировать любую функцию, которая содержит непрерывное отображение
    из одного конечного пространства в другое.

  • 2 - может представлять произвольную границу решения с произвольной точностью
    с рациональными функциями активации и может аппроксимировать любой гладкий
    отображение с любой точностью.

Это понятно, однако сразу же задача с 4 скрытыми слоями. Это что тогда такое ?

Так же сказано про выбор нейронов в слои.
  • Количество скрытых нейронов должно быть между размером входного слоя и размером выходного слоя.
  • Количество скрытых нейронов должно составлять 2/3 размера входного слоя плюс размер выходного слоя.
  • Количество скрытых нейронов должно быть менее чем в два раза больше размера входного слоя.

Однако непонятно как выбирать количество нейронов в каждом скрытом слои?

Так же из книжки "Штеффен Б. Петерсен" есть цитата про "ваша сеть становится банком памяти"
В контексте переизбытка нейронов и при этом в интернете поднимается задача по уменьшения нейронов, а если я хочу наоборот.
Как посчитать нейросеть для тупого запоминания выборки?
Пример для чего она нужна: если мне надо передать информацию с потерями, но много. Тем самым мне порой легче передать веса нейросети которая восстановит информацию.


Если у меня есть огромная выборка на подобии 10`000 разных данных. Вход и выход выедят так.
  • 2 Вход
  • 3 Выход

Тогда правила выше нарушаются и мне надо будет делать большие слои. А как тогда посчитать их количество?

Еще вопрос про скорость обучения. Всегда говорится о том что чем меньше этот коэффициент тем точнее нейросеть, но медленно обучается и наоборот.
А как понять как зависит коэффициент от выборки?
Например при малой сети и соответственно выборки коэффициент можно повысить и не потеряете в точности, а когда наоборот есть кокаете эмпирическая формула.

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

Почему при увеличении слоев сеть порой тупеет.
Как нам преподаватель на лекции говорил, что можно запомнить чем больше слоев тем больше возможностей может решать нейросеть и тем дольше она обучается. Это понятно так как линейную функции можно описать и квадратичным уравнением (аналогия на количество слоев). Но как я заметил повышая количество слоев сеть сначала умнеет, а потом тупеет при этом быстрее чем умнела?

Заранее благодарю за ответы.
P.S. Извините если вопросы были глупыми. Но сокурсники вообще еще за лабораторные работы не притрагивались. Так что спросить у них я не могу.
  • Вопрос задан
  • 570 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Отвечу на что смогу.
> Как посчитать нейросеть для тупого запоминания выборки?
> Почему обучая нейросеть она может менять свой процент правильности?
> Почему при увеличении слоев сеть порой тупеет.
Это называется переобучение. Если очень наглядно, то это можно представить так:
underfitting_and_overfitting_in_machine_learning_image.png
Слева - недостаточно сложная сеть. Она не может приспособиться к сложности данных, и даёт только грубое подобие той закономерности, которую мы моделируем.
Справа - чрезмерно сложная сеть. Она очень хорошо вписывается в обучающую выборку (точки на графики), но если ей дать промежуточные точки (т.е. те. которых не было в обучаяющей выборке), она будет давать сильно отличающиеся от реальных ответы. Это и есть "сеть зазубрила выборку" (подразумевается "вместо того, чтобы понять её закономерности").
Твоя задача как архитектора сети - выбрать такие гиперпараметры (это то, что ты выбираешь до обучения - число слоёв, размер слоёв, скорость обучения, функция активации и т.д.), чтобы сеть не переобучалась.
Собственно, на графике ошибки сети это как раз выглядит так:
overfitting-and-underfitting-wrt-model-error-vs-complexity.png
Синяя кривая - ошибка на обучающей выборке. Желтая - на контрольной. По оси X - сложность сети.
Тогда твоё поведение объясняется так. Сложная сеть сначала быстро приспосабливается к выборке (быстро падает ошибка на обоих выборках), а потом начинает зазубривать обучающую выборку (и набирать ошибку на контрольной, так как перестаёт понимать закономерности). Если ты это наблюдаешь - сеть слишком сложная.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы