Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как максимально улучшить архитектуру нейронной сети?

Программирование+4
Анонимный вопрос
  ·   · 9,9 K
Разработчик искусственного интеллекта...  · 27 мар 2022
100%-ых способов улучшить сеть не существует, всегда всё зависит от конкретной задачи. Но есть 3 метода, помогающие ПОЧТИ всегда: аугментации, дропаут и батч-нормализация.
Подробнее о каждом:
  1. Аугментации - способ расширить датасет за счёт уже имеющихся в нём элементов. Например, если ваш датасет состоит из фотографий кошек и собак, то с аугментациями вы можете добавить в него новые фотографии, являющиеся обработанными старыми. Под обработкой подразумеваются самые разные методики (переворот изображения по горизонтали или вертикали, добавление шума на изображениях, увеличение или уменьшение картинки, засветление или затемнение случайных областей картинки и т.д.) Всё это позволяет решать сразу две задачи: во-первых, увеличивает набор данных, во-вторых, «закаляет» нейросеть к помехам и шумам на фотографиях. Подробнее об аугментациях можно прочитать здесь: https://habr.com/ru/company/smartengines/blog/499566/
  2. Дропаут - специальная функция нейросетевых слоёв, которая позволяет во время обучения приравнивать значения какого-то процента нейронов слоя к нулю. Это нужно для того, чтобы нейросеть не переобучилась. Такая методика не даёт нейросети зациклиться на значениях каких-то определённых нейронов, ведь все они на разных итерациях обучения случайным образом могут быть приравнены к нулю. Поэтому нейросеть пытается более качественно настраивать веса между всеми нейронами, что зачастую бывает полезно. Подробнее про дропаут здесь: https://habr.com/ru/company/wunderfund/blog/330814/
  3. Батч-нормализация - способ статистически приравнивать между собой батчи обучающей выборки (случайные объединения элементов датасета в одну группу, на которой разом пройдёт итерация обучения нейросети). Например, если вы создаёте нейросеть для классификации свежих и несвежих яблок, то в вашей обучающей выборке наверняка будут присутствовать яблоки разных цветов и, скорее всего, их будет приблизительно одинаковое количество. Но при группировке батчей, в этот самый батч могут попасть, например, только красные яблоки или, что более вероятно, их будет значительно больше, чем яблок других цветов. В таком случае, разброс элементов в батче может сильно отличаться от разброса элементов во всём датасете, что, очевидно, негативно скажется на нейросети (зачастую просто замедлит её обучение). И вот батч нормализация позволяет статистически приводить все батчи к единому виду, чтобы нейросеть обучалась более последовательно и качественно. Подробнее об этом здесь: https://proproprogs.ru/neural_network/batch-normalization-batch-normalizaciya-chto-eto-takoe
Также приложу к этому ответу фотографию того, как батч-нормализация интегрируется в нейросети.
Надеюсь, мой ответ был полезен. Удачи!
Openstack DevOps and IBM/Informix Certified DBA...  · 24 мар 2022
К сожалению, нет универсального способа определить априори наилучшее количество нейронов и количество слоев для нейронной сети, имея только описание проблемы. Существует даже не так много указаний, чтобы определить хорошие... Читать далее