线性模型基本形式
你要训练的线性模型(模型不一定是线性的,为方便理解,此处以线性举例):
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}^\top\bm{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 x1 表示耳朵长度, x 2 x_2 x2 表示鼻头子长度, x 3 x_3 x3 表示胡子长度等;
- w 1 , w 2 , w 3 , ⋯ , b w_1, w_2, w_3, \cdots, b w1,w2,w3,⋯,b 是网络要训练得到的这个线性模型的参数,目前未知;
- f ( x ) ∈ [ 0 , 1 ] f(\bm{x}) \in [0, 1] f(x)∈[0,1],做为最终输出,越接近 0 0 0 越像猫,越接近 1 1 1 越像狗。
-
例子二,房价回归预测:
- 特征空间内输入 x 1 x_1 x1 地段(抽象,但你可以编码为浮点数), x 2 x_2 x2 表示房屋面积, x 3 x_3 x3 表示套型(抽象,但你可以编码为浮点数);
- w 1 , w 2 , w 3 , ⋯ , b w_1, w_2, w_3, \cdots, b w1,w2,w3,⋯,b 是网络要训练得到的这个线性模型的参数,目前未知;
- f ( x ) ∈ [ 0 , 1 ] f(\bm{x}) \in [0, 1] f(x)∈[0,1],做为最终输出,越接近 0 0 0 越像猫,越接近 1 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) x=(x1,x2,x3,⋯,xd),输入后面的线性模型(不一定是线性,但总有一个函数,能将各个 0 − 9 0-9 0−9 手写体的特征映射到 0 − 9 0-9 0−9 的标准答案上,此处仅为理解方便);
- w 1 , w 2 , w 3 , ⋯ , b w_1, w_2, w_3, \cdots, b w1,w2,w3,⋯,b 是网络要训练得到的这个线性模型的参数,目前未知;
- f ( x ) ∈ N , f ( x ) ≤ 9 f(\bm{x}) \in \mathbb{N}, f(\bm{x}) \leq 9 f(x)∈N,f(x)≤9,做为最终输出。
以 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_1\cup 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^*}^\top\bm{x} + b f(x)=w∗⊤x+b,验证合理性或享受成就感,称为测试集。
弱监督学习
可分为不完全监督、不确切监督、不准确监督。与传统的监督学习相比,其使用有限的、含有噪声的或者标注不准确的数据来进行模型参数的训练,如:
- 数据集 D D D 内样本数 m m m 较小;
- x i \bm{x_i} xi 内部分维度值缺失,或部分 y i y_i yi 缺失;
- D 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) 的预测效果。
不确切监督
数据集中每个实体内没有标注明确的监督信息,输入特征维度不明确。如肺炎患者胸片,并不确切何处病灶会导致患病。
不准确监督
大数据集内出现的标注错误,可视为噪声。