Как ускорить разработку алгоритма?

18

Работая над исследовательским анализом данных и разработкой алгоритмов, я обнаружил, что большую часть своего времени я провожу в цикле визуализации, написания некоторого кода, запуска на небольшом наборе данных, повторения. Имеющиеся у меня данные, как правило, относятся к типу компьютерного зрения / слияния сенсоров, а алгоритмы очень важны (например, обнаружение и отслеживание объектов и т. Д.), И стандартные алгоритмы в этом контексте не работают. Я считаю, что это занимает много итераций (например, чтобы набрать тип алгоритма или настроить параметры в алгоритме, или чтобы получить правильную визуализацию), а также время выполнения даже для небольшого набора данных довольно большое, поэтому все вместе это занимает некоторое время.

Как ускорить разработку самого алгоритма и сделать его более масштабируемым?

Некоторые конкретные проблемы:

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

Как работать с большими наборами данных во время разработки? (Часто переход от маленького к большому набору данных - это когда появляется куча нового поведения и новых проблем)

Как можно быстрее настроить параметры алгоритма?

Как применить инструменты типа машинного обучения к разработке самого алгоритма? (Например, вместо того, чтобы писать алгоритм вручную, напишите несколько простых строительных блоков и объедините их способом, извлеченным из проблемы, и т. Д.)

Алекс я
источник

Ответы:

7

Прежде всего, если ваши данные имеют столько различий (в зависимости от времени, контекста и других), что затрудняют применение единой стратегии, чтобы справиться с ними, вам может быть интересно сделать предварительную временную / контекстную / .. Характеристика набора данных. Характеризация данных, т. Е. Извлечение информации о том, как объем или специфика контента изменяется в соответствии с некоторыми критериями, обычно обеспечивает лучшее понимание (более сжатое и точное), чем просто вывод алгоритмов методом «грубой силы».

Итак, отвечая на каждый вопрос:

  1. характеристика, безусловно, является средством уменьшения количества итераций при попытке выбора правильных алгоритмов для конкретных данных;
  2. если у вас есть дискретный набор критериев, по которым изменяются ваши данные, становится гораздо проще масштабировать решения, так как будет знать, какую информацию вы получите / потеряете, если бы применялись более простые / конкретные решения;
  3. после характеристики вам также будет легче выбирать параметры, так как вы будете знать, с какими конкретными данными вы будете иметь дело;
  4. наконец, вы можете использовать алгоритмы интеллектуального анализа данных / машинного обучения для поддержки этой характеристики. Это включает в себя использование:
    • алгоритмы кластеризации, чтобы уменьшить размерность данных;
    • алгоритмы классификации, чтобы помочь определить конкретные свойства, которые могут представлять данные в зависимости от времени / контекста / ...;
    • правила ассоциации, чтобы предсказать конкретные знания из набора данных, а также улучшить / детализировать данные, используемые для последующего анализа;
    • и другие возможные стратегии и анализы.

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

Рубенс
источник
5

Две вещи, которые вы можете найти полезными:

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

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

damienfrancois
источник
4

Предполагается, что вы, вероятно, видели эту демонстрацию YouTube и связанную с ней техническую беседу Google , связанную с этими документами:

И этот набор кода на GitHub для OpenTLD . Если вы отметите здесь «read me» на GitHub, вы увидите, что электронная почта автора (Zdenek Kalal) указана в списке, поэтому, возможно, стоит отправить ему электронное письмо о ваших вопросах или даже пригласить его ответить на этот вопрос.

просчеты
источник