Python Deep Learning 简明教程

Artificial Neural Networks

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

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

神经网络模仿神经元,它具有树突、细胞核、轴突和末梢轴突。

terminal axon

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

neurons transfer information

人工神经元的可能模型如下所示 −

probable model

神经网络将如下所示 −

neural network

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

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

如果你有一个或几个隐藏层,那么你就拥有了一个浅层神经网络。如果你有许多隐藏层,那么你就拥有了一个深层神经网络。

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

基本上,它是所有值的总和,在将其与某个值进行比较之后。如果你发出信号,那么结果是 (1) 输出,或没有发出任何信号,则 (0)。然后对其进行加权并传递给下一个神经元,并运行相同类型的函数。

我们可以将 sigmoid(s 形)函数作为激活函数。

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

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

从这里开始,你需要调整权重以帮助你获取与所需输出匹配的输出。

将数据直接通过神经网络发送的行为称为 feed forward neural network.

我们的数据按顺序从输入进入层,然后进入输出。

当我们向后进行并开始调整权重以最大程度地减少损失/成本时,这称为 back propagation.

这是一个 optimization problem. 在实际应用中,凭借神经网络,我们必须处理数十万个变量,或数百万,甚至更多变量。

第一个解决方案是使用随机梯度下降作为优化方法。现在,有 AdaGrad、Adam 优化器等选项。无论哪种方式,这都是一个巨大的计算操作。这就是为什么神经网络在半个世纪的大部分时间里都被搁置的原因。直到最近,我们的机器才拥有了权力和结构,可以考虑执行这些操作,以及相匹配的适当规模的数据集。

对于简单的分类任务,神经网络的性能与其他简单的算法(如 K 近邻)相对接近。当我们有更大得多的数据和更复杂的问题时,神经网络的真正效用得以实现,这两方面都优于其他机器学习模型。