Узнайте о том, как на практике можно создавать нейронные сети для конкретных приложений.

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

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

Взгляд на архитектуру нейронной сети (NNA) с другой точки зрения

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

Представьте себе реку; река данных. Эта река не движется с заданной скоростью, но река поворачивает, сужается, разветвляется, возвращается, петляет… вы поняли. Реки текут через разные ворота, сужаются ручьи, склоны и даже впадают в озера!

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

Именно поэтому найти эту зону златовласки сложнее, чем вы думаете: вы работаете с бесчисленным множеством переменных, и ваши данные должны соответствовать требуемой архитектуре нейронной сети.

По сути:

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

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

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

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

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

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

  1. CNN используют уровни объединения, чтобы определить особенности изображения и упростить количество требуемых параметров. Он выполняет линейное сканирование набора данных, собирая только самую важную информацию.
  2. RNN возвращают выходные данные в тот же уровень для ощущения памяти для анализа очень конкретных тенденций. Зацикливая выходные данные в качестве входных, вы позволяете определенным нейронам памяти преждевременно искать определенные закономерности в данных.
  3. В интеграции с блочно-разреженным графическим процессором используются разреженные слои с нулями для уменьшения мощности графического процессора, необходимой для слоев нейронной сети и определения наиболее релевантных связей между вашими входными данными.
  4. Алгоритмы ядра - это дополнительный уровень в нейронных сетях для извлечения признаков с помощью линейных операций над нелинейными задачами.

Здесь происходит кое-что интересное: у вас есть все эти структуры, работающие, чтобы использовать линейную или нелинейную операцию с вашими входными данными, чтобы сопоставить их с общим количеством выходных данных. Единственное, на чем мы не склонны сосредотачиваться, - это на том, как мы это делаем и какой зачастую лучший метод. Мы ищем лучшую инвариантность, отзывчивость или эффективность?

Вывод: мы можем организовать слои и их заданные линейные операции из некоторых абстрактных требований или функций в математические ссылки потока данных.

Как мне это использовать сейчас?

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

  1. Разберитесь в проблеме и определите свои потребности, чтобы определить соответствующие факторы и функции.

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

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

Позже команда разработала новый метод секвенирования под названием DeepVariant, который вместо использования LSTM (традиционный подход к идентификации патогенных последовательностей) превратил проблему в проблему CNN, чтобы лучше визуализировать и отобразить распространенность определенных последовательностей и их взаимодействие с другими генами в тело.

2. Избегайте фрагментации сети и ненужных нейронов, чтобы предотвратить переобучение.

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

В общем, лучший способ - уменьшить размерность вашей модели, чтобы не допустить, чтобы функция высокого порядка отображала ваш обучающий набор с почти 100% точностью. Показатели отсева - это полезное решение, позволяющее определить и переоценить потребность в нейронах в ваших слоях. Хорошие показатели отсева варьируются от 0,1 до 0,5 (вероятность обучения нейрона).

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

3. Используйте различные механизмы, которые уже разработаны

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

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

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

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

4. Больше слоев, меньше нейронов и простота операций

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

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

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

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

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

Хорошо, и что теперь? Как разработчик, вы должны понимать не только проблему, которую вы пытаетесь решить, но и связывать ее с двумя концепциями: потеря информации и сложность информации.

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

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

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

В заключение, какие выводы?

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

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

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

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

Спасибо, что нашли время прочитать это, и я надеюсь, что вы что-то поняли. Если вы хотите получить более подробную техническую информацию или просто связаться со мной, вы можете найти меня в LinkedIn, Электронная почта или GitHub.