线性回归、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(w,b)=1ni=1nl(i)(w,b)=1ni=1n12(wx(i)+by(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.

优化函数采用小批量随机梯度下降,在一个批量中将各个样本的梯度平均之后乘学习率,进行一次更新
(w,b)(w,b)ηBiB(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)

实践中会用到的一些函数
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=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)}.
在softmax回归中不使用平方损失,因为平方损失会尽量使估计的概率分布和真实的概率分布保持一致,而在softmax中更关心的是正确分类的概率有多大,而不关心其他的类别的概率分布情况,所以平方损失会显得过于严格,使用交叉熵损失函数会更好。同时可知即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。
Loss=y^(i)y(i)2/2\begin{aligned}Loss = |\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}|^2/2\end{aligned}
H(y(i),y^(i))=j=1qyj(i)logy^j(i),H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_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}
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.
常用的**函数包括ReLU,sigmoid,tanh,其中Relu因为计算复杂度较小且能缓解梯度消失的现象,常用在隐藏层中,用于分类器时常用sigmoid(这点有点不太理解)。
ReLU(x)=max(x,0).\text{ReLU}(x) = \max(x, 0).,ReLU的导数在小于0的部分为0,在大于0的部分为1,在反向传播中依然可能会存在梯度消失的现象。
深度学习01深度学习01sigmoid(x)=11+exp(x).\text{sigmoid}(x) = \frac{1}{1 + \exp(-x)}.,从图像中可以看出sifmoid函数的导数图像关于x=0对称,在(-4,4)的范围内导数不为0,而在剩余的范围内导数基本为0,容易导致反向传播过程中的梯度消失
深度学习01深度学习01tanh(x)=1exp(2x)1+exp(2x).\text{tanh}(x) = \frac{1 - \exp(-2x)}{1 + \exp(-2x)}.,tanh的函数图像和导数图像与sigmoid很相似,且导数图像中函数值不为0的部分更狭窄。
深度学习01深度学习01

相关文章: