机器学习有两类:1,统计学习方法。2深度学习方法。
1.Keras神经网络堆叠的两种方法
1.线性模型
通过实例化Sequential得到一个线性模型
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=4,activation='relu',input_dim=100)) 全连接层
model.complie(loss='categorical_crossentropy',
optimizer='sgd',metrics=['accuracy']) 用优化器SGD 随机梯度下降,损失函数,衡量指标
model.fit(x_train,y_train,epochs=5,batch_size=32) 训练轮次 样本量
classes =model.predict(x_test,batch_size=128)预测准确率
2.函数式API
2.常用的神经网络层
全连接层 Dense 容易出现过拟合现象
二维卷积层 Conv2D 对前一层数据做卷积晕眩 设置卷积核 窗口大小 strides步长等
池化层 max/stachastic/mean-pooling 聚集一定范围内的不同位置特征 通常在卷积层后放池化层 压缩数据防止过拟合,全局平均池化代替神经网络中的全连接层。
BN层 批量标准化层 提高训练速度 使每一次都保持同样的分布 防止梯度弥散
dropout层 对于每一次随机的丢几个神经单元 减少过拟合 增加健壮性
flatten层 放在卷积层和全连接层中间 起到一个转换作用
3.激活函数
Sigmoid 用于回归预测 二分类 优点是函数曲线平滑,在变量接近0的时候变化大。 缺点是计算耗时,容易造成梯度弥散,是因为函数具有明显饱和区。
softmax 用在分类器最后单元表示分类结果
ReLU 修正线性单元 单侧抑制 非线性函数
4.优化器
SGD优化器 随机梯度下降 为了求损失函数的最小值,每次下降的幅度 为学习率,学习率过小,收敛速度很慢,比较容易进入局部最小值,学习率过大,收敛是震荡的,难收敛。
Adadelta优化器 具有自动调节学习率的功能
5.损失函数
损失函数用来度量模型一次预测结果的好坏。 预测输出与真实值之间的误差 也叫代价函数
有1平方损失函数是预测值与真实值之间的偏差的平方2均方误差 就是所有平方损失函数加起来除以个数3均方根误差就是均方误差开根号4平均绝对误差就是 预测值-真实值 的绝对值 求平均数
交叉熵损失函数
信息熵是衡量一个系统信息量不确定性成都的量
交叉熵是KL散度(相对熵)的一部分
6.模型评估方法
1.交叉验证(深度学习) 2S折交叉验证 (统计学习)
分类器性能评估 查准率 P=TP/(TP+FP) 查全率R=TP/(TP+FN) ROC曲线False positive rate as X axis ,True positive Rate as y axis FPR=F[/(FP+TN)
AUC是ROC曲线下的面积,对ROC曲线进行量化用的
7.数据增强
用数据增强来实现数据集扩充,增加模型鲁棒性
8.Keras工程时间
1提前终止条件 防止过拟合过度训练 Keras.callbacks.EarlyStopping()
2纪录训练日志 CSVLogger()
3持久化训练好的模型ModelCheckpoint()
4降低学习率ReduceLROnPlateau()
5获取模型信息summary() 输出图片plot_model()