我最近在零散的学习一些深度学习的知识,在这里把自己做的答案记录下来。
练习一
假设我们有一些数据
x
1
,
…
,
x
n
∈
R
x_1, \ldots, x_n \in \mathbb{R}
x1,…,xn∈R。我们的目标是找到一个常数
b
b
b,使得最小化
∑
i
(
x
i
−
b
)
2
\sum_i (x_i - b)^2
∑i(xi−b)2。
1. 找到最优值
b
b
b的解析解。
2. 这个问题及其解与正态分布有什么关系?
解答:
- 对于最小化 ∑ i ( x i − b ) 2 \sum_i (x_i - b)^2 ∑i(xi−b)2,我们对b求导数并令它为0,
d d b ∑ i ( x i − b ) 2 = − 2 ∑ i ( x i − b ) = 0 \frac{d}{db}\sum_i (x_i - b)^2= -2 \sum_i (x_i - b) = 0 dbd∑i(xi−b)2=−2∑i(xi−b)=0
可得 : b = 1 n ∑ i x i b = \frac{1}{n}\sum_i x_i b=n1∑ixi, 这就是x的均值。
- 当我们假设误差服从正态分布时,最大似然估计与最小化均方误差是等价的。
练习二
推导出使用平方误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置
b
b
b(我们可以通过向
X
\mathbf X
X添加所有值为1的一列来做到这一点)。
1. 用矩阵和向量表示法写出优化问题(将所有数据视为单个矩阵,将所有目标值视为单个向量)。
2. 用计算损失对
w
w
w的梯度。
3. 通过将梯度设为0、求解矩阵方程来找到解析解。
4. 什么时候可能比使用随机梯度下降更好?这种方法何时会失效?
解答:
设
X
X
X 是数据矩阵,
y
y
y 是目标向量,
w
w
w 是权重向量。
损失函数为:
L
(
w
)
=
∣
∣
X
w
−
y
∣
∣
2
~~~~~~~~~L(w)= ||Xw - y||^2
L(w)=∣∣Xw−y∣∣2
对
w
w
w求导得到:
∇
L
(
w
)
=
2
X
T
(
X
w
−
y
)
~\nabla L(w)= 2X^T(Xw - y)
∇L(w)=2XT(Xw−y)
令其为0得到正规方程:
X
T
X
w
=
X
T
y
~X^TXw = X^Ty
XTXw=XTy
解得:
w
=
(
X
T
X
)
−
1
X
T
y
w = (X^TX)^{-1}X^Ty
w=(XTX)−1XTy
何时使用解析解: 当数据量不是很大,且 X T X X^TX XTX 可逆时,解析解是最好的。但当数据量很大或 X T X X^TX XTX 接近奇异时,使用迭代方法如随机梯度下降更为合适。
练习三
假定控制附加噪声
ϵ
\epsilon
ϵ的噪声模型是指数分布。也就是说,
p
(
ϵ
)
=
1
2
exp
(
−
∣
ϵ
∣
)
p(\epsilon) = \frac{1}{2} \exp(-|\epsilon|)
p(ϵ)=21exp(−∣ϵ∣)
1.写出模型
−
log
P
(
y
∣
X
)
-\log P(\mathbf y \mid \mathbf X)
−logP(y∣X)下数据的负对数似然。
2.请试着写出解析解。
3.提出一种随机梯度下降算法来解决这个问题。哪里可能出错?(提示:当我们不断更新参数时,在驻点附近会发生什么情况)请尝试解决这个问题。
解答:
指数分布的负对数似然:
−
log
P
(
y
∣
X
)
=
∑
i
−
log
(
1
2
exp
(
−
∣
y
i
−
(
X
w
)
i
∣
)
)
=
∑
i
(
log
2
+
∣
y
i
−
(
X
w
)
i
∣
)
-\log P(y|X) = \sum_i -\log \left( \frac{1}{2} \exp(-|y_i - (Xw)_i|) \right) \\ \quad \quad \quad \quad \quad \quad = \sum_i \left( \log 2 + |y_i - (Xw)_i| \right)
−logP(y∣X)=∑i−log(21exp(−∣yi−(Xw)i∣))=∑i(log2+∣yi−(Xw)i∣)
这是一个 L1 损失,不像 L2 损失那样有封闭形式的解。
对于 L1 损失,梯度在 0 处是不连续的,这可能导致随机梯度下降在接近最优解时震荡。为了解决这个问题,可以使用学习率衰减或者使用像 Huber 损失这样的平滑版本的 L1 损失。