228
Часть II • Введение в TensorFlow.js
Рис. 5.14.
Модель обнаружения объектов и
лежащая в
ее основе пользовательская функция потерь. Код формирования модели
(слева)
вы
можете найти в
листинге
5.9. Описание этой пользовательской функции потерь
— в
листинге
5.10
Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей
229
Листинг 5.10.
Описание пользовательской функции потерь для задачи обнаружения объектов
Наша пользовательская функция потерь получает на входе
yTrue
и масштаби
рует его первый столбец (индикатор 01 формы целевого объекта) в соответствии
с
CANVAS_SIZE
, оставляя остальные столбцы неизменными. Далее она вычисляет
среднеквадратичную погрешность (MSE) между значением
yPred
и масштабиро
ванным
yTrue
. Зачем мы масштабируем 01метку формы целевого объекта в
yTrue
?
Нам хотелось бы, чтобы выдаваемое моделью число отражало ее предсказание
относительно формы целевого объекта — прямоугольник или треугольник. Если
точнее, она выдает на выходе близкое к 0 число в случае треугольника и близкое
к
CANVAS_SIZE
(224) число в случае прямоугольника. Так что во время вывода мож
но просто сравнить первое значение из выходного сигнала модели с
CANVAS_SIZE/2
(112), чтобы узнать, что предсказывает модель — форма объекта больше напоминает
треугольник или прямоугольник. Вопрос в том, как оценить безошибочность этого
предсказания формы целевого объекта и придумать функцию потерь. Наш ответ на
этот вопрос: вычислить разницу между возвращаемым числом и индикатором 01,
умноженным на
CANVAS_SIZE
.
Почему мы используем этот метод, а не бинарную перекрестную энтропию, как
в примере с обнаружением фишинговых сайтов в главе 3? Дело в том, что здесь не
обходимо вычислять две метрики безошибочности: одну для предсказания формы
целевого объекта, а вторую — для предсказания ограничивающего прямоугольника.
Вторая задача требует предсказания непрерывных значений, ее можно считать
задачей регрессии. Поэтому естественно будет выбрать для ограничивающих
прямоугольников метрику MSE. Чтобы сочетать ее с другой метрикой, мы «при
творяемся», что предсказание формы целевого объекта — тоже задача регрессии.
Эта уловка позволяет нам использовать одну функцию метрики (вызов
tf.met-
ric.me anSquaredError()
в листинге 5.10) для инкапсуляции функции потерь для
обоих предсказаний.
Но зачем масштабировать индикатор 01 относительно
CANVAS_SIZE
? Если этого
не сделать, модель в итоге будет генерировать числа в интервале 0–1 в качестве ин
дикатора того, предсказывает ли модель, что форма целевого объекта — треугольник
(ближе к 0) или прямоугольник (ближе к 1). Разница между числами в интервале
[0,
1]
, безусловно, намного меньше, чем разницы между координатами настоящего
ограничивающего прямоугольника и предсказанных ограничивающих прямоуголь
ников, расположенными в диапазоне от 0 до 224. В результате сигнал рассогласова
ния от предсказания формы объекта будет совершенно незаметным по сравнению
с сигналом рассогласования от предсказания ограничивающего прямоугольника,
230
Do'stlaringiz bilan baham: |