我们可以将神经网络看做是一个 大型数学表达式或优化引擎,它试图从给定的特征集中预测某些东西。
但是实际上,它并没有实现与决策树或普通线性回归不同的任何东西。
神经网络的名称源于其结构,由多个相互连接的计算单元组成的网络,这些单元被称为神经元,这种结构受到人脑和生物神经网络的启发。
每个神经元之间的连接是一个数字,该数字由进入所述神经元的多个输入计算得出。
每个输入都有相应的权重,训练神经网络的目标是找到最优的权重,以给出最准确的预测。
概述和算法
很多人可能会觉得神经网络是推动当前人工智能革命的新事物。
但是实际上神经网络在很久之前就已经有了,它的起源可以追溯到50年代,由 Frank Rosenblatt 发明,被叫做感知机。
而灵感来自 Warren McCulloch 和 Walter Pitts 40年代提出的人工神经元的概念和数学模型。
让我们来看看神经网络是怎么工作的:
感知机:最简单的神经网络
上图基本上解释了整个感知机算法,该算法用于二元分类问题。让我们一步一步地分解它:
Inputs: 这些是我们数据的特征。
Weights: 一些系数,我们将输入乘以这些系数。该算法的目标是找到最优的权重。
Linear Weighted Sum: 将输入和权重的乘积相加,并加上一个偏差/偏移项,b。
Step Function: 如果线性加权和的值大于0,则我们预测为1,否则为0,在机器学习领域也可以用作激活函数。
权重通过 delta rule 的学习算法进行优化:
其中r是学习率,这是著名算法反向传播的简化版本,基于梯度下降法。
相信大家都发现感知机与逻辑回归非常相似,它们关键的区别在于,后者使用sigmoid激活函数将输出转换为0和1之间。
现代神经网络可以被视为一系列逻辑回归模型的串联。
局限性和问题
由于感知器的局限性和更多优秀的算法出现,它已经很少被使用了。
感知器的主要限制在于它严格来说是一个线性分类器,因为阶跃函数是线性的。
这意味着对于非线性可分的数据,它将会很难处理。
另一个问题是,感知器无法学习XOR函数和logic gate。但是通过将感知器堆叠在一起却可以解决这个问题,让我们一起看看是怎么做到的。
概述
常规感知机也被称为单层神经网络,其中“单层”指的是数据通过的网络只有一个神经元层。
现在所有现代神经网络都由多个神经元堆叠而成,因为只有一个神经元的网络限制太大了。
这就是多层感知机发挥作用的地方,我们将多个感知机堆叠并相互连接在一起。
下面是一个基本多层感知器的架构示例:
一个基本的双隐藏多层感知机
让我们分解这个图表
Inputs: 这些是我们数据的 n 个特征。
Hidden Layer:这是存储多个感知机的地方,每个神经元都是我们之前讨论过的一个感知机。上标是指该层,下标是指该层中的神经元/感知机。
Edges/Arrows: 这些是网络与输入(无论是特征还是隐藏层输出)相对应的权重。但是图表中省略了它们,避免图表变得混乱。
这里的不同之处在于,我们有一个感知器的输出流入另一个感知器,这发生在两个隐藏层之间。除此之外,这与感知器算法相同,但具有更多参数。
例如,h¹_1的计算如下:
其中w是该层对应神经元的权重,b是偏置项,在这种情况下是第一层中的第1个神经元。
这个计算对第一隐藏层中的每个其他神经元重复进行。然后,这些输出作为输入传递给第二隐藏层,是不是非常简单?这个计算通常通过点积进行向量化和执行。
局限性和问题
多层感知器的问题在于,它仍然是用线性函数对数据进行分类。
在算法过程中没有“步骤”可以打破线性,让网络可以学习非线性函数。
这个时候我们只需要使用激活函数
某些激活函数会使输出变为非线性,从而使我们能够满足所谓的通用逼近定理。
该定理指出,如果神经网络包含非线性激活函数,它可以在合理程度上拟合任何函数。
具有线性激活函数的多层感知机和网络可以表示为线性回归的一种形式。
在这篇文章中,我们介绍了神经网络背后的关键概念和构建模块,即感知机。
这是一个简单的算法,它接收一个输入,乘以一些权重,再将它们全部加起来,最后根据其是否大于或等于零输出零或一。
这个算法可以被称为一个神经元,可以堆叠在一起形成层。这种结构被称为多层感知机,俗称神经网络。
这就是神经网络(感知机)的简单介绍,如果你想对神经网络感兴趣,并且想深入学习的话,推荐大家可以看看这本
《Neural Networks from Scratch in Python》
Python中从头开始的神经网络
这是一本由油管百万粉丝博主,为深度学习初学者编写的神经网络教程书
这本书重要的知识点都有视频加以讲解,大家点击即可跳转非常方便,通过这种方式可以让大家更好地理解深度学习和相关元素的工作原理。
通过这本书你可以学会
编码一个神经元
了解如何分层连接这些神经元
程序激活函数:Rectified Linear (ReLU)、Softmax、Sigmoid 和 Linear
计算交叉熵损失
使用优化器使用反向传播和参数更新编码和执行梯度计算:随机梯度下降 (SGD)、AdaGrad、RMSprop 和 Adam
PDF已经下载好了
为了避免添加人数过多出现频繁,大家可以随便添加一个小助手,让她发给你。
如果喜欢本篇的内容记得点点再看,并把他转发到你的朋友圈。请永远不要停止学习,这是你武装自己对抗这个世界最有力的武器!