Keras-一维卷积及模型优化方法

学习概述

  • 学习了一维卷积的原理及特点
  • Keras API的用法
  • 深度学习的模型提升方法

一维卷积

  卷积运算可以从输入数据中提取局部特征,二维三维卷积运算在计算机视觉上表现优越。一维卷积则在序列问题上表现不错,它的原理如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqiBhzgw-1583149209612)(./一维卷积原理.png)]

  一维卷积在某些问题上的效果可以媲美RNN,并且计算代价和参数量都小很多。它对卷积窗口的数据做点积运算,提取局部特征,由于具有平移不变形,它在某个位置上学习得到的特征可以在其他位置上被识别。
  一维卷积同样具有池化操作,使用MaxPooling1D和AveragePooling1D完成最大池化和平均池化。由于RNN在处理长序列时的计算代价很大,可以在RNN之前使用一维卷积将长序列处理成短序列,较小运算代价。

Keras API

采用Sequential函数只能构建线性堆叠的神经网络,构建多输入、多输出、多分支、残差神经网络时需要使用Keras的函数式API。
多输入网络需要使用concatenate样例:

from keras.layers import concatenate
concatenated_data = concatenate([input_1, input_2],axis=-1)

多输出网络多多重损失,它的重点在于损失函数的合并,比如预测一个人的年龄、收入、性别,需要使用均方误差,多分类和二分类交叉熵,还可以为其指定权重,损失函数计算如下:

model.compile(
		optimizer='rmsprop', 
		loss={'age': 'mse',
			'income': 'categorical_crossentropy',
			'gender': 'binary_crossentropy'},
		loss_weights={'age':0.25, 
					  'income':1, 
					  'gender':10})

共享权重层在某些场合下非常有用,比如对比两张图片的相似度,前面几层网络可以共享,共享方法如下所示:

from keras import layers
from keras import Input
lstm = layers.LSTM(32) #实例化LSTM层

left_input = Input(shape=(None, 128)) #左分支使用LSTM实例层
left_output = lstm(left_input)

right_input = Input(shape=(None, 128)) #左分支使用LSTM实例层
right_output = lstm(right_input)

同时,Keras 还支持将模型作为层,有利于模型的嵌套和加深

模型提升方法

  深度学习在模型训练过程中有许多优化方法,比如:

  • 批标准化。批标准化层一般添加在激活函数之前。标准化处理后使得输出的数据均值为0,方差为1,而批标准化增加了反标准化操作,通过缩放和平移更有利于模型寻找最优解。参考链接
  • 批再标准化。有学者提出批再标准化的想法,它使用特殊的激活函数(selu)和初始化函数(lecun_normal),能够让数据警告任何Dense层之后保持数据标准化,但有效性尚未得到大规模重复。
  • 深度可分离卷积。深度可分离卷积是对每个通道分别做卷积,然后使用Conv1D将输出通道混合。这样做非常有意义,将通道特征独立时这样做非常有意义,可以减小参数量、增快训练速度,提到模型效果,应用用Xception网络中。参考链接
  • 超参数优化。超参数优化需要采用迭代的方法,选择合适超参数后不断验证并调节。超参数调节方法有贝叶斯优化、遗传算法、简单随机搜索等。通常情况下随机搜索可以得到更好的超参数,Hyperas库通过Parzen树预测哪组超参数会取得更好的效果,比随机搜索效果更好,使用方法见参考链接。需要注意的是使用Hyperas库容易对验证机过拟合,因为它是根据验证集效果选择超参数的。
  • 模型集成。模型集成是提升效果的强大技术,将一系列不同的模型汇集到一起,集成方法最重要的是模型尽可能好,但是尽可能不同。比较常见的集成方法有bagging、boosting 、stacking等等,参考这里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值