激活函数&常见优化算法
神经元并不会传递所有信息,只有当神经元满足一定条件时,才会传递(即被激活)信息。
(激活函数要求必须可导) 因为要求导反向传播。
sigmoid:把输入映射到[0,1]的概率值 (常用于二分类)
relu:与真实神经元最为相似,在x大于0时输入什么就输出什么,在x小于0时输出0
tanh:与sigmoid相似,只是把输入映射到[-1,1] (神经网络早期常用,现在基本被relu
代替)
优化器
优化器(optimizer)是编译Keras模型的所需的两个参数之一。
有两种方法可以使用优化器:(1)实例化一个优化器对象,然后传入model.compile()
(2)通过名称来调用优化器,在这种情况下,将使用优化器的默认参数。
(ps:实际上,优化器的参数是可以调整的)
常见的优化函数
SGD:随机梯度下降优化器
随机梯度下降优化器SGD和min-batch是同一个意思,抽取M个小批量(独立同分布)样本,通过计算他们的平均度均值来进行梯度下降。
SGD参数:
- lr: float >=0 学习率
- momentum: float>=0 参数,用于加速SGD在相关方向上前进,并抑制震荡
- decay: float>=0 ,每次参数更新后学习率衰减值。
- nesterov:boolean, 是否使用Nesterov动量。
RMSprop:经验上,RMSprop被证明有效且实用的深度学习网络优化算法
RMSprop增加了一个衰减系数来控制历史信息的获取多少,并且会对学习率进行衰减。
lr: float >=0 学习率
rho:float >=0. RMSProp梯度平方的移动均值的衰减率。
epsilon:float>=0. 模糊因子,若为None ,默认为K.epsilon()。
decay: float >=0 每次参数更新后学习率衰减值。
(在训练RNN时RMSprop是一个不错的选择)
Adam
1、adam算法可以看做是修正后的Momenttum+RMSProp算法
2、adam通常被认为对超参数的选择具有超强的鲁棒性(意思就是即使学习率选错了,影响也不大)
3、学习率建议为0.001(默认)
adam 是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代更新神经网络权重。它可以通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应学习率。
lr: float>=0. 学习率
beta_1:float, 0<beta<1 一阶矩估计 通常接近于1
beta_2:float, 0<beta<1 二阶矩估计 通常接近于1
decay:float >=0 每次参数更新后学习率衰减值。
建议使用优化器的默认参数!keras 的参数都还是比较好的