深度学习基础
设有数据集 {x(1),x(2),…,x(m)},对于每一个样本 x(i)∈Rn,令
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧X=⎝⎜⎜⎛x(1)x(2)⋮x(m)⎠⎟⎟⎞Y=⎝⎜⎜⎛y(1)y(2)⋮y(m)⎠⎟⎟⎞
称 X 为数据集 {(x(i),y(i))}i=1m 的设计矩阵。其中,y(i) 为 x(i) 对应的标签。
- 对于回归任务,y(i)∈R;
- 对于分类任务,y(i)∈Rc,其中 c 为该数据集拥有的类别个数。
1 线性回归模型
我们先考虑一个样本 x(i),w∈Rn,b∈R,有
y^(i)=x(i)w+bℓi=21(y(i)−y^(i))2
Y^=Xw+b⋅1ℓ=2m1i=1∑mℓi=2m1∣∣Xw+b⋅1−Y∣∣22
1.1 梯度下降
∇w=∂w∂ℓ=m1XT(Xw+b⋅1−Y)∇b=∂b∂ℓ=m11T⋅(Xw+b⋅1−Y)
w=w−α∇wb=b−α∇b
1.2 最小二乘法
令 θ=(wb),X=(X1)=⎝⎜⎜⎛x(1)x(2)⋮x(m)⎠⎟⎟⎞,则
ℓ=m1∣∣Xθ−Y∣∣F2
由 ∂θ∂ℓ=0 可得最小二乘解
θ∗=(XTX)†Y
2 softmax 回归
softmax Regression 是解决多分类任务的模型。此时 y(i)∈{1,2,…,c}。
y^(i)=hθ(xi)=⎣⎢⎢⎡P(y(i)=1∣x(i);θ)P(y(i)=2∣x(i);θ)⋮P(y(i)=c∣x(i);θ)⎦⎥⎥⎤=∑j=1keθjTx(i)1⎣⎢⎢⎢⎡eθ1Tx(i)eθ2Tx(i)⋮eθcTx(i)⎦⎥⎥⎥⎤
def softmax(X):
exp = np.exp(X)
partition = exp.sum(axis=1, keepdims=True)
return exp / partition
softmax Regression 模型的损失函数不适合使用 ℓ2 损失函数,此时使用交叉熵损失函数。将 y(i) 转换为 one-hot 编码形式:
y(i)=t⇔yk(i)={10k=tk≠t
其中,k,t∈{1,2,…,c}。这样,y(i)=(y1(i),y2(i),…,yc(i)) 便可表示 y(i) 的概率形式。这样,我们便可定义两个概率分布的“距离”:
H(y(i),y(i))=−j=1∑cyj(i)logy^j(i)
由于向量 y(i) 中元素的特性,当一个样本中仅仅包含一个对象时上面的交叉熵我们可以化简为
H(y(i),y^(i))=−logy^t(i)
其中,t 表示 y(i) 中 t 位置元素为 1,下面我们使用 y(i) 代替 t。
ℓ(Θ)=m1i=1∑mH(y(i),y^(i)),
其中Θ代表模型参数。同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成ℓ(Θ)=−(1/m)∑i=1mlogy^y(i)(i)。从另一个角度来看,我们知道最小化ℓ(Θ)等价于最大化exp(−mℓ(Θ))=∏i=1my^y(i)(i),即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。