深度学习01

本文详细介绍了机器学习中线性回归、softmax回归及多层感知机的基本原理。线性回归通过最小化平方损失进行预测;softmax回归应用于分类问题,采用交叉熵损失函数;多层感知机通过引入激活函数解决非线性问题。

线性回归、softmax回归、多层感知机

1. 线性回归

线性回归中假设自变量和因变量之间为线性关系,损失函数采用平方损失函数(需要注意平方差前面有系数1/2),在批量训练中计算的是样本的平均损失。
l(i)(w,b)=12(y^(i)−y(i))2,l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2,l(i)(w,b)=21(y^(i)y(i))2,
L(w,b)=1n∑i=1nl(i)(w,b)=1n∑i=1n12(w⊤x(i)+b−y(i))2.L(\mathbf{w}, b) =\frac{1}{n}\sum_{i=1}^n l^{(i)}(\mathbf{w}, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2.L(w,b)=n1i=1nl(i)(w,b)=n1i=1n21(wx(i)+by(i))2.

优化函数采用小批量随机梯度下降,在一个批量中将各个样本的梯度平均之后乘学习率,进行一次更新
(w,b)←(w,b)−η∣B∣∑i∈B∂(w,b)l(i)(w,b)(\mathbf{w},b) \leftarrow (\mathbf{w},b) - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{(\mathbf{w},b)} l^{(i)}(\mathbf{w},b)(w,b)(w,b)BηiB(w,b)l(i)(w,b)

实践中会用到的一些函数
torch.randn(size,)从标准正态分布中随机抽取的一组数,返回tensor,形状由size决定
np.random.normal(loc=0, scale=1, size),正态分布,local中心位置,scale标准差,size状,label.size()=1000

2.softmax回归

softmax回归是一个分类器,也是一个单层的神经网络,主要是在线性层的输出加了一个softmax函数将线性层的输出放缩至0-1之间,且和为1,更好地将输出与对应类别地概率分布联系在一起
y^1,y^2,y^3=softmax(o1,o2,o3)\hat{y}_1, \hat{y}_2, \hat{y}_3 = \text{softmax}(o_1, o_2, o_3)y^1,y^2,y^3=softmax(o1,o2,o3)
y^1=exp⁡(o1)∑i=13exp⁡(oi),y^2=exp⁡(o2)∑i=13exp⁡(oi),y^3=exp⁡(o3)∑i=13exp⁡(oi).\hat{y}1 = \frac{ \exp(o_1)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}2 = \frac{ \exp(o_2)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}3 = \frac{ \exp(o_3)}{\sum_{i=1}^3 \exp(o_i)}.y^1=i=13exp(oi)exp(o1),y^2=i=13exp(oi)exp(o2),y^3=i=13exp(oi)exp(o3).
在softmax回归中不使用平方损失,因为平方损失会尽量使估计的概率分布和真实的概率分布保持一致,而在softmax中更关心的是正确分类的概率有多大,而不关心其他的类别的概率分布情况,所以平方损失会显得过于严格,使用交叉熵损失函数会更好。同时可知即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。
Loss=∣y^(i)−y(i)∣2/2\begin{aligned}Loss = |\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}|^2/2\end{aligned}Loss=y^(i)y(i)2/2
H(y(i),y^(i))=−∑j=1qyj(i)log⁡y^j(i),H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_j^{(i)},H(y(i),y^(i))=j=1qyj(i)logy^j(i),

3.多层感知机

多层感知机是多层神经网络,除了输入层和输出层多了若干隐藏层。当多层神经网络全是线性层时,其效果可以有一个线性层取代。问题的根源在于全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。这个非线性函数被称为激活函数(activation function)。
H=XWh+bh,O=HWo+bo,\begin{aligned} \boldsymbol{H} &= \boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h,\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol{b}_o, \end{aligned}HO=XWh+bh,=HWo+bo,
O=(XWh+bh)Wo+bo=XWhWo+bhWo+bo.\boldsymbol{O} = (\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h)\boldsymbol{W}_o + \boldsymbol{b}_o = \boldsymbol{X} \boldsymbol{W}_h\boldsymbol{W}_o + \boldsymbol{b}_h \boldsymbol{W}_o + \boldsymbol{b}_o.O=(XWh+bh)Wo+bo=XWhWo+bhWo+bo.
常用的激活函数包括ReLU,sigmoid,tanh,其中Relu因为计算复杂度较小且能缓解梯度消失的现象,常用在隐藏层中,用于分类器时常用sigmoid(这点有点不太理解)。
ReLU(x)=max⁡(x,0).\text{ReLU}(x) = \max(x, 0).ReLU(x)=max(x,0).,ReLU的导数在小于0的部分为0,在大于0的部分为1,在反向传播中依然可能会存在梯度消失的现象。
ReLU的函数图像在这里插入图片描述sigmoid(x)=11+exp⁡(−x).\text{sigmoid}(x) = \frac{1}{1 + \exp(-x)}.sigmoid(x)=1+exp(x)1.,从图像中可以看出sifmoid函数的导数图像关于x=0对称,在(-4,4)的范围内导数不为0,而在剩余的范围内导数基本为0,容易导致反向传播过程中的梯度消失
在这里插入图片描述在这里插入图片描述tanh(x)=1−exp⁡(−2x)1+exp⁡(−2x).\text{tanh}(x) = \frac{1 - \exp(-2x)}{1 + \exp(-2x)}.tanh(x)=1+exp(2x)1exp(2x).,tanh的函数图像和导数图像与sigmoid很相似,且导数图像中函数值不为0的部分更狭窄。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值