1.M-P神经元
M-P神经元,全称为McCulloch-Pitts神经元,是一种数学模型,用于模拟生物神经元的功能。这个模型是由Warren McCulloch和Walter Pitts在1943年提出的。它是人工智能和计算神经科学领域中非常重要的早期模型。
M-P神经元接收n个输入(通常来自其他神经元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值
θ
\theta
θ进行比较(作减法),最后经过激活函数(模拟“抑制”和“激活”)处理得到输出(通常是给下一个神经元)
y
=
f
(
∑
i
=
1
n
w
i
x
i
−
θ
)
=
f
(
w
T
x
+
b
)
y=f(\sum_{i=1}^nw_ix_i-\theta)=f(w^Tx+b)
y=f(i=1∑nwixi−θ)=f(wTx+b)
单个M-P神经元:感知机(sgn作激活函数)、对数几率回归(sigmoid作激活函数)
多个M-P神经元:神经网路
2.感知机(分类模型)
2.1 sgn函数
sgn 函数,或称为符号函数(sign function):是一个数学函数,用于确定一个实数的符号。sgn 函数的定义如下:
- 当x>0时,sgn(x)=1
- 当x=0时,sgn(x)=0
- 当x<0时,sgn(x)=-1
图像如下:
2.2 感知机
1)模型
其具体公式如下:
y
=
s
g
n
(
w
T
w
−
θ
)
=
{
1
,
w
T
x
−
θ
>
=
0
0
,
w
T
x
−
θ
<
0
y=sgn(w^Tw-\theta) =\begin{cases} 1& ,{w^Tx-\theta>= 0}\\ 0& ,{w^Tx-\theta<0} \end{cases}
y=sgn(wTw−θ)={10,wTx−θ>=0,wTx−θ<0
其中,
x
∈
R
N
x\in \mathbb{R}^N
x∈RN为样本的特征向量,是感知机模型的输入,
w
,
θ
w,\theta
w,θ是感知机模型的参数,
w
∈
R
n
w\in \mathbb{R}^n
w∈Rn为权重,
θ
\theta
θ 为阈值
从几何的角度来说,给定一个线性可分的数据集T,感知机的学习目标是求得能对数据集T中的正负样本完全正确划分的超平面,其中
w
T
x
−
θ
w^Tx-\theta
wTx−θ即为超平面方程。
n维空间的超平面
(
w
T
x
+
b
=
0
,
其中
w
,
x
∈
R
n
)
(w^Tx+b=0,其中w,x \in \mathbb R^n)
(wTx+b=0,其中w,x∈Rn):
- 超平面方程不唯一
- 法向量w垂直于超平面
- 法向量w和位移项b确定一个唯一超平面
- 法向量w指向的那一半空间为正空间,另一半为负空间
缺点: 只能解决线性可分的问题
模型图如下所示,只包含一个输入层和一个输出层。
2)策略
感知机的学习策略是,随机初始化
w
,
b
w,b
w,b,将全体训练样本带入模型找出误分类样本,假设此时误分类样本的集合为
M
⊆
T
M\subseteq T
M⊆T对任意一个误分类样本
(
x
,
y
)
∈
M
(x,y)\in M
(x,y)∈M来说,当
w
T
x
−
θ
>
=
0
w^Tx-\theta >=0
wTx−θ>=0时,模型输出值为
y
^
=
1
\hat y=1
y^=1,样本真实标记为y=0;繁殖,当
w
T
x
−
θ
<
0
w^Tx-\theta<0
wTx−θ<0时,模型输出值为
y
^
\hat y
y^=0,样本真实标记为y=1。综合两种情况可知,以下公式恒成立
(
y
^
−
y
)
(
w
T
x
−
θ
)
>
=
0
(\hat y-y)(w^Tx-\theta)>=0
(y^−y)(wTx−θ)>=0
所以,给定数据集T,其损失函数可以定义为:
L
(
w
,
θ
)
=
∑
x
∈
M
(
y
^
−
y
)
(
w
T
x
−
θ
)
L(w,\theta)=\sum_{x\in M}(\hat y-y)(w^Tx-\theta)
L(w,θ)=x∈M∑(y^−y)(wTx−θ)
此时损失函数是非负的。如果没有误分类点,损失函数值为0.而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。
损失函数还可以进一步优化,将
θ
\theta
θ并入
w
w
w向量中成为第n+1维0,其中x的第n+1维恒为-1。那么损失函数进一步简化为:
L
(
w
)
=
∑
x
∈
M
(
y
^
−
y
)
w
T
x
L(w)=\sum_{x\in M}(\hat y-y)w^Tx
L(w)=x∈M∑(y^−y)wTx
3)算法
当误分类样本集合M固定时,可以球的损失函数
L
(
w
)
L(w)
L(w)的梯度为
∇
w
L
(
w
)
=
∑
x
i
∈
M
(
y
^
i
−
y
i
)
x
i
\nabla_wL(w)=\sum_{x_i\in M}(\hat y_i-y_i)x_i
∇wL(w)=xi∈M∑(y^i−yi)xi
学习算法具体采用的是随机梯度下降法,也即极小化过程中不是一次使M中的所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重
w
w
w的更新公式为:
w
←
w
+
Δ
w
w \leftarrow w+\Delta w
w←w+Δw
Δ
w
=
−
η
(
y
^
i
−
y
i
)
x
i
=
η
(
y
i
−
y
^
i
)
x
i
\Delta w=-\eta(\hat y_i-y_i)x_i=\eta(y_i-\hat y_i)x_i
Δw=−η(y^i−yi)xi=η(yi−y^i)xi
其中
η
\eta
η为学习率,最终解出来的w通常不唯一。
从几何角度方便理解一点,如下图所示,
可以看到红线和绿线都可以把正负样本分开,它们代表了两组
w
w
w,因此说明解不唯一。
3.神经网络
为了解决线性不可分的数据集(其他的当个神经元的模型也可以结局线性不可分的数据集,只是感知机不可以),提出了由多个神经元构成的神经网络,且用通用近似定理可以证明:只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。
优点:
既能做回归,也能做分类,而且不需要复杂的特征工程。
需要考虑的问题:
- 对于具体场景,神经网络该做多深,多宽?(没有理论支撑,都是实践经验)
- 对于具体场景,神经网络的结构该如何设计才最合理(没有强理论指导)
- 对于具体场景,神经网络的输出结果该如何解释?(模型的可解释性可以用来指导特征调整)
经典神经网络——多层前馈网络:
每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。
将神经网络(NN)看作一个特征加工函数
x
∈
R
d
→
N
N
(
x
)
→
y
=
x
∗
∈
R
l
x\in R^d \rightarrow NN(x) \rightarrow y=x^* \in R^l
x∈R