Введение в 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. Очевидно, чем меньше значение, тем лучше наши прогнозы.

Существует гораздо больше вопросов о функции затрат. Типы их могут меняться в зависимости от того, чего мы хотим достичь. Так что это просто для того, чтобы пробудить ваш мозг и познакомить вас с концепциями.

Выпуклые против невыпуклых

Я расскажу об этом более подробно позже, но я решил просто отметить тему. Я уже говорил о градиентном спуске как о способе поиска минимума функции. В машинном обучении функция потерь или затрат — это тот минимум, который мы хотим найти. Мы не хотим найти какой-то минимум, мы хотим найти глобальный минимум. Место, где мы наиболее правы. И это очень трудно сделать, когда функция имеет отчетливый локальный минимум. Как на рисунке ниже.

Здесь задействовано много математики, и я представлю ее, когда мы будем обсуждать логистическую регрессию :). А пока немного кода в тензорном потоке, кодифицирующего этот урок: