Task01:线性回归;Softmax与分类模型、多层感知机

Task01:线性回归;Softmax与分类模型、多层感知机

目录

Task01:线性回归;Softmax与分类模型、多层感知机

1、线性回归

1.1 线性回归的基本要素

1.2 矢量计算表达式

2、softmax回归

2.1 分类问题

2.2 softmax运算

2.3 交叉熵损失函数

3、多层感知机

  3.1 隐藏层

  3.2 激活函数

  3.3 多层感知机定义


 

1、线性回归

线性回归输出是一个连续值,因此适用于回归问题。回归问题在实际中很常见,如预测房屋价格、气温、销售额等连续值的问题。

1.1 线性回归的基本要素

以一个简单的预测房价的例子来说明,目标是预测房价,通过探索房价和面积与房龄这两个因素的具体关系来理解线性回归。

(1)模型

线性回归假设输入与各输出之间是线性关系,

设房屋的面积为x1,房龄为x2,售出价格为y。建立基于输入x1和x2来计算输出y的表达式,也就是模型(model):

\widehat{y}=x1w1 + x2w2 + b

其中w1和w2是权重(weight),b是偏差(bias),且均为标量。它们是线性回归模型的参数(parameter)。模型输出y^是线性回归对真实价格y的预测或估计。我们通常允许它们之间有一定误差。

(2)模型训练

        ①:训练数据

一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。

采集的样本数为n,索引为i的样本的特征为x_{1}^{(i)}x_{2}^{(i)},标签为y^{(i)}。对于索引为i的房屋,线性回归模型的房屋价格预测表达式为:

\widehat{y}^{(i)} = x_{1}^{(i)}w1+x_{2}^{(i)}w2+b

        ②:损失函数

在模型训练中,我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差,且数值越小表示误差越小。衡量误差的函数称为损失函数(loss function),例如常用的 平方误差损失函数(平方损失):

通常,使用训练数据集中所有样本误差的平均来衡量模型预测的质量,即

         ③:优化函数

模型的解析解:当模型和损失函数形式较为简单时,可以直接用公式表达出来的误差最小化问题的解。

模型的数值解:只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值,大多数深度学习模型的解。

在求数值解的优化算法中, 小批量随机梯度下降(mini-batch stochastic gradient descent)

算法过程:

先选取一组模型参数的初始值,如随机选取;

接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。

在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。

学习率: η代表在每次优化中,能够学习的步长的大小

批量大小: B是小批量计算中的批量大小batch size

 

1.2 矢量计算表达式

使用矢量计算能节省更多时间。需要注意维度关系。

如果我们对训练数据集里的3个房屋样本(索引分别为1、2和3)逐一预测价格,将得到:

现在,我们将上面3个等式转化成矢量计算。设

 

2、softmax回归

对于离散值预测问题,我们可以使用诸如softmax回归在内的分类模型。和线性回归不同,softmax回归的输出单元从一个变成了多个,且引入了softmax运算使输出更适合离散值的预测和训练。

2.1 分类问题

一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。
图像中的4像素分别记为x1,x2,x3,x4。
假设真实标签为狗、猫或者鸡,这些标签对应的离散值为y1,y2,y3。
我们通常使用离散的数值来表示类别,例如y1=1,y2=2,y3=3。

所以权重包含12个标量(带下标的ww)、偏差包含3个标量(带下标的bb),且对每个输入计算o1,o2,o3o1,o2,o3这3个输出:

2.2 softmax运算

· 2.2.1 分类模型的直接输出问题

  1.  一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果o1=o3=103,那么输出值10却又表示图像类别为猫的概率很低。
  2. 另一方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

· 2.2.2 softmax 的运算过程(上述问题的解决方法)

softmax通过下式将输出值变换成值为正且和为1的概率分布:

   

y^1+y^2+y^3=1且0≤y^1,y^2,y^3≤1,因此y^1,y^2,y^3是一个合法的概率分布。这时候,如果y^2=0.8,不管y^1和y^3的值是多少,我们都知道图像类别为猫的概率是80%。此外,我们注意到

    

因此softmax运算不改变预测类别输出。

·2.2.3 softmax的溢出问题

注意:当输出值较大时,softmax中的指数运算会出现上溢或者下溢的问题

即浮点数只有64位,在计算指数函数的环节,exp{1000} =inf,会发生上溢出;exp{-1000} =0,会发生下溢出。

解决方法:减去一个最大值

对任意a都成立,这意味着我们可以自由地调节指数函数的指数部分,一个典型的做法是取公式中的最大值:a=max{x1,x2.....xn}

这可以保证指数最大不会超过0,于是你就不会上溢出。即便剩余的部分下溢出了,加了a之后,你也能得到一个合理的值。

 

2.3 交叉熵损失函数

使用softmax运算后可以更方便地与离散标签计算误差。

对于样本i,我们构造向量y(i)∈Rq ,使其第y(i)(样本i类别的离散数值)个元素为1,其余为0。这样我们的训练目标可以设为使预测概率分布y^(i)尽可能接近真实的标签概率分布y(i)。

然而,想要预测分类结果正确,我们其实并不需要预测概率完全等于标签概率。平方损失过于严格,所以可以改用交叉熵(cross entropy)来进行衡量:

         

假设训练数据集的样本数为n,交叉熵损失函数定义为:

     

 

3、多层感知机

多层神经网络的概念

  3.1 隐藏层

多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。

                           

 上图为带有隐藏层的多层感知机。它含有一个隐藏层,该层中有5个隐藏单元。

 

 具体来说,给定一个小批量样本X∈Rn×dX∈Rn×d,其批量大小为nn,输入个数为dd。假设多层感知机只有一个隐藏层,其中隐藏单元个数为hh。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为HH,有H∈Rn×hH∈Rn×h。因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数分别为Wh∈Rd×h Wh∈Rd×h和 bh∈R1×hbh∈R1×h,输出层的权重和偏差参数分别为Wo∈Rh×qWo∈Rh×q和bo∈R1×qbo∈R1×q

            

将隐藏层的输出直接作为输出层的输入。如果将以上两个式子联立起来,可以得到

从联立后的式子可以看出,虽然神经网络引入了隐藏层,却依然等价于一个单层神经网络:其中输出层权重参数为WhWoWhWo,偏差参数为bhWo+bobhWo+bo。不难发现,即便再添加更多的隐藏层,以上设计依然只能与仅含输出层的单层神经网络等价。

  3.2 激活函数

多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。这个非线性函数被称为激活函数(activation function)

    ① ReLU函数

整流线性单元(Rectified Linear Unit),又称为修正线性单元,一般以其英文缩写ReLU来指代。

其数学表达式为:

在阈值以下的输出都被截断成“0”,在阈值以上的输出则线性不变。

其函数图像为:

 

显然,当输入为负数时,ReLU函数的导数为0;当输入为正数时,ReLU函数的导数为1。尽管输入为0时ReLU函数不可导,但是我们可以取此处的导数为0。

ReLU在神经网络的实际应用中被广泛采用,因为其既具有非线性的特点,使得信息整合能力大大增强;在一定范围内又具有线性特点,使得其训练简单、快速。

优点:

· 相比sigmoid和tanh,ReLU在随机梯度下降过程中能够明显加快收敛速度。

· 相比sigmoid和tanh包含复杂算子,ReLU通过简单的阈值操作就能完成。

缺点:

在训练过程中可能是脆弱的并且出现“死亡”。例如:流经ReLU神经元的大梯度可能导致权重更新到不再被任何数据激活的位置上,流经该神经元的梯度将永远为 0(即ReLU单元不可逆地死去)。如果学习率设置太高,那么网络中甚至有高达40%的神经元不能被激活。通过调整学习率,可以限制这种情况的发生。

 

    ② sigmoid函数

sigmoid神经元可以使输出平滑而连续地限制在0~1的范围内,它靠近0的区域接近于线性,而远离0的区域为非线性。

sigmoid神经元可以将实数”压缩“至0~1的范围内,大的负数趋向于0,大的正数则趋向于1.

其数学表达式为:

其函数图像为:

sigmoid函数的导数:

其存在两个主要的缺陷:

        i.Sigmoid函数进入饱和区后会造成梯度消失。

          即函数两端相应趋向于饱和(接近于0或者1),在这些区域的梯度几近为0,在反向传播中,这个(局部)梯度将以乘数的关系进入整个优化过程。

        ii.Sigmoid函数并非以 0 为中心。

它目前逐渐被更简单的ReLU函数取代。

 

  ③ tanh函数

tanh神经元是sigmoid神经元的一个继承,它将实数”压缩“至 -1~1 的范围内,因此改进了sigmoid变化过于平缓的问题。

其数学表达式为:

 函数图像为:

函数求导:

 

  3.3 多层感知机定义

多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。

其中ϕ表示激活函数。

 

参考资料:

http://zh.gluon.ai/chapter_deep-learning-basics/mlp.html

https://zhuanlan.zhihu.com/p/29376573

https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/jupyter/FUT2TsxGNn4g4JY1ayb1W

https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/jupyter/sgHW6P_Qf9EfSEMnIfBJx

https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/jupyter/U-WdzWhU6C29MaLj0udI5

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值