神经网络基础
K近邻算法
计算流程:
1.计算已知类别数据集中的点与当前点的距离。
2.按照距离依次排序。
3.选取与当前点距离最小的K个点。
4.确定前K个点所在类别的出现概率。
5.返回前K个点出现频率最高的类别作为当前点预测分类。
注意:
K近邻不能用来图像分类,因为K近邻方法会以背景为主导,背景颜色相近的图像被分为同一类,而图像分类应该更关注图像的主体内容。
线性函数
线性函数: f ( x ; W , b ) = W x + b f(x;W,b)=Wx+b f(x;W,b)=Wx+b;通过线性函数计算的结果值计算损失,然后对损失进行反向传播。
损失函数
L
i
=
∑
j
≠
y
i
m
a
x
(
0
,
s
j
−
s
y
i
+
1
)
L_{i}=\sum_{j\neq y_{i}}max(0,s_{j}-s_{y_{i}}+1)
Li=j=yi∑max(0,sj−syi+1)
其中,sj表示分类为非正确标签的概率,syi表示分类为正确标签的概率,加1的目的在于使非正确标签的概率与正确标签的概率不要太相近,正确标签概率起码比错误标签概率高1。
损失函数的改进
当两个损失函数的值相同时,两个模型也并不一定一样。而我们也总是希望模型不要太复杂,过拟合的模型是没有用的。因此,可以将损失函数中添加正则化惩罚项:损失函数=数据损失+正则化惩罚项
L
=
1
N
∑
i
=
1
N
∑
j
≠
y
i
m
a
x
(
0
,
s
j
−
s
y
i
+
1
)
+
λ
R
(
W
)
L=\frac{1}{N}\sum_{i=1}^{N}\sum_{j\neq y_{i}}max(0,s_{j}-s_{y_{i}}+1)+λR(W)
L=N1i=1∑Nj=yi∑max(0,sj−syi+1)+λR(W)
其中,正则化惩罚项:R(W)=
∑
k
∑
l
W
k
,
l
2
\sum_{k}\sum_{l}W^2_{k,l}
∑k∑lWk,l2。
W
k
,
l
2
W^2_{k,l}
Wk,l2表示权重参数的平方。
Softmax分类器
根据上述的方法得到的是一个输入的得分值,并不是一个概率值。因此可以使用Softmax函数把一个得分值转换为一个概率值。
Softmax分类器:
1、归一化:
P
(
Y
=
k
∣
X
=
x
i
)
=
e
s
k
∑
j
e
s
j
P(Y=k|X=x_i)=\frac{e^{s_k}}{\sum_{j}e^{s_{j}}}
P(Y=k∣X=xi)=∑jesjesk where s=f(
x
i
x_i
xi;w);
2、计算损失值(只关注正确类别的得分损失):
L
i
=
−
l
o
g
P
(
Y
=
y
i
∣
X
=
x
i
)
L_i=-logP(Y=y_i|X=x_i)
Li=−logP(Y=yi∣X=xi)
激活函数对比
数据预处理
不同的预处理结果会使得模型的效果发生很大的差异。
通常我们都是用随即策略来进行参数初始化:W=0.01*np.random.randn(D,H)
神经网络的问题以及解决办法
- 过拟合
- drop-out每次训练随即杀死一部分神经元。
卷积神经网络
batch_size越大越稳定
卷积层涉及参数:
滑动窗口步长,卷积核尺寸,边缘填充,卷积核个数。
池化层
池化层不涉及矩阵的运算。
最大池化,平均池化,
感受野
假设输入大小都是hwc,并且都使用c个卷积核(得到c个特征图),可以来计算一下其各自所需参数:
一个77卷积核所需参数=c(77c)=49*
c
2
c^2
c2
三个33卷积核所需参数=3c*(33c)=27*
c
2
c^2
c2
很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成特征提取操作。
递归神经网络RNN
RNN考虑时间序列,会将之前所有的结果全部记录下来,根据之前的所有结果计算当前时间的结果。但是如果时间序列比较长,记录的数据时间间隔比较大,可能会导致当前的结果精度降低。
LSTM网络
LSTM网络是RNN网络的改进,会遗忘一些之前记录的不重要数据。通过控制参数C决定什么样的信息会被保留,什么样的会被遗忘。们单元是一种让信息选择式通过的方法sigmoid神经网络层和一乘法操作。