Введение в TensorFlow для разработчиков. Часть 4/?. Одномерная функция потерь
Последняя тема, прежде чем мы займемся машинным обучением :). Это будет немного теоретически, но поверьте мне, в следующей статье все соберется воедино. Функция потерь или функция стоимости — это способ представления ошибки. Между наблюдаемым значением (основанным на реальности) и прогнозируемым значением. Пример, впервые использованный Эндрю Нг в его курсе по машинному обучению, описывает соотношение между площадью дома (в квадратных футах) и его ценой.
+---------+-------------+----------+ | house | square foot | Price($) | +---------+-------------+----------+ | House 1 | 10 | 1000 | | House 2 | 20 | 2000 | | House 3 | 30 | 3000 | | House 4 | 40 | 3000 | | House 5 | 50 | 5000 | +---------+-------------+----------+
Теперь, учитывая приведенные выше данные, допустим, вас попросили спрогнозировать цену дома, и вы пошли и собрали несколько реальных примеров.
+---------+-------------+--------------------+---------------+ | house | square foot | Price($) predicted | Price($) real | +---------+-------------+--------------------+---------------+ | House 1 | 12 | 1150 | 1200 | | House 2 | 15 | 1500 | 1500 | | House 3 | 17 | 1680 | 1700 | +---------+-------------+--------------------+---------------+
Как видите, мы ошиблись дважды. Теперь предположим, что мы хотим угадать несколько раз. Это хорошая идея, чтобы сравнить наши прогнозы. Здесь вступают в игру функции затрат. В этом примере мы будем использовать простой для понимания метод: среднеквадратическая ошибка (MSE).
В приведенном выше уравнении h(x) — результат нашей гипотезы (то, что мы предсказывали). Y представляет то, что мы наблюдали. N - ряд примеров. Итак, чтобы рассчитать MSE для нашего прогноза, мы должны:
Это дает нам округленный результат 166,67. Очевидно, чем меньше значение, тем лучше наши прогнозы.
Существует гораздо больше вопросов о функции затрат. Типы их могут меняться в зависимости от того, чего мы хотим достичь. Так что это просто для того, чтобы пробудить ваш мозг и познакомить вас с концепциями.
Выпуклые против невыпуклых
Я расскажу об этом более подробно позже, но я решил просто отметить тему. Я уже говорил о градиентном спуске как о способе поиска минимума функции. В машинном обучении функция потерь или затрат — это тот минимум, который мы хотим найти. Мы не хотим найти какой-то минимум, мы хотим найти глобальный минимум. Место, где мы наиболее правы. И это очень трудно сделать, когда функция имеет отчетливый локальный минимум. Как на рисунке ниже.
Здесь задействовано много математики, и я представлю ее, когда мы будем обсуждать логистическую регрессию :). А пока немного кода в тензорном потоке, кодифицирующего этот урок: