Давайте посмотрим на будущее через 30 лет. Давайте будем оптимистичными и предположим, что области, связанные с машинным обучением, продолжают развиваться так же быстро, как мы видели за последние 10 лет. Это было бы здорово, но какова будет роль традиционной алгоритмики в таком будущем?
Здесь под «традиционной алгоритмикой» я подразумеваю обычный процесс, которому мы следуем в TCS: формализовать четко определенную вычислительную задачу , спроектировать алгоритмы для решения проблемы и доказать формальные гарантии производительности .
Теперь , каковы области применения , в которых мы должны использовать традиционный дизайн и анализ алгоритма и в будущем, и весьма маловероятно , что любые успехи машинного обучения сделают традиционную алгоритмика в основном не имеет значение?
Поначалу это может показаться глупым вопросом: конечно, в будущем нам потребуется возможность сортировки, поиска, индексации и т. Д.! Конечно, нам нужно уметь эффективно выполнять преобразования Фурье, умножать большие матрицы, находить кратчайшие пути, решать задачи линейной оптимизации!
Но опять же, как только вы начнете присматриваться к приложениям, в которых мы традиционно используем алгоритмы, которые мы разрабатываем, совсем не ясно, что традиционный дизайн и анализ алгоритмов - правильный ответ на такие проблемы: в приложениях, связанных с поиском , обычно мы заинтересованы в том, чтобы найти что-то, что близко соответствует человеку в каком-то смутном неопределенном смысле (например, семантическое сходство), а не то, что является оптимальным в некотором математическом смысле (например, минимальное расстояние редактирования). В приложениях, связанных с планированием маршрутаОбычно мы заинтересованы в поиске хороших маршрутов на основе примеров (например, другие люди предпочитают это), а не маршрутов, которые являются оптимальными в некотором математическом смысле (например, кратчайшее расстояние или самая низкая цена). И если у вас есть какой-то нечеткий, нечетко выраженный человеческий компонент на картинке, возможно, нам лучше научить компьютер давать хорошие ответы на примерах, чем пытаться позволить исследователю TCS придумать с формальной вычислительной проблемой, которую мы можем решить с помощью традиционного алгоритма проектирования и анализа.
Итак, каковы области применения (предпочтительно реальные и прямые промышленные приложения), в которых совершенно ясно, что то, что мы делали в алгоритмике в прошлом, также будет правильным (и единственным возможным) способом достижения прогресса в будущее?
Алгоритмы, которые используются в качестве подпрограмм в методах машинного обучения, выглядят как очевидный кандидат на будущее, но это сильно зависит от конкретной технологии машинного обучения, которую мы используем, и, как мы видели в последние десять лет или около того, это может быстро измениться ,