目录
感知机
什么是感知机
感知机(Perception),又称神经元(Neuron)是说呢经网络(深度学习)的起源算法,它可以接受多个信号,产生一个输出信号。

其中,x1和x2称为输入,w1和w2为权重,中间绿色的加法表示运算的规则, 为阈值,y为输出。
也就是说这个神经元能够接收输入,在一定公式的计算之下,产生一个输出,name计算的公式是什么,我们看右边的那个公式。
实现自我学习(反复执行某一个过程,提升机器的能力)
在上述的表达式中,x1,x2是已知的,w1,w2是未知的,我们需要一定量的样本喂给感知机,感知机通过计算得到一个y,然后我们反复的循环迭代,通过调整w1,w2, 这三个值,就可以使得在输入为x1,x2的情况下,输出的值为y,这个过程我们称之为感知机的学习。
感知机的功能
实现逻辑运算,包括逻辑和(AND)、逻辑或(OR)
实现逻辑和

实现逻辑或

感知机的缺陷
感知机的局限在于无法处理“异或”问题

异或问题在平面是不是一个线性可分问题
1975年,感知机的“异或”难题才被理论界彻底解决,即通过多个感知机组合来解决该问题,这种模型也叫多层感知机(Multi-Layer Perception,MLP)。如下图所示,神经元结点阈值均设置为0.5
当一个输入为0,一个输入为1时:

当一个输入为1,一个输入为1时:
当一个输入为0,一个输入为0时:

代码实现
实现逻辑和
#实现逻辑和
def AND(x1, x2):
w1, w2 = 0.5, 0.5 # 两个权重
theta = 0.7
tmp = x1 * w1 + x2 * w2
if tmp <= theta:
return 0
else:
return 1
print(AND(1, 1)) # 1
print(AND(1, 0)) # 1
print(AND(0, 0)) # 0

实现逻辑或
#实现逻辑或
def OR(x1, x2):
w1, w2 = 0.5, 0.5 # 两个权重
theta = 0.2
tmp = x1 * w1 + x2 * w2
if tmp <= theta:
return 0
else:
return 1
print(OR(1, 1)) # 1
print(OR(1, 0)) # 1
print(OR(0, 0)) # 0

实现逻辑异或
# 实现逻辑和
def AND(x1, x2):
w1, w2 = 0.5, 0.5 # 两个权重
theta = 0.7
tmp = x1 * w1 + x2 * w2
if tmp <= theta:
return 0
else:
return 1
# 实现逻辑或
def OR(x1, x2):
w1, w2 = 0.5, 0.5 # 两个权重
theta = 0.2
tmp = x1 * w1 + x2 * w2
if tmp <= theta:
return 0
else:
return 1
def XOR(x1, x2):
s1 = not AND(x1, x2) # 对x1,x2做逻辑和计算再取非
s2 = OR(x1, x2) # 直接对x1,x2做逻辑或运算
y = AND(s1, s2)
return y
print(XOR(1, 1)) # 1
print(XOR(1, 0)) # 1
print(XOR(0, 1)) # 1
print(XOR(0, 0)) # 0

神经网络
感知机由于结构简单,完成的功能十分有限。可以将若干个感知机连在一起,形成一个级联网络结构,这个结构称为“多层前馈神经网络”(Multi-layer Feedforward Neural Networks)。所谓“前馈”是指将前一层的输出作为后一层的输入的逻辑结构。每一层神经元仅与下一层的神经元全连接。但在同一层之内,神经元彼此不连接,而且跨层之间的神经元,彼此也不想连。

对于任意复杂度的连续波莱尔可测函数f,仅仅需要一个隐含层,只要这个隐含层包括足够多的神经元,前馈神经网络使用挤压函数作为激活函数,就可以以人已经堵来近似模拟f。如果想增加f的近似精度,单纯依靠增加神经元的数目即可实现。
这个定理也被称为通用近似定理,该定理表明,前馈神经网络在理论上可近似解决任何问题。
通用近似定理


神经网络的优点
其实,神经网络的结构还有另外一个“进化”方向,那就是朝着“纵深”方向发展,也就是说,减少单层的神经元数量,而增加神经网络的层数,也就是“深”而“瘦”的网络模型。
微软研究院的科研人员就以上两类网络性能展开了实验,实验结果表明:增加网络的层数会显著提升神经网络系统的学习性能。
什么是激活函数
在神经网络中,将输入信号的综合和转换为输出信号的函数被称为激活函数(activation function)

h(x)称为激活函数
为什么使用激活函数
激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用带众多的非线性模型中。
如果一个多层函数,使用连续函数作为激活函数的多层网络,称为“神经网络”,否则称为“多层感知机”。所以,激活函数是分别多层感知机和神经网络的依据。(很多时候我们不会区别这两个概念)
常用激活函数-阶跃函数
阶跃函数是一种特殊的连续时间函数,是一个从0跳变到1的过程,函数形式与图像:

常用激活函数-sigmoid
sigmoid函数也叫Logisitic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。


斜率非常小称之为曲度消失。
常用激活函数-tanh(双曲正切)

常用计划函数-ReLU(修正线性到单元)

常用激活函数-Softmax

小结
多层前馈网络。若干个感知机组合成若干层的网络,上一层输出作为下一层输入。
激活函数。将计算结果转换为输出的值,包括扩阶跃函数、sigmoid、tanh、ReLU。
博客主要介绍了感知机和神经网络相关知识。感知机是神经网络起源算法,可实现逻辑运算,但有无法处理异或问题的局限。神经网络由多个感知机连接而成,有通用近似定理,增加层数可提升学习性能。还介绍了激活函数,如阶跃、sigmoid等,它是区分多层感知机和神经网络的依据。
959

被折叠的 条评论
为什么被折叠?



