December 1st, 2017

moose, transparent

software 2.0

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

Карпати пишет, что новое поколение нейронных сетей, которое совершило и продолжает совершать гигантский рывок по своим возможностям с 2012 года, можно считать не столько полезной техникой, сколько новым видом программирование. В отличие от обычного программирования, Software 1.0, в котором программист дает компьютеру точную и обычно весьма сложную по своей иерархии последовательность инструкций (алгоритм), в Software 2.0 мы начинаем с многочисленных примеров того, как наша программа должна себя вести, а потом находим "программу" (являющуюся по сути набором весов для всех узлов нейронной сети) в виде достаточно хорошего приближения к этой цели. Конечно, далеко не все задачи поддаются такому способу решения, по крайней мере сейчас, но, как пишет Карпати,

"It turns out that a large portion of real-world problems have the property that it is significantly easier to collect the data than to explicitly write the program."

(например, намного легче собрать несколько десятков тысяч фотографий кошек и собак, и обозначить для каждой правильно, кошка на ней или собака, чем написать алгоритм - иерархическую программу в смысле Software 1.0 - который "смотрит" на картинку, анализирует ее и решает, кошка там или собака)

Название "Software 2.0" это всего лишь лозунг, и я не испытываю к нему сильных чувств; но то, что Карпати смотрит на это, как на совершенно новый и отдельный способ программирования, позволяет ему кратко и убедительно рассказать как о его достоинствах по сравнению с "Software 1.0", так и о недостатках. Не буду пересказывать здесь целиком и так краткую заметку Карпати, но отмечу отдельно меткую характеристику одного из недостатов - того, что нейронные сети часто дают нам лучшее решение, чем другие методы, но намного менее "прозрачное" и поддающееся объяснению:

"Across many applications areas, we’ll be left with a choice of using a 90% accurate model we understand, or 99% accurate model we don’t."

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