@Author:By Runsen
原文:https://maoli.blog.csdn.net/article/details/88777955
这篇文章是我大二刚开学1个月写的,2019年3月24日,觉得还不错
从线性回归模型和对数几率回归模型本质上都是单个神经元
单个神经元(二分类)
多和神经元(多分类)
但是单层神经元有缺陷
无法拟合“异或”运算
多去官网https://keras.io/zh/看看
因此多层感知器诞生
生物的神经元一层一层连接起来,当神经信号达到某一个条件,这个神经元就会激活 ,然后继续传递信息下去
为了继续使用神经网络解决这种不具备线性可分性的问题,采用再神经网络的输入和输出之间插入更多的神经元
由于层度越来越多,神经网络因此而来
梯度下降法是一种致力于找到函数极值点的算法
所谓学习的过程,便是改进模型参数,以便通过大量训练步骤将损失最小化。因此寻找损失函数的极值点便构成了依据输入数据的模型学习
这个函数就是损失函数,梯度就是斜率的意思,点就是当前权重的意思,一段将梯度减小到最小,最后为0,即找到极小点
学习速率就是对梯度机型缩放的参数,就是对梯度求导,即二重导数
合适的学习速率,损失函数随时间下降,不合适的损失函数会一直震荡
我们可以看到loss函数一直在震荡,就是学习速率不合适
反向传播算法 每一层的倒水都是后一层的导数于前一层输出之积
从输入开始,逐一计算每个隐含层的输出,直到输出层。然后计算导数,并从输出层经各隐含层逐一反向传播,为了减小计算量,还需对所有已完成计算的元素进行复用。这激素反向传播算法的来源.
就是将上一层的loss的梯度传到下一层。
神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。
Sigmoid
函数
Sigmoid
函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid
函数常被用作神经网络的阈值函数,将变量映射到0,1之间 。
公式如下
在这里插入图片描述
Tanh
函数:
Tanh
是双曲函数中的一个,Tanh()
为双曲正切。在数学中,双曲正切“Tanh”
是由基本双曲函数双曲正弦和双曲余弦推导而来。
公式如下
ReLU
函数
Relu
激活函数(The Rectified Linear Unit)
,用于隐层神经元输出。
公式如下
ReLU
函数现在最常用
激活函数必须可导,才可以反向传播
优化器的用法
优化器 (optimizer) 是编译 Keras 模型的所需的两个参数之一:
包含扩展功能的支持:- 动量(momentum)优化, - 学习率衰减(每次参数更新后) - Nestrov 动量 (NAG) 优化
参数
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
建议使用优化器的默认参数 (除了学习率 lr,它可以被自由调节)
这个优化器通常是训练循环神经网络RNN的不错选择。
参数
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
Adam 优化器。
默认参数遵循原论文中提供的值。
参数
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
参考 https://keras.io/zh/optimizers/#nadam