Приходите получить свои вкусности глубокого обучения

Я пишу информационный бюллетень для учащихся под названием Mighty Knowledge. Каждый новый выпуск содержит ссылки и основные уроки из самого лучшего контента, включая цитаты, книги, статьи, подкасты и видео. Каждый выбран специально для того, чтобы научиться жить более мудрой, счастливой и полной жизнью. Зарегистрируйтесь здесь.

Когда вы в последний раз видели теорию, 100% совпадающую с практикой в ​​Deep Learning? Это случается очень редко! В исследовательской статье говорится об одном, но результаты в реальном мире часто бывают совершенно разными.

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

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

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

(1) Размер крупной партии

Теоретически, больший размер мини-пакета должен помочь сети сойтись к лучшему минимуму и, следовательно, к лучшей конечной точности. Люди обычно застревают здесь из-за памяти графического процессора, поскольку самые большие потребительские графические процессоры, которые можно купить, достигают только 12 ГБ (для Titan X) и 16 ГБ в облаке (для V100). Есть два способа обойти эту проблему:

(1) Распределенное обучение: разделите обучение на несколько графических процессоров. на каждом этапе обучения ваша партия будет разделена между доступными графическими процессорами. Например, если у вас размер пакета из 8 и 8 графических процессоров, то каждый графический процессор будет обрабатывать одно изображение. Затем вы объедините все градиенты и результаты в конце. Вы получаете небольшой удар от передачи данных между графическими процессорами, но все же получаете большой прирост скорости от параллельной обработки. Эта функция прямо из коробки поддерживается многими библиотеками глубокого обучения, в том числе Keras.

(2) Изменение размера пакета и изображения во время обучения. Одна из причин, по которой многие исследовательские работы могут сообщать об использовании таких больших размеров пакетов, заключается в том, что многие стандартные наборы исследовательских данных содержат изображения, которые не очень большой. Например, при обучении сетей на ImageNet большинство современных сетей использовало культуры от 200 до 350; конечно, у них могут быть большие партии с такими маленькими размерами изображений! На практике, благодаря современным технологиям камеры, большую часть времени мы работаем с изображениями с разрешением 1080p или, по крайней мере, не слишком далекими от него.

Чтобы обойти эту небольшую неровность на дороге, вы можете начать тренировку с меньших изображений и большего размера пакета. Сделайте это, уменьшив выборку тренировочных образов. После этого вы сможете объединить намного больше из них в одну партию. С большим размером пакета + маленькими изображениями вы уже сможете получить неплохие результаты. Чтобы завершить обучение вашей сети, настройте ее с меньшей скоростью обучения и большими изображениями с меньшим размером пакета. Это заставит сеть повторно адаптироваться к более высокому разрешению, а более низкая скорость обучения не позволит сети отклониться от хорошего минимума, найденного в большом пакете. В результате ваша сеть может получить хороший минимум от большого пакетного обучения и хорошо работает с вашими изображениями с высоким разрешением после точной настройки.

(2) Мини-настройки модели

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

Я призываю всех ознакомиться с официальным кодом исследовательской статьи, чтобы вы могли увидеть точный код, который исследователи использовали для получения своих результатов. Это также даст вам хороший шаблон для работы, чтобы вы могли быстро внести свои собственные небольшие настройки и изменения, чтобы увидеть, улучшают ли они модель. Также полезно изучить некоторые публичные повторные реализации моделей, поскольку они могут содержать код, с которым экспериментировали другие, который в итоге улучшил исходную модель. Ознакомьтесь с архитектурой ResNet ниже и тремя изменениями, которые были обнаружены в некотором общедоступном коде. Они выглядят крошечными, но каждый из них дает заметное повышение точности без каких-либо изменений во времени выполнения; ResNet-D дал полный 1% прирост точности Top-1.

(3) Усовершенствованные методы обучения

То, как обучается глубокая сеть, часто зависит как от конкретного приложения, так и от группы исследователей, фактически проводящей обучение! Знание того, как правильно обучить вашу сеть, может повысить точность на 3–4%! Это навык, приобретенный как на основе знания глубоких сетей, так и просто на практике. К сожалению, большинство людей не уделяют много внимания обучению и ожидают, что сеть волшебным образом принесет им отличные результаты!

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

Вот мой личный фаворит.

Оптимизатор Adam очень прост в использовании и сам по себе имеет хорошую скорость обучения. SGD, с другой стороны, обычно дает вам хороший прирост на 1-2% по сравнению с Adam, но его намного сложнее настроить. Итак, начнем с Адама: просто установите не слишком высокую скорость обучения, обычно установленную по умолчанию на уровне 0,0001, и вы обычно получите очень хорошие результаты. Затем, как только ваша модель начнет насыщаться Адамом, выполните точную настройку с помощью SGD с меньшей скоростью обучения, чтобы выжать последний бит точности!

(4) Трансферное обучение

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

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

В общем, модели с более высокой точностью (относительно друг друга в одном наборе данных) лучше подходят для передачи обучения и дают вам лучшие конечные результаты. Единственное, о чем следует помнить, - это выбрать предварительно обученную сеть для трансферного обучения в соответствии с вашей целевой задачей. Например, использование сети, предварительно обученной для беспилотных автомобилей, в наборе данных для медицинской визуализации было бы не такой уж хорошей идеей; это огромный разрыв между доменами, поскольку сами данные сильно различаются. Лучше тренироваться с нуля, а не начинать свою сеть с предвзятым отношением к данным, которые полностью отличаются от медицинских изображений!

(5) Необычное увеличение данных

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

Но современные достижения выходят за рамки этого.

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

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

Любите учиться?

Следуйте за мной в твиттере, где я публикую все о новейших и величайших достижениях искусственного интеллекта, технологий и науки!