为了账号安全,请及时绑定邮箱和手机立即绑定

深度学习基础1

标签:
算法

深度学习基础

设有数据集 {x(1),x(2),,x(m)}\{ x^{(1)}, x^{(2)}, \ldots, x^{(m)} \},对于每一个样本 x(i)Rnx^{(i)} \in \mathbb{R}^n,令

{X=(x(1)x(2)x(m))Y=(y(1)y(2)y(m)) \begin{cases} X = \begin{pmatrix} x^{(1)}\\ x^{(2)}\\ \vdots\\ x^{(m)} \end{pmatrix}\\ Y = \begin{pmatrix} y^{(1)}\\ y^{(2)}\\ \vdots\\ y^{(m)} \end{pmatrix}\\ \end{cases}

XX 为数据集 {(x(i),y(i))}i=1m\{(x^{(i)}, y^{(i)})\}_{i=1}^m设计矩阵。其中,y(i)y^{(i)}x(i)x^{(i)} 对应的标签。

注意

  • 对于回归任务,y(i)Ry^{(i)} \in \mathbb{R}
  • 对于分类任务,y(i)Rcy^{(i)} \in \mathbb{R}^c,其中 cc 为该数据集拥有的类别个数。

1 线性回归模型

我们先考虑一个样本 x(i)x^{(i)}wRn,bRw \in \mathbb{R}^n, b \in \mathbb{R},有

y^(i)=x(i)w+bi=12(y(i)y^(i))2 \begin{aligned} &\hat{y}^{(i)} = x^{(i)} w + b\\ &\ell_i = \frac{1}{2} (y^{(i)} -\hat{y}^{(i)})^2 \end{aligned}

再考虑所有样本,有

Y^=Xw+b1=12mi=1mi=12mXw+b1Y22 \begin{aligned} &\hat{Y} = Xw + b \cdot \mathbb{1}\\ &\ell = \frac{1}{2m} \sum_{i=1}^m \ell_i = \frac{1}{2m} ||Xw + b \cdot \mathbb{1} - Y||_2^2 \end{aligned}

下面我们来看看如何更新参数的?

1.1 梯度下降

我们先求下梯度:

w=w=1mXT(Xw+b1Y)b=b=1m1T(Xw+b1Y) \begin{aligned} &\nabla_{w} = \frac{\partial \ell}{\partial w} = \frac{1}{m} X^T (Xw + b \cdot \mathbb{1} - Y)\\ &\nabla_b = \frac{\partial \ell}{\partial b} = \frac{1}{m} \mathbb{1}^T \cdot (Xw + b \cdot \mathbb{1} - Y) \end{aligned}

再更新参数:

w=wαwb=bαb \begin{aligned} &w = w - \alpha \nabla w\\ &b = b - \alpha \nabla b \end{aligned}

其中,α\alpha 被称为学习率步长

1.2 最小二乘法

θ=(wb)\theta = \begin{pmatrix} w \\ b \end{pmatrix}X=(X1)=(x(1)x(2)x(m))\overline{X} = \begin{pmatrix} X & 1 \end{pmatrix} = \begin{pmatrix} \overline{x}^{(1)} \\ \overline{x}^{(2)} \\ \vdots \\ \overline{x}^{(m)} \end{pmatrix},则

=1mXθYF2 \ell = \frac{1}{m} ||\overline{X} \theta - Y||_F^2

θ=0\frac{\partial \ell}{\partial \theta} = 0 可得最小二乘解

θ=(XTX)Y \theta^{*} = (\overline{X}^T \overline{X})^{\dagger} Y

2 softmax 回归

softmax Regression 是解决多分类任务的模型。此时 y(i){1,2,,c}y^{(i)} \in \{1, 2, \ldots, c\}

设每个样本的条件概率估计为

y^(i)=hθ(xi)=[P(y(i)=1x(i);θ)P(y(i)=2x(i);θ)P(y(i)=cx(i);θ)]=1j=1keθjTx(i)[eθ1Tx(i)eθ2Tx(i)eθcTx(i)] \mathbb{\hat{y}^{(i)}} = h_{\theta}(\overline{x}^{i}) = \begin{bmatrix} P(y^{(i)} = 1| \overline{x}^{(i)}; \theta) \\ P(y^{(i)} = 2| \overline{x}^{(i)}; \theta)\\ \vdots\\ P(y^{(i)} = c| \overline{x}^{(i)}; \theta)\\ \end{bmatrix} = \frac{1}{\sum_{j=1}^k e^{\theta_j^T \overline{x}^{(i)}}} \begin{bmatrix} e^{\theta_1^T \overline{x}^{(i)}} \\ e^{\theta_2^T \overline{x}^{(i)}} \\ \vdots\\ e^{\theta_c^T \overline{x}^{(i)}} \\ \end{bmatrix}

其 python 代码实现很简单:

def softmax(X):
    exp = np.exp(X)
    # 假设 exp 是矩阵,这里对行进行求和,并要求保留 axis 1,
    # 就是返回 (nrows, 1) 形状的矩阵
    partition = exp.sum(axis=1, keepdims=True)
    return exp / partition

softmax Regression 模型的损失函数不适合使用 2\ell_2 损失函数,此时使用交叉熵损失函数。将 y(i)y^{(i)} 转换为 one-hot 编码形式:

y(i)=tyk(i)={1k=t0kt y^{(i)} = t \Leftrightarrow y^{(i)}_k = \begin{cases} 1 & k = t\\ 0 & k \neq t \end{cases}

其中,k,t{1,2,,c}k,t \in \{1, 2, \ldots, c\}。这样,y(i)=(y1(i),y2(i),,yc(i)){\bold y^{(i)}} = (y^{(i)}_1, y^{(i)}_2, \dots, y^{(i)}_c) 便可表示 y(i)y^{(i)} 的概率形式。这样,我们便可定义两个概率分布的“距离”:

H(y(i),y(i))=j=1cyj(i)logy^j(i) H({\bold y^{(i)}}, {\bold y^{(i)}}) = - \sum_{j=1}^c y_j^{(i)} \log \hat{y}_j^{(i)}

由于向量 y(i){\mathbb y^{(i)}} 中元素的特性,当一个样本中仅仅包含一个对象时上面的交叉熵我们可以化简为

H(y(i),y^(i))=logy^t(i) H({\bold y^{(i)}}, \bold{\hat{y}^{(i)}}) = - \log \hat{y}_t^{(i)}

其中,tt 表示 y(i){\mathbb y^{(i)}}tt 位置元素为 11,下面我们使用 y(i)y^{(i)} 代替 tt

对于所有样本,交叉熵损失函数定义为

(Θ)=1mi=1mH(y(i),y^(i)),\ell(\bold{\Theta}) = \frac{1}{m} \sum_{i=1}^m H\left(\bold y^{(i)}, \bold {\hat y}^{(i)}\right ),

其中Θ\bold{\Theta}代表模型参数。同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成(Θ)=(1/m)i=1mlogy^y(i)(i)\ell(\bold{\Theta}) = -(1/m) \sum_{i=1}^m \log \hat y_{y^{(i)}}^{(i)}。从另一个角度来看,我们知道最小化(Θ)\ell(\bold{\Theta})等价于最大化exp(m(Θ))=i=1my^y(i)(i)\exp(-m\ell(\bold{\Theta}))=\prod_{i=1}^m \hat y_{y^{(i)}}^{(i)},即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消