Python深度学习人工神经网络


人工神经网络,或简称为神经网络,并不是一个新想法。它已经存在了大约80年。

直到2011年,当深度神经网络因使用新技术,庞大的数据集可用性和功能强大的计算机而变得流行时。

神经网络模拟神经元,其具有树突,核,轴突和末端轴突。

终端轴突

对于一个网络,我们需要两个神经元。这些神经元通过突触之间的突触和另一个突触轴突传递信息。

神经元转移信息

一个人造神经元的可能模型看起来像这样 -

可能的模型

神经网络将如下所示 -

神经网络

圆是神经元或节点,它们在数据上的功能和连接它们的线/边是传递的权重/信息。

每一列都是一个图层。数据的第一层是输入层。然后,输入层和输出层之间的所有层都是隐藏层。

如果你有一个或几个隐藏层,那么你有一个浅层的神经网络。如果你有很多隐藏层,那么你有一个深层的神经网络。

在这个模型中,你有输入数据,你加权它,并通过神经元中被称为阈值函数或激活函数的函数传递它。

基本上,它是将所有值与某个值进行比较后的总和。如果你发射一个信号,那么结果是(1),或者什么都没有被触发,然后是(0)。然后加权并传递给下一个神经元,并运行相同类型的函数。

我们可以有一个S形(S形)功能作为激活功能。

至于权重,它们只是随机开始的,而且它们对于节点/神经元的每个输入都是唯一的。

在一个典型的“前馈”,最基本的神经网络类型中,您的信息直接通过您创建的网络,并将输出与您希望输出使用样本数据的结果进行比较。

从这里开始,您需要调整权重以帮助您获得符合要求的输出的输出。

直接通过神经网络发送数据的行为称为 前馈神经网络。

我们的数据依次从输入到图层,然后依次输出到输出。

当我们倒退并开始调整权重以最小化损失/成本时,这称为 反向传播。

这是一个 优化问题。 有了神经网络,在实际操作中,我们必须处理成千上万的变量,或数百万甚至更多的变量。

第一个解决方案是使用随机梯度下降作为优化方法。现在,有AdaGrad,Adam Optimizer等选项。无论哪种方式,这是一个巨大的计算操作。这就是为什么神经网络在半个多世纪内大部分被搁置在书架上的原因。直到最近,我们甚至已经在我们的机器中拥有能力和体系结构,甚至可以考虑执行这些操作,并且要匹配正确大小的数据集。

对于简单的分类任务,神经网络在性能上与其他简单算法(如K最近邻居)的性能相当接近。当我们有更大的数据和更复杂的问题时,神经网络的实际效用就会实现,这两个问题都超过了其他机器学习模型。