Глава 3. Вводим нелинейность: теперь не только взвешенные суммы
123
делали для набора данных Bostonhousing. Кроме того, количество обучающих при
меров данных достаточно велико относительно как числа признаков, так и числа
возможных предсказаний (равного двум: да или нет). В целом это неплохая пред
варительная проверка того, подходит ли набор данных для работы. Если бы не было
жалко времени на исследование данных, можно было бы сделать проверку попарной
корреляции признаков и выяснить, нет ли избыточной информации; впрочем, нашей
модели она не страшна.
Поскольку наши данные схожи с используемыми (после нормализации) данными
набора Bostonhousing, исходную модель мы также возьмем похожую. Код для этой
задачи вы можете найти в каталоге
website-phishing
репозитория tfjsexamples.
Для извлечения и запуска примеров можете выполнить следующие команды:
git clone https://github.com/tensorflow/tfjs-examples.git
cd tfjs-examples/website-phishing
yarn && yarn watch
Листинг 3.5.
Описание модели бинарной классификации для обнаружения фишинга
(из файла index.js)
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [data.numFeatures],
units: 100,
activation: 'sigmoid'
}));
model.add(tf.layers.dense({units: 100, activation: 'sigmoid'}));
model.add(tf.layers.dense({units: 1, activation: 'sigmoid'}));
model.compile({
optimizer: 'adam',
loss: 'binaryCrossentropy',
metrics: ['accuracy']
});
Эта модель во многом схожа с многослойной сетью, которую мы создали для зада
чи предсказания цен на бостонскую недвижимость. Она начинается с двух скрытых
слоев (оба — с сигмафункцией активации). Последний (выходной) слой содержит
ровно один нейрон, то есть выходной сигнал модели представляет собой одно чис
ловое значение для каждого входного примера данных. Впрочем, главное отличие
в том, что в качестве функции активации последнего слоя модели для обнаружения
фишинга используется сигмафункция, а не линейная функция активации по умол
чанию, как в модели для набора данных Bostonhousing. Это значит, что выходной
сигнал нашей модели ограничивается числами в диапазоне от 0 до 1, в отличие от
модели Bostonhousing, которая может выдавать на выходе произвольные числа
с плавающей точкой.
Выше мы видели, что сигмафункции активации для скрытых слоев повышают
разрешающие возможности модели. Но почему мы воспользовались сигмафункцией
активации на выходе этой новой модели? Причина в самой сути задачи бинарной
классификации. При бинарной классификации модель обычно должна выдавать
124
Do'stlaringiz bilan baham: |