Читать книгу Основы глубокого обучения - Нихиль Будума - Страница 13

Глава 2. Обучение нейросетей с прямым распространением сигнала
Проблема фастфуда

Оглавление

Мы начинаем понимать, как решать некоторые интересные задачи с помощью глубокого обучения, но остается важный вопрос: как определить, какими должны быть векторы параметров (веса всех соединений нейросети)? Ответ прост: в ходе процесса, часто именуемого обучением (рис. 2.1). Мы демонстрируем нейросети множество обучающих примеров и последовательно модифицируем веса, чтобы минимизировать ошибки, которые уже были совершены. Продемонстрировав достаточное число примеров, мы ожидаем, что нейросеть будет эффективно решать поставленную задачу.


Рис. 2.1. Нейрон, который мы хотим обучить решать проблему фастфуда


Вернемся к примеру, который упоминали в предыдущей главе при обсуждении линейного нейрона. Итак: каждый день мы покупаем в ресторане быстрого обслуживания обед – бургеры, картошку и газировку, причем по несколько порций каждого наименования. Мы хотим предсказывать, сколько будет стоить обед, но ценников нет. Кассир сообщает только общую цену.

Мы хотим обучить один линейный нейрон решать эту задачу. Как?

Один из вариантов – разумно подбирать примеры для обучения. Для одного обеда купим один бургер, для второго – одну порцию картошки, для третьего – один стакан газировки. В целом разумный подбор примеров – хорошая идея. Многие исследования показывают, что, создав хорошую подборку данных для обучения, вы сможете заметно повысить эффективность нейросети. Но проблема использования только этого подхода в том, что в реальных ситуациях он редко приближает нас к решению. Например, при распознавании изображений аналога ему нет и решения мы не найдем.

Нам нужно найти вариант, который поможет решать задачу в общем случае. Допустим, у нас очень большой набор обучающих примеров. Это позволит нам вычислить, какие выходные значения выдаст нейросеть на i-м примере, при помощи простой формулы. Мы хотим обучить нейрон и подбираем оптимальные веса, чтобы свести к минимуму ошибки при распознавании примеров. Можно сказать, мы хотим свести к минимуму квадратичную ошибку во всех примерах, которые встретим. Формально, если мы знаем, что t(i) – верный ответ на i-й пример, а y(i) – значение, вычисленное нейросетью, мы хотим свести к минимуму значение функции потерь E:


Квадратичная ошибка равна 0, когда модель дает корректные предсказания для каждого обучающего примера. Более того, чем ближе E к 0, тем лучше модель. Наша цель – выбрать такой вектор параметров θ (значения всех весов в этой модели), чтобы E было как можно ближе к 0.

Вы, возможно, недоумеваете: зачем утруждать себя функцией потерь, если проблему легко решить с помощью системы уравнений. В конце концов, у нас есть наборы неизвестных (весов) и уравнений (одно для каждого примера). Это автоматически даст нам ошибку, равную 0, если обучающие примеры подобраны удачно.

Хорошее замечание, но, к сожалению, актуальное не для всех случаев. Мы применяем здесь линейный нейрон, но на практике они используются редко, ведь их способности к обучению ограничены. А когда мы начинаем использовать нелинейные нейроны – сигмоиду, tanh или усеченный линейный, о которых мы говорили в конце предыдущей главы, – мы не можем задать систему уравнений! Так что для обучения явно нужна стратегия получше[9].

9

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

Основы глубокого обучения

Подняться наверх