Красивая ловушка нейронных сетей

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

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

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

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

  • Адам - оценка адаптивного момента
  • AdaGrad - адаптивный градиент
  • AdaDelta - расширение AdaGrad
  • Алгоритм Нестерова
  • RMSProp - среднеквадратичное распространение
  • SGD - стохастический градиентный спуск.
  • LBFGS - алгоритм Бройдена – Флетчера – Гольдфарба – Шанно с ограниченной памятью.
  • Линия - линейный алгоритм Брезенхема.
  • Сопряженный градиент
  • алгоритм без Гессе (также известный как усеченный Ньютон)

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

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

нарисованное вокруг начала координат может выглядеть вот так красотка!

Да, можно утверждать, что с такими ситуациями можно справиться аналитически. Но красота большинства алгоритмов машинного обучения начинается там, где заканчивается вычисление - по сути, нам не понадобились бы эти вычислительные подходы, если бы мы могли просто достичь результата, используя ручку и немного (много) бумаги для заметок. Мы действительно нуждаемся в этих алгоритмах и широко используем их для функций, где МЫ НЕ МОГЛИ найти желаемый минимум аналитически. Довольно часто это оказывается даже математически невозможным !!!

Так что это похоже на ловушку. Наши лучшие модели дают не совсем надежные результаты! В ситуации, когда имеется много локальных минимумов с равными значениями функции потерь, это может считаться не очень важным, но что произойдет, если наш «истинный» глобальный минимум будет иметь значительно меньшую стоимость, чем любой из локальных минимумов, которые мы нашли с нашим разнообразием подходы к оптимизации градиентного спуска? В большинстве случаев мы не можем даже построить нашу функцию потерь (как в случае с многомерными проблемами - 99% моделей с более чем парой функций), и даже если бы мы могли, наши градиенты довольно часто оставались неотличимо маленькими.

Это представляет собой открытый вопрос и большое поле для академических исследований. Как отмечают Ян Годфеллоу, Йошуа Бенжио и Аарон Курвиль в своем учебнике по глубокому обучению: «Есть ли у сетей, представляющих практический интерес, много локальных минимумов высокой стоимости и сталкиваются ли с ними алгоритмы оптимизации, остается открытым вопросом. В течение многих лет большинство практиков считало, что локальные минимумы - обычная проблема, мешающая оптимизации нейронных сетей. Сегодня, похоже, это не так. Проблема остается активной областью исследований, но теперь эксперты подозревают, что для достаточно больших нейронных сетей большинство локальных минимумов имеют низкое значение функции затрат, и что не так важно найти истинный глобальный минимум, а не найти точку в пространство параметров, имеющее низкую, но не минимальную стоимость. »(Ян Годфеллоу и др.« Глубокое обучение », MIT Press, 2016)

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