глубокое обучение для задач, не связанных с имиджем и не являющихся НЛП?

12

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

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

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

spore234
источник
1
Возможно, вам лучше рассмотреть другой подход, например, XGBoost, в зависимости от того, сколько «много наблюдений». Можете ли вы уточнить, является ли ваша цель конкретно попробовать подходы глубокого обучения или добиться максимальной точности?
Нил Слэйтер
@NeilSlater моей целью было бы добиться более высокой точности, чем установленные методы, такие как xgboost, если это возможно в таком случае
spore234
1
Это возможно, но по моему опыту маловероятно, если у вас действительно много данных.
Нил Слейтер
Matlab предоставляет документацию о «Советы и хитрости глубокого обучения». У меня был тот же вопрос, и на странице было очень полезное руководство с хорошими примерами. например, вам может понадобиться последовательность для последовательности / классификации / регрессии временных рядов с использованием глубокого обучения.
Сами Навеси

Ответы:

10

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

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

По моему опыту, пытаясь использовать глубокие (-и обычно, ~ 5 слоев) нейронные сети в соревнованиях Kaggle:

  • Dropout по-прежнему очень эффективен для регуляризации и повышения точности

  • Нормализация ввода - обычно означает 0, стандартное отклонение 1, важно

  • Функции активации скрытого слоя могут иметь значение. Хотя ReLU уменьшает некоторые проблемы с исчезающими градиентами, по моему опыту, он менее устойчив с несигнальными данными, и вам понадобится другая форма. Если у вас есть только несколько слоев, тогда сигмоид или танх по-прежнему работают нормально. В противном случае обратите внимание на протекающие ReLU, PReLU, ELU и другие варианты ReLU, которые пытаются исправить проблемы с «мертвыми» нейронами.

  • Используйте оптимизаторы, разработанные для глубокого обучения, такие как Adam, Adagrad или RMSProp.

  • Используйте подход инициализации веса, который работает с глубоким обучением, такой как Glorot.

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

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

Нил Слэйтер
источник
1

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

Я считаю термины «глубокое обучение» вводящими в заблуждение: сеть не учится, вы можете только обучать ее.

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

  • Многослойность: если ваши данные не имеют порядка и структуры имеют фиксированную позицию.

  • Рекурсивные сети: если порядок данных важен для классификации

  • Свертка: если ваши данные имеют структуры, подобные изображениям, но не имеют фиксированной позиции.

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

Йохан ван Бреда
источник