我们将以Keras的示例讨论简单的神经网络及其定义。在传统机器学习上使用神经网络来提高准确性和更大的复杂数据。
神经网络
神经网络在全球各行各业中都在蓬勃发展。 它涉及用于回归,分类,聚类等的传统机器学习算法。当我们获取大量复杂数据时,就会出现准确性,过拟合以及有时需要花费更多时间进行测试和培训的问题。
神经网络的基本类型
人工神经网络
卷积神经网络
递归神经网络
神经网络是处理非线性数据的很好算法。
感知器一词由弗兰克·罗森布拉特(Frank Rosenblatt)于1957年提出。在机器学习中,感知器是二进制状态的线性分类器,而在深度学习中,感知器是人工神经元。
神经元的概念源自人脑中的神经元,并试图模仿自然神经元通过人工神经元适应和学习周围环境的行为。
对于深度学习中的任何模型,必须有输入和输出神经元。
权重和偏置
权重和偏置是神经网络中的两个学习参数,信息通过该学习参数传递到下一层。
在自然神经元中,信息是通过电脉冲从一端传递到另一端的,而在人工神经元中,信息是借助重量传递的。
偏置值用于使数据更灵活并且更接近实际操作。
具有权重和偏差的简单神经网络模型
带输入的权重和偏差的公式。
不同类型层
在神经网络中,这些层定义了神经元,信息通过神经元传递到神经元的下一层。三层描述如下:
输入层:根据我们数据集中独立要素的数量,该层包含神经元的数量。
隐藏层:此层在输入层和输出层之间。它也被称为计算层,它采用具有权重和偏置的非线性输入,并使用激活函数将其计算到下一层。
输出层:此层包含分类问题的输出。它可能具有一个节点或一个神经元或多个神经元。
激活函数
神经网络中的激活函数对来自输入层的输出进行比较计算,并确定要分类的某个阈值。
神经网络中使用了许多激活函数,如下所示:
阈值函数:它只是一个步进函数或称二进制函数。在多类问题中,它并不是很有用。
线性激活函数:此函数非常适合于回归问题。此函数的问题不能在反向传播中使用,因为导数将相同。
非线性函数:它们适用于非线性数据,其中一些如下所示:
Sigmoid函数:对梯度非常有帮助,但不适用于高值和低值。计算过程也很高。范围是0到1。
双曲正切(tanh):某种程度上仅像Sigmoid,但区别在于它在负值时也表现良好。范围是-1至1。
整流线性(ReLu):收敛性好,并且适合非线性。但这对于学习反向传播不是那么有用,并且对于负值或达到零值,渐变变为零。
LeLu泄漏:克服了反向传播中ReLu的问题,但预测的准确性较低。
参数ReLu:非常适合进行反向传播和学习负值的事物。
Softmax函数:在对输入的许多类别进行分类时非常有用,因此可在输出层中使用。
横摆函数:这是一种新方法,比ReLu更好,准确性提高了0.5%。
梯度下降和随机梯度下降
梯度下降的主要目的是最大程度地降低成本(损失)。 当我们将模型结果评估为实际结果时,就会蒙受损失。 在这里,权重过程的更新是从模型的所有层和节点的反向开始的。 权重的变化取决于偏导数w.r.t. 权重找到全局最小值。
在梯度下降之前,我们可以使用具有许多权重值的蛮力来找出损失最小的地方。但是,此过程非常昂贵且耗时。
在本主题中,我们将讨论两种优化方法,如下所示:
梯度下降:在此方法中,梯度(斜率)用于了解正方向和负方向。 在整体最小值处,斜率变为零,因此,这意味着精确的重量值点。 梯度下降的问题在于,当存在多个局部最小值时,它无法找到全局最小值,因此我们无法获得适当优化的权重。 梯度下降将所有输入作为一批进行分析。
随机梯度下降:为了克服无法获得全局最小值的问题,SGD成为了现实。 在此方法中,输入中的行逐行占用并逐行更新权重。 也称为小批量梯度下降法。
反向传播
这是借助梯度下降方法来更新模型中权重的过程。
Python释义Keras
这是银行数据集流失分析的示例。
详情参阅http://viadean.com/py_keras.html