非人工智能方向粗糙理解深度学习
线性模型基本形式
你要训练的线性模型(模型不一定是线性的,为方便理解,此处以线性举例):
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
w
3
x
3
+
⋯
+
w
d
x
d
+
b
f(bm{x}) = w_1x_1 + w_2x_2 + w_3x_3 + cdots + w_dx_d + b
f(x)=w1x1+w2x2+w3x3+⋯+wdxd+b
f
(
x
)
=
w
⊤
x
+
b
f(bm{x}) = bm{w}^topbm{x} + b
f(x)=w⊤x+b 其中
x
=
(
x
1
,
x
2
,
x
3
,
⋯
,
x
d
)
bm{x} = (x_1, x_2, x_3, cdots, x_d)
x=(x1,x2,x3,⋯,xd) 是你要输入的数据,组成了输入
d
d
d 维特征向量
x
bm{x}
x(这个特征向量各种各样,可以来自数据集的人类可以理解的具象数据,也可以用 CNN 卷出来的人类理解不了的抽象数据);
w
,
b
bm{w}, b
w,b 作为模型权重参数(并非网络参数,网络是求模型的,模型本身有自己的参数,网络本身也有自己的参数如深度、维度);
f
(
x
)
f(bm{x})
f(x) 作为输出,如分类结果、回归预测。
-
例子一,猫狗分类:
- 特征空间内输入
x
1
x_1
x
2
x_2
x
3
x_3
-
w
1
,
w
2
,
w
3
,
⋯
,
b
w_1, w_2, w_3, cdots, b
-
f
(
x
)
∈
[
0
,
1
]
f(bm{x}) in [0, 1]
0
0
1
1
- 特征空间内输入
-
例子二,房价回归预测:
- 特征空间内输入
x
1
x_1
x
2
x_2
x
3
x_3
-
w
1
,
w
2
,
w
3
,
⋯
,
b
w_1, w_2, w_3, cdots, b
-
f
(
x
)
∈
[
0
,
1
]
f(bm{x}) in [0, 1]
0
0
1
1
- 特征空间内输入
-
例子三,
0
−
9
0-9
0−9 手写体识别:
- 输入灰度图像,经过 CNN 卷出来特征空间内的特征值
x
=
(
x
1
,
x
2
,
x
3
,
⋯
,
x
d
)
bm{x} = (x_1, x_2, x_3, cdots, x_d)
0
−
9
0-9
0
−
9
0-9
-
w
1
,
w
2
,
w
3
,
⋯
,
b
w_1, w_2, w_3, cdots, b
-
f
(
x
)
∈
N
,
f
(
x
)
≤
9
f(bm{x}) in mathbb{N}, f(bm{x}) leq 9
- 输入灰度图像,经过 CNN 卷出来特征空间内的特征值
以 CNN 为例:左侧为原始手写体灰度图像(人类看得懂,网络看不懂),右侧为经过卷积后的特征图像(人类看不懂,网络目前也看不懂,但是处理起来更方便了;当然后续可能要经过多层卷积并池化后,才可将浓缩后的数据送入网络训练)。
以下为 4*4 单元内最大池化示例,进一步将数据量浓缩。
浓缩后的数据可送入全连接层进行线性回归(打个比方)。
线性回归
本节会解答
w
1
,
w
2
,
w
3
,
⋯
,
b
w_1, w_2, w_3, cdots, b
w1,w2,w3,⋯,b 作为线性模型的未知参数,如何训练,训练目标是什么的问题。
数据集
也可以叫做样本,如
m
m
m 个样本:
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
D = { (bm{x_1}, y_1), (bm{x_2}, y_2), cdots, (bm{x_m}, y_m) }
D={(x1,y1),(x2,y2),⋯,(xm,ym)};其中每个样本输入存在
d
d
d 维特征:
x
i
=
(
x
i
1
,
x
i
2
,
⋯
,
x
i
d
)
bm{x_i} = (x_{i1}, x_{i2}, cdots, x_{id})
xi=(xi1,xi2,⋯,xid);每个样本对应一个标准答案输出
y
i
y_i
yi(当然非线性模型或其他模型下你可能会得到一个多维向量输出
y
i
bm{y_i}
yi)。
学习目标
毋庸置疑,如果一个模型训练的好,学习后应该有回答等于标准答案,也就是
f
(
x
i
)
=
y
i
f(bm{x_i}) = y_i
f(xi)=yi,或误差损失
(
f
(
x
i
)
−
y
i
)
2
=
0
(f(bm{x_i}) - y_i)^2 = 0
(f(xi)−yi)2=0。换言之,线性回归试图习得:
f
(
x
i
)
=
w
i
x
i
+
b
,
f
(
x
i
)
≃
y
i
f(bm{x_i}) = bm{w_i}bm{x_i} + b, f(bm{x_i}) simeq y_i
f(xi)=wixi+b,f(xi)≃yi
均方误差
为了衡量网络回答
f
(
x
i
)
f(bm{x_i})
f(xi) 与标准答案
y
i
y_i
yi 之间的差别,以确定
w
,
b
bm{w}, b
w,b 的解
w
∗
,
b
∗
bm{w^*}, b^*
w∗,b∗,我们可以引入均方误差:
(
w
∗
,
b
∗
)
=
arg min
(
w
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
=
arg min
(
w
,
b
)
∑
i
=
1
m
(
y
i
−
w
⊤
x
i
−
b
)
2
(bm{w^*}, b^*) = argmin_{(bm{w}, b)} sum_{i=1}^{m}{(f(bm{x_i}) - y_i)^2} = argmin_{(bm{w}, b)} sum_{i=1}^{m}{(y_i - bm{w^top x_i } - b)^2}
(w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(yi−w⊤xi−b)2
这本质上是一个优化问题,类似凸优化中求何处
(
w
,
b
)
(bm{w}, b)
(w,b) 取值,使得整体
l
o
s
s
loss
loss 最小。 BP 中可对未知参数求偏导采用梯度下降法反向传播,迭代更新每个神经元参数,以求出最优的
(
w
∗
,
b
∗
)
(bm{w^*}, b^*)
(w∗,b∗)。现实优化问题可采用模拟退火、随机梯度下降、遗传算法等完成此过程。
注意,这里
x
bm{x}
x 作为数据集输入为已知,
y
i
y_i
yi 作为数据集标准输出也为已知,你要求的反而是模型的未知组参数
(
w
,
b
)
(bm{w}, b)
(w,b) 的解
(
w
∗
,
b
∗
)
(bm{w^*}, b^*)
(w∗,b∗)。
监督学习
数据集
D
D
D 可以划分为两块
D
=
D
1
∪
D
2
D = D_1cup D_2
D=D1∪D2。一块
D
1
D_1
D1 用于训练
(
w
∗
,
b
∗
)
(bm{w^*}, b^*)
(w∗,b∗),称为监督集;一块
D
2
D_2
D2 用于测试你获得的模型
f
(
x
)
=
w
∗
⊤
x
+
b
f(bm{x}) = bm{w^*}^topbm{x} + b
f(x)=w∗⊤x+b,验证合理性或享受成就感,称为测试集。
弱监督学习
可分为不完全监督、不确切监督、不准确监督。与传统的监督学习相比,其使用有限的、含有噪声的或者标注不准确的数据来进行模型参数的训练,如:
- 数据集
D
D
m
m
-
x
i
bm{x_i}
y
i
y_i
-
D
D
不完全监督
数据集
D
D
D 残缺只有部分带有标签,假若为获得强监督信号,将全部缺失标签咨询专家添加标签,消耗成本太大。
主动学习
在查询次数尽可能小的情况下,选择出最有价值的未标注数据来查询人类专家,使得训练出的模型性能最好。旨在提高查询效率。
半监督学习
没有人类专家参与,根据数据分布特征,做聚类假设或流形假设,使得相近样本返回相似预测结果。
迁移学习
利用源领域
D
s
D_s
Ds 和源任务
T
s
T_s
Ts 中的知识,解决目标领域
D
t
D_t
Dt 和目标任务
T
t
T_t
Tt 中的预测函数
f
t
(
x
)
f_t(bm{x})
ft(x),或提升
f
t
(
x
)
f_t(bm{x})
ft(x) 的预测效果。
不确切监督
数据集中每个实体内没有标注明确的监督信息,输入特征维度不明确。如肺炎患者胸片,并不确切何处病灶会导致患病。
不准确监督
大数据集内出现的标注错误,可视为噪声。