感知器(Perceptron)
是神经网络的基本单元,即一个无隐层的神经网络。每个感知器依照输入数据来决定如何对数据进行分类。
Weight:权重
- 某个特征的权重表示该特征的重要程度。权重越大,该特征越重要。
- 输入数据会与权重相乘。
- 权重一开始是随机值,网络根据之前权重下分类的错误来调整权重,这个过程叫神经网络的训练。
输入数据加总
- 经过加权的数据被加总,生成一个值,用来实现最终的输出。
- 感知器把权重应用于输入再加总的过程叫做线性组合
∑i=1mωi⋅xi ∑ i = 1 m ω i ⋅ x i
计算激活函数的输出
- 通过把感知器的线性组合传递给激活函数来实现感知器求和的结果转换成输出信号。
- 层的输出称作”激活”
- 最简单的激活函数之一就是单位阶跃函数(Heaviside step function)
偏置项 bias
- 在线性组合的结果上加一个偏置项使函数更多的返回我们期望的值
- 我们并不能事先知道神经网络该如何选择偏置项。但没关系,偏置项跟权重一样,可以在训练神经网络的时候更新和改变。权重 (
wi
w
i
) 和偏置项 (
b
b
) 被初始化为一个随机值,然后神经网络使用一种学习算法(比如梯度下降算法)来更新它们的值。权重和偏置项的更新使得下一个训练样本更准确地被归类,数据中蕴含的模式,也就被神经网络“学”出来了。当随机在正态分布中初始化时,因为其值是随机的,可以包含
b
b
的改变,一边此时b都是简单的直接取0。
- 单个感知器可以实现AND, OR, NOT这样线性可分的分类,但是对于XOR这样非线性可分的话就需要多个感知器了
实现XOR,但是这种表示方法确实不可建模的。
一个简单的神经网络的例子
下图展示了一个简单的神经网络。权重、输入和偏置项的线性组合构成了输入 ,其通过激活函数
f(h)
f
(
h
)
,给出感知器最终的输出,标记为
y
y
这个架构最酷的一点,也是使得神经网络可以实现的原因,就是激活函数 可以是 任何函数,并不只是上面提到的阶跃函数。
例如,如果让 f(h) f ( h ) = h h ,输出等于输入,那网络的输出就是:
它跟线性回归模型是一样的!
其它常见激活函数还有对数几率(又称作 sigmoid),tanh 和 softmax。实际上,用 sigmoid 函数作为激活函数的结果,跟对数几率回归是一样的。
sigmoid(x)=1/(1+e−x)
s
i
g
m
o
i
d
(
x
)
=
1
/
(
1
+
e
−
x
)