[БЕЗ_ЗВУКА] В этом уроке мы обсудим многослойную нейронную сеть и различные функции ошибок. Однослойные нейронные сети, которые мы обсуждали ранее, применимы только для линейно разделимых выборок. Например, для конфигурации, представленной на графике, невозможно найти такую плоскость, которая разделяет крестики от ноликов. А для конкретного разделения этой выборки лучше всего подходит кривая линия. Рассмотрим двухслойную нейронную сеть. Двухслойная нейронная сеть — это линейная комбинация нейронов или однослойных нейронных сетей. Каждый нейрон — это линейная комбинация, которая представлена внутри внутренних скобок, и таких нейронов здесь D (большое). Внешние скобки — это как раз линейные комбинации или веса этих нейронов — нейронов первого слоя. σ со значком 2 — это функция активации второго слоя нейронной сети. Или то же самое в векторных обозначениях: двухслойная нейронная сеть — это следующая суперпозиция: функция активации σ со значком 2 (функция активации второго слоя), аргументом этой функции являются веса (вектор весов второго слоя), умноженные скалярно на сигмы функции активации первого слоя, а аргументом каждого элемента вектора σ первого слоя является скалярное произведение, то есть один из D (большое) нейронов первого слоя. Так как нейронная сеть — это параметрическое семейство функций, то вектор параметров нейронной сети получается соединением всех параметров нейронной сети на всех слоях. Двухслойную нейронную сеть можно представить в виде двух двудольных направленных графов, где исходящая вершина графа связана со всеми входящими вершинами. Этот граф можно дальше продолжать вправо для получения многослойной нейронной сети. В 1991 году Курт Хорник сформулировал Универсальную теорему аппроксимации, которая говорит, что для любой непрерывной функции найдется нейронная сеть a с линейным выходом, которая аппроксимирует эту функцию с заданной точностью. Теорема выполняется для различных функций активации, в частности для функции сигмоид и функции гиперболический тангенс. Для получения же заданной точности необходимо, кроме построения конфигурации нейронной сети, определить ее оптимальные параметры. Рассмотрим проблему качества аппроксимации с помощью следующего графика. На нем по осям абсцисс и ординат отложено значение признаков: x1 и x2. Объекты — синими и оранжевыми кружочками. Искомая неизвестная нам разделяющая поверхность показана пунктирной линией. Текущее значение разделяющей поверхности a, которая зависит от наших объектов x и от вектора параметров w, показана жирной линией, а несколько объектов попали в область, которая принадлежит другому классу вследствие случайной природы выборки. Тем не менее именно вот эту разделяющую поверхность мы называем оптимальной. Сравним ее с другой разделяющей поверхностью. В данном случае веса в той же самой нейросети настроены таким образом, что разделяют текущую выборку корректно, то есть все объекты принадлежат областям своего класса, но при небольшом изменении состава выборки разделение будет неверным и ошибка аппроксимации будет больше. Сеть, которая корректно аппроксимирует текущую обучающую выборку, но плохо аппроксимирует контрольную или какую-то другую выборку той же природы, называется переобученной. Сформулируем задачу нахождения оптимальных параметров нейросети как задачу оптимизации. Введем функцию ошибки Q, которая зависит от параметров. Также она, естественно, зависит от состава нашей выборки и от конфигурации нейросети. Какие есть функции ошибки? Функция ошибки для задачи регрессии называется функция «галочка», или сумма моделей разности между восстановленным значением и фактическим значением зависимой переменной y. Такая функция используется при решении прикладных задач в различных областях, например в финансах или при выполнении технических, физических, химических измерений. Это абсолютная разность между фактом и восстановленным значением. Но эта функция не дифференцируема. Есть дифференцируемая функция ошибки — это сумма квадратов разности между восстановленным значением и фактическим измерением. Для решения задачи классификации важно знать суммарное число несовпадений между восстановленными метками классов и фактическими метками классов. Такая функция ошибки называется «0–1 loss», и здесь квадратными скобками в этом выражении обозначена индикаторная функция. Она возвращает единичку, если выражение истинно, и нолик, если выражение внутри этих скобок ложно. Дифференцируемая функция ошибки в задаче классификации — это функция кросс-энтропия — функция наибольшего правдоподобия в задаче логистической регрессии, которую мы рассматривали ранее. Все 3 функции показаны на графике. В случае задачи регрессии мы видим «галочку» и аппроксимирующую ее непрерывную дифференцируемую функцию параболу (квадрат). В случае пороговой функции «0–1 loss» мы видим аппроксимирующую ее кросс-энтропийную функцию. Итак, с помощью многослойной нейронной сети можно получить аппроксимацию сколь угодно высокой точности. Для этого надо построить оптимальную структуру нейросети и оптимизировать ее параметры. Параметры оптимизируются с помощью минимизации функции ошибки. Существуют дифференцируемые функции ошибки для оптимизации ее параметров. Далее мы рассмотрим различные алгоритмы оптимизации параметров нейронной сети.