В этой статье вы узнаете о практических аспектах того, как заставить вашу нейронную сеть работать хорошо, начиная с таких вещей, как:

I) Настройка гиперпараметров

II) Как настроить ваши данные,

III) Как убедиться, что ваш алгоритм оптимизации работает быстро

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

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

i) Сколько слоев будет в вашей нейронной сети?

ii) Сколько скрытых единиц вы хотите, чтобы на каждом слое было?

iii) каковы темпы обучения?

iv) какие функции активации вы хотите использовать для разных слоев?

Когда вы начинаете работу над новым приложением, практически невозможно правильно угадать правильные значения для всех этих и других вариантов гиперпараметров с первой попытки. Таким образом, на практике прикладное машинное обучение - это очень итеративный процесс, в котором вы часто начинаете с идеи, например, вы хотите построить нейронную сеть из определенного количества слоев, определенного количества скрытых единиц, возможно, на определенных наборах данных и т. Д. на. А затем вам просто нужно его закодировать и попробовать, запустив свой код. Вы запускаете и экспериментируете, и вы получаете результат, который говорит вам, насколько хорошо работает эта конкретная сеть или эта конкретная конфигурация. лучшая и лучшая нейронная сеть. Это может иметь огромное значение, помогая вам быстро достичь хороших результатов в высокопроизводительной модели.

Глубокое обучение играет очень важную роль во многих областях. которые включают в себя обработку естественного языка и компьютерное зрение, распознавание речи и множество приложений, также структурированных, таких как реклама, веб-поиск, например, веб-сайты покупок и т. д.

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

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

Чтобы получить объективную оценку того, насколько хорошо работает ваш алгоритм. Итак, в предыдущую эпоху машинного обучения обычной практикой было взять все ваши данные и разделить их, может быть, на 70% и 30% с точки зрения людей. поговорим о тестовых разделах на 70 и 30 поездов, он использует 70 для обучения и 30 для набора тестов, и если у нас есть набор проверок, у нас может быть 60, 20 и 20, где 60 для обучения, 20 для проверки и оставшиеся 20 наборов тестов. Несколько лет назад это считалось лучшей практикой в ​​машинном обучении.

Если у вас может быть всего 100 примеров, может быть, всего 1000 примеров, может быть, после 10 000 примеров. Такие соотношения были вполне разумными практическими правилами.

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

Таким образом, набор валидации должен быть достаточно большим, чтобы вы могли оценить, скажем, два разных варианта алгоритма или десять разных вариантов алгоритма и быстро решить, какой из них работает лучше. Например, если у вас есть миллион обучающих примеров, вы можете решить, что просто наличия 10 000 примеров в вашем наборе проверки более чем достаточно, чтобы оценить, какой один или два алгоритма работает лучше, и в аналогичном ключе основная цель вашего набора тестов: учитывая ваш окончательный классификатор, чтобы дать вам довольно уверенную оценку того, насколько хорошо он работает, и снова, если у вас есть миллион примеров, возможно, вы можете решить, что 10000 примеров более чем достаточно, чтобы оценить один классификатор и дать вам хорошую оценку Итак, в этом примере, где у вас есть миллион примеров, если вам нужно всего 10 000 для вашего разработчика и 10 000 для вашего теста, ваше соотношение будет примерно таким: 10 000 - это 1% от 1 миллиона, так что у вас будет 98 % поезд, 1% dev, 1% test. И я также встречал приложения, в которых, если у вас есть даже более миллиона примеров, вы можете получить 99,5% тренировок и 0,25% разработчиков, 0,25% теста. Или, может быть, 0,4% отклонение, тест 0,1%.

Ссылка: Улучшение глубоких нейронных сетей: настройка гиперпараметров, регуляризация и оптимизация курсера

Я желаю всем читателям ВЕСЕЛОГО учебного путешествия по науке о данных, и если вам понравились эти сообщения в блоге, хлопните в ладоши.

Профиль LinkedIn