Листинг 2.12.
Обучение модели на данных о бостонской недвижимости
await model.fit(tensors.trainFeatures, tensors.trainTarget, {
batchSize: BATCH_SIZE
epochs: NUM_EPOCHS,
});
В вебприложении Bostonhousing мы продемонстрировали вам график функции
потерь по мере обучения. Для построения этого графика нам понадобился обратный
вызов
model.fit()
для обновления UI. API обратных вызовов метода
model.fit()
позволяет пользователю передавать функции обратного вызова, выполняемые в слу
чае конкретных событий. Полный список событий, запускающих обратные вызовы,
по состоянию на версию 0.12.0 будет таким:
onTrainBegin
,
onTrainEnd
,
onEpochBegin
,
onEpochEnd
,
onBatchBegin
и
onBatchEnd
.
Листинг 2.13.
Обратные вызовы в методе model.fit()
let trainLoss;
await model.fit(tensors.trainFeatures, tensors.trainTarget, {
batchSize: BATCH_SIZE,
epochs: NUM_EPOCHS,
callbacks: {
onEpochEnd: async (epoch, logs) => {
Глава 2. Приступим: простая линейная регрессия в TensorFlow.js
99
await ui.updateStatus(
`Epoch ${epoch + 1} of ${NUM_EPOCHS} completed.`);
trainLoss = logs.loss;
await ui.plotData(epoch, trainLoss);
}
}
});
Последняя пользовательская настройка, представленная здесь, предназначена
для проверочных данных. Проверка
1
— понятие машинного обучения, о котором
стоит сказать несколько слов отдельно. В предыдущем примере со временем ска
чивания мы отделили обучающие данные от контрольных, чтобы получить непред
взятую оценку того, как наша модель будет работать на новых, еще не виденных ею
данных. Впрочем, обычно выделяется еще один фрагмент —
проверочные данные
(validation data). Такие данные отделены как от обучающих, так и от контрольных
данных. Для чего они используются? Специалист по машинному обучению может
воспользоваться результатами модели на проверочных данных и на их основе изме
нить определенные настройки модели
2
, чтобы повысить степень безошибочности на
проверочных данных. Все это замечательно, но если цикл выполняется много раз, то
модель фактически подстраивается под проверочные данные. И если воспользовать
ся теми же проверочными данными для оценки итоговой безошибочности модели,
результат этой оценки не получится экстраполировать в том смысле, что модель
уже видела данные, и результат оценки не обязательно будет адекватно отражать ее
работу на новых данных в будущем. Именно поэтому проверочные данные отделя
ют от контрольных. Основная идея заключается в подгонке модели на обучающих
данных и подстройке ее гиперпараметров на базе ее оценки на проверочных данных.
А когда результаты будут нас удовлетворять, мы только один раз оценим работу
модели на контрольных данных, чтобы получить итоговую, обобщаемую оценку
качества ее работы.
Давайте резюмируем, что такое обучающий, проверочный и контрольный на
боры данных и как следует использовать их в TensorFlow.js. Не во всех проектах
применяются все три эти набора. Зачастую при быстром изучении данных или в ис
следовательских проектах используются только обучающие и проверочные данные,
без выделения набора «чистых» данных для контроля. Такой вариант хотя и менее
строгий, но иногда позволяет рациональнее использовать ограниченные ресурсы.
z
z
Обучающие данные
— для подборки весов модели с помощью градиентного спу
ска.
Применение в TensorFlow.js. Обычно обучающие данные передаются с помощью
основных аргументов (
x
и
y
) вызова
Model.fit(x,
y,
config)
.
z
z
Проверочные данные
— для выбора структуры и гиперпараметров модели.
1
Иногда также называется валидацией. —
Примеч. пер.
2
В качестве примеров подобных настроек можно привести количество слоев модели, размер
слоев, тип оптимизатора, скорость обучения и т. д. Эти так называемые гиперпараметры
модели мы подробнее рассмотрим в подразделе 3.1.2.
100
Do'stlaringiz bilan baham: |