感知机
来源:互联网 发布:聊天有哪些软件 编辑:程序博客网 时间:2024/05/01 07:18
简介
《神经网络与深度学习》是一本免费的在线电子书。本书主要介绍以下内容:
神经网络,一种启发自生物学的优美的编程范式,能够从观测到的数据中进行学习
深度学习,一系列神经网络中强大的学习技巧
神经网络和深度学习为图像识别、语音识别、自然语言处理等问题提供了目前最好的解决方案。本书主要会介绍神经网络和深度学习背后关键的概念。
更多关于本书的细节,请参考这里。或者您可以直接从第一章开始学习。
译者注
本项目是Neural Networks and Deep Learning的中文翻译,原文作者 Michael Nielsen
什么是神经网络?在回答这个问题之前,我会先解释一种叫做感知机(perceptron)的人工神经元。感知机由科学家Frank Rosenblatt发明于1950至1960年代,他受到了来自Warren McCulloch 和Walter Pitts的更早工作的启发。现如今,我们通常使用其它种类的人工神经元模型——在这本书里,以及在许多关于神经网络的最新工作里,主要使用的是一种叫做sigmoid神经元(sigmoid neuron)的神经元模型。我们会在稍后学习sigmoid神经元。为了理解sigmoid神经元,我们首先需要花一点时间来理解感知机,这是非常有价值的。
那么,感知机是怎么工作的呢?感知机的输入是几个二进制,
本例中的感知机有三个输入,
这就是感知机的工作方式!
这是一个基础的数学模型。你可以这样理解感知机,它是一个通过给evidence赋予不同权重从而作出决策的机器。让我们来举一个例子,或许这不是一个真实的例子,但是它很容易理解,稍后我们会举一个更实际的例子。假设周末就要到了,你听说你所在的城市将会举办一个奶酪节。你非常喜欢奶酪,你正在犹豫是否要去参加这个节日。你可能需要权衡以下几个因素来作出决定:
- 天气好不好?
- 你的男朋友或者女朋友会陪你去吗?
- 坐公共交通方便去吗?(假设你自己没有车)
我们可以使用
假设你真的超级喜欢奶酪,即便是你的男朋友或者女朋友的对此没兴趣并且交通也不方便的情况下,你也依然很想去。不过,你非常在意天气情况,如果天气不好的话你就不会去参加了。你可以用感知机来为这样的决策建立模型。一种方式是,你可以为天气赋予权重
通过调整权重和阈值的大小,我们可以得到不同的决策模型。例如,假设我们选择的阈值为
显然,感知机不能完全建模人类的决策系统!不过,这个例子阐明的是感知机如何赋予不同evidence权重来达到做出决策的目的。一个由感知机构成的复杂网络能够做出更加精细的决策,这貌似看上去是说得通的:
在这个网络中,第一列感知机——通常称为第一层感知机——通过赋予输入的evidence权重,做出三个非常简单的决策。第二层感知机呢?每一个第二层感知机通过赋予权重给来自第一层感知机的决策结果,来做出决策。通过这种方式,第二层感知机可以比第一层感知机做出更加复杂以及更高层次抽象的决策。第三层感知机能够做出更加复杂的决策。通过这种方式,一个多层网络感知机可以做出更加精细的决策。
顺便提一句,当我之前定义感知机的时候,我说到感知机只有一个输出。在上面这个网络中,感知机似乎看上去有多个输出。实际上,它们仍然只有一个输出。多个输出箭头仅仅是用来方便表示它的输出被用作其它几个感知机的输入。如果画成一个输出分裂出几个箭头就太难看了。
让我们来简化一下对感知机的描述。∑jwjxj>threshold的条件太笨重了,我们可以通过使用两个新记法来简化它。第一是使用点乘来代替∑jwjxj。我们有w⋅x≡∑jwjxj,其中w和x都是向量,它们的元素分别代表了权重和输入。第二是将阈值移到不等号的另一侧,并使用偏置(bias)来代替阈值threshold,b≡−threshold。于是,感知机规则可以被重写为:
你可以将偏置(bias)理解为感知机为了得到输出为1的容易度的度量。如果从生物的角度来理解,偏置是使神经元被激活的容易度的度量。如果一个感知机的偏置非常大,那么这个感知机的输出很容易为1,相反如果偏置非常小,那么输出1就很困难。显然,引入偏置的概念仅仅是一个很小的改动,稍后我们会对这个公式进行进一步的简化。在本书的剩余部分,我们将不再使用阈值,而是使用偏置(bias)。
我之前将感知机描述为通过权衡evidence做出决策的一种方法。感知机的另一种用途是计算初等逻辑函数,例如AND
、OR
和NAND
。例如,假如一个感知机有两个输入,每一个权重都是
那么,对于输入NAND
门!
这个NAND
的例子表明了我们可以使用感知机来计算初等逻辑函数。实际上,我们可以使用感知机网络计算任何逻辑函数,因为NAND
门在计算上是通用的,这意味着我们可以使用NAND
门构建任意逻辑运算。例如,我们可以使用NAND
门构造一个求和两个比特
为了得到一个等价的感知机网络,我们可以将所有的NAND
门替换成一个拥有两个输入,权重均为−2,偏置为3的感知机。下图是替换后的结果。我将右下角的NAND
门对应的感知机移动了一点位置,仅仅是为了方便画箭头。
值得注意的是,最左面的感知机的输出在作为最下面的感知机的输入时,被用到了两次。我之前定义感知机模型的时候,没有提到是否允许这种情况。实际上,这并没有什么影响。如果我们不允许这种情况发生,那么我们可以将这两条权重为
到目前为止,我都将输入
以下这个记号用来表示输入感知机,它有一个输出,没有输入,
但这并不意味着感知机可以没有输入。我们可以这样理解,假设存在一个没有输入的感知机,那么加权和
以上这个加法的例子展示了感知机网络如何模拟一个包含很多NAND
门的电路。同时,由于NAND
门对于计算是通用的,所以感知机对于计算也是通用的。
感知机的计算普遍性既让人感到安心,也让人感到失望。说它是安心的,因为感知机网络与任何其它的计算设备拥有同样强大的计算能力。说它是令人沮丧的,因为它看上去不过是一种新的NAND
门,很难搞个大新闻。
不过,情况还是相对比较乐观的。我们可以设计学习算法(learning algorithm)使得能够自动地调整人工神经元网络的权重和偏置。这种调整能够对外部刺激作出响应,而不需要程序员的直接干预。这些学习算法使得我们能够用一种与传统逻辑门从根本上不同的方法使用人工神经元。我们不需要显式地排布NAND
和其它逻辑门组成电路,取而代之的是,神经网络可以通过简单的学习来解决问题,通常这些问题用直接设计传统电路的方法来解决是非常困难的。
连载中:下一篇
sigmoid神经元
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 感知机
- 数组的相关操作
- javaScript中的对象、BOM、DOM知识点总结
- Linux学习之开始
- 如何让一张图片在手机端页面占满整个屏幕不带滚动条(示例)
- 按对象中某一属性排序
- 感知机
- MSSQL树型结构/获得上级及上上级及获得下级及下下级
- iReport输出为HTML或PDF、XLS、DOC【输出HTML两种方法】
- python sys.argv[]
- iReport默认参数和变量的含义解析【转】
- Spark ML -1:ALS推荐算法
- iReport使用教程[转]+总结+模版
- ofbiz系统中Mysql
- 多线程程序