Глава 2. Приступим: простая линейная регрессия в TensorFlow.js
69
ляет собой функцию, принимающую на входе размер файла и выдающую значения
продолжительности скачивания (см. рис. 2.2). В терминологии глубокого обучения
сеть
(network) иногда используется в качестве синонима слова «модель». Наша
первая модель реализует
линейную регрессию
(linear regression).
Регрессия
в контексте машинного обучения означает, что модель возвращает
вещественные значения, пытаясь подобрать соответствие для целевых признаков.
Этот метод отличен от классификации, при которой выходные сигналы выбираются
из некоего набора вариантов. В задачах регрессии модель, выдающая более близкие
к целевым значения, лучше, чем модель, выдающая более далекие. Лучше, если
модель предсказывает, что скачивание файла размером 1 Мбайт занимает около
0,15 секунды, чем если бы она предсказывала, что оно займет 600 секунд.
Линейная регрессия — особый вид регрессии, при котором выходной сигнал
как функция входного представляет собой прямую линию (или соответственно
плоскость в многомерном пространстве, если входных признаков несколько) (ли
стинг 2.3). Важную роль играет возможность
подстройки
моделей. Это означает
возможность корректировки вычислений, переводящих входной сигнал в выходной.
Мы воспользуемся этим свойством для подстройки модели так, чтобы она лучше
«подходила» для наших данных. В линейном случае отношение входного сигнала
к выходному сигналу модели всегда является прямой линией, но можно подбирать
ее наклон и точку пересечения с осью координат
Y
.
Листинг 2.3.
Формирование модели линейной регрессии (из CodePen 2-c)
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1}));
Основной кирпичик нейронных сетей —
слой
(layer), модуль обработки данных,
который можно считать подстраиваемой функцией, переводящей тензоры в тен
зоры. В данном случае наша модель состоит из одного плотного слоя с наложен
ным на форму входного тензора ограничением, описанным с помощью параметра
inputShape:
[1]
. Это значит, что слой ожидает входные данные в виде одномерного
тензора, хранящего только одно значение. Выходной сигнал плотного слоя всегда
представляет собой одномерный тензор для каждого примера данных, но размер
этого измерения определяется конфигурационным параметром
units
. В данном
случае нам нужно лишь одно выходное значение, поскольку мы хотим предсказать
одно число, а именно
timeSec
.
По существу, плотный слой представляет собой настраиваемую функцию умно
жениясложения, переводящую каждый входной сигнал в соответствующий вы
ходной. А поскольку на входе и выходе только по одному значению, эта модель
представляет собой простое линейное уравнение
y
=
m
*
x
+
b
, наверняка знакомое
вам из школьного курса математики. В плотном слое
m
называется
ядром
(kernel),
а
b
—
смещением
(bias), как показано на рис. 2.3. В данном случае мы сформировали
линейную модель для отношения между входным (
sizeMB
) и выходным (
timeSec
)
сигналами:
timeSec =
Do'stlaringiz bilan baham: |