深度学习系列--2.神经网络模型参数选择

深度学习系列--2.神经⽹络模型参数选择
经过上⾯⼀篇学习神经⽹络的基本知识,就可以⽤keras简单构造⼀个多分类器啦~
from keras import models
from keras import layers
from keras.datasets import mnist
from keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# build network
network = models.Sequential()
消声室制作network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28, )))
network.add(layers.Dense(10, activation="softmax"))
optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
train_images = shape((train_images.shape[0], 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = shape((test_images.shape[0], 28 * 28))
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
network.fit(train_images, train_labels, epochs=10, batch_size=128)
test_loss, test_acc = network.evaluate(test_images, test_labels)
print("test_acc:", test_acc)
不过⼜有了新的疑问,隐藏层个数、激活函数、优化器什么什么的,都该怎么选择呢? 如何区分⽋拟合、过拟合?如何调优呢?
带着种种疑问,⼜撸了吴恩达⽼师的视频,解答了⼀些疑问,调参的时候⼼⾥有谱了些
⼀、分出验证
软母排
⾸先,为什么需要验证集? 如果在训练集上训练后,再根据测试集上的效果来调参,相当于间接把测试集⽤于训练,这对于⽐较模型好坏来说是不公平的~
所以从训练集中分出⼀部分作为验证集,通过验证集上的结果调整参数;参数调好了后,再把验证集加到训练集,得到最终的模型,⽤于测试集的检验。
详细来说,有三种主流的⽅法:
线性排水沟尺寸
1.  简单留出验证集,⼀般 train_set:val_set:test_set = 6:2:2
2.  K折交叉验证
如果数据量很少,随机抽出的验证集不⾜以衡量参数效果,则采⽤这种⽅式
3. 带有打乱数据的重复 K 折验证
如果可⽤的数据相对较少,⽽你⼜需要尽可能精确地评估模型,那么可以选择带有打乱数据的重复 K 折验证( iterated K-fold validation with shuffling)
即每次K折之前打算数据,重复P次,共训练 P*K个模型
⼆、activation,loss,metrics, optimizer,batch_size的选择
1.activation(激活函数)
为什么需要激活函数?如果隐含层不使⽤激活函数,那么它表达的永远都是线性关系;使⽤多个线性隐藏层的logistic回归与没有隐藏层的logistic回归是等价的
隐含层激活函数现在⼀般推荐ReLU, 如果效果不好再使⽤LeakyReLU, Maxout; 对于输出层,则根据神经⽹络的⽬的,⽐如多分类问题,就⽤softmax
图⽚转⾃:
补充LeakyReLU 曲线图
热熔胶网膜
2. loss(损失函数)与metrics(度量)
损失函数是神经⽹络训练的⽬标函数,度量是给⼈看的指标,⽐如准确度,mae等
⼆分类:binary_crossentropy(⼆元交叉熵)    accuracy(分类器正确分类的样本数与总样本数之⽐)
多分类:categorical_crossentropy(多元交叉熵)   accuracy
拟合: MSE(均⽅误差)            MAE(平均绝对误差),⽐如预测房价与实际房价的平均偏差
永磁发电机⼆分类问题中,正负样本的数⽬是有很⼤偏差的,需要⽤P指标、R指标评估模型
如0.1% 的样本是癌症样本,如果模型直接预测100%样本是正常的,此时模型准确是 99.99%
精确率(precision)   所有"正确被检索的结果(TP)"占所有"实际被检索到的(TP+FP)"的⽐例
召回率(recall)    所有"正确被检索的结果(TP)"占所有"应该检索到的结果(TP+FN)"的⽐例
显然,P指标和R指标会出现⽭盾的情况,这时我们⽤F1度量来综合评价模型结果。F1越⼤,效果越好
3. optimizer(权值更新算法) 与 batch_size
多是基于BP算法的优化,现⼀般推荐使⽤ rmsprop
batch_size ⼀般取2的幂,利于CPU并⾏处理
四. 过拟合、⽋拟合处理
初始⽹络:
⼀般⽽⾔是⼀个隐藏层
远程控制杀虫灯
如果采⽤多个隐藏层,每个隐藏层的数⽬是相等的
⽋拟合的表现:训练集、验证集上的损失都没有降低
过拟合的表现:训练集损失很⼩,验证集上损失在增⼤
扩⼤训练集---------------------> underfitting
增加特征-----------------------> underfitting           
减少特征-----------------------> overfitting
减少隐含层层数、隐含层节点-----> overfitting
减少正则系数$\lambda$----------> underfitting
增⼤正则系数$\lambda$----------> overfitting

本文发布于:2024-09-20 19:52:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/98241.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证   训练   模型   函数   参数   集上   隐藏
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议