1.多分类问题
损失函数为categorical_crossentropy(分类交叉商)
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(10000,)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(46, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(partial_x_train,
partial_y_train,
epochs=9,
batch_size=512,
validation_data=(x_val, y_val))
results = model.evaluate(x_test, one_hot_test_labels)
最终结果如下。
>>> results
[0.9565213431445807, 0.79697239536954589]
处理多分类问题的标签有两种方法。
通过分类编码(也叫 one-hot 编码)对标签进行编码,然后使用 categorical_
crossentropy 作为损失函数。
将标签编码为整数,然后使用 sparse_categorical_crossentropy 损失函数。
2.回归问题
编译网络用的是 mse 损失函数,即均方误差(MSE,mean squared error),预测值与
目标值之差的平方。这是回归问题常用的损失函数。
在训练过程中还监控一个新指标:平均绝对误差(MAE,mean absolute error)。它是预测值与目标值之差的绝对值。
#数据标准化(减去特征平均值,再除以标准差)
mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std
test_data -= mean
test_data /= std
#模型定义
from keras import models
from keras import layers
def build_model():
model = models.Sequential()
model.add(layers.Dense(64, activation='relu',
input_shape=(train_data.shape[1],)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(1))
model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
return model
# K折验证
#绘制验证分数
#训练最终模型
model = build_model()
model.fit(train_data, train_targets,
epochs=80, batch_size=16, verbose=0)
test_mse_score, test_mae_score = model.evaluate(test_data, test_targets)
#最终结果如下。
>>> test_mae_score
2.5532484335057877
#你预测的房价还是和实际价格相差约 2550 美元。
3.机器学习的四个分支:监督学习,无监督学习,自监督学习,强化学习
4.评估机器学习模型
训练集、验证集和测试集:三种经典的评估方法:简单的留出验证、K 折验证,
以及带有打乱数据的重复 K 折验证。
5.数据预处理、特征工程和特征学习
6.过拟合与欠拟合
优化(optimization)是指调节模型以在训练数据上得到最佳性能(即机器学习中的学习),而泛化(generalization)是指训练好的模型在前所未见的数据上的性能好坏。
总结一下,防止神经网络过拟合的常用方法包括:
获取更多的训练数据
减小网络容量
添加权重正则化
添加 dropout
7.
表 4-1 为模型选择正确的最后一层激活和损失函数
问题类型 | 最后一层激活 | 损失函数 |
---|---|---|
二分类问题 | sigmoid | binary_crossentropy |
多分类、单标签问题 | softmax | categorical_crossentropy |
多分类、多标签问题 | sigmoid | binary_crossentropy |
回归到任意值 | 无 | mse |
回归到 0~1 范围内的值 | sigmoid | mse 或 binary_crossentropy |
8.机器学习的通用工作流程
1) 定义问题,收集数据集
2)选择衡量成功的指标
3)确定评估方法
4)准备数据
5)开发比基准更好的模型
6)扩大模型规模:开发过拟合的模型
7)模型正则化与调节超参数
2022/7/8 深度学习基础完结