神经网络与深度学习_哈工大课堂笔记1

回归与分类(问题描述) 

回归问题

回归目标是用网络“代替”某函数,即输入自变量x,使得网络输出结果\hat{y}和函数输出的真实结果y尽可能“相似”

损失函数

最常见的就是平方误差损失,形式如下:

分类问题

不是问“多少”,而是问“哪一个”。比如“某个电子邮件是否属于垃圾邮件文件夹?”

对类别的编码

独热编码(one-hot encoding)。 独热编码是一个向量,它的分量和类别一样多。 类别对应的分量设置为1,其他所有分量设置为0。 比如,有{猫,鸡,狗}的分类问题,可以令(1,0,0)对应于“猫”、(0,1,0)对应于“鸡”、(0,0,1)对应于“狗”。

软类别与softmax

机器学习实践者即使只关心硬类别,却仍然使用软类别的模型。样本的“硬性”类别就指属于哪个类别;“软性”类别指属于每个类别的概率。

softmax函数能够将“未规范化的预测”(即输入经过网络的直接结果)变换为非负数并且总和为1,同时让模型保持可导的性质。其公式如下:

损失函数

采用最大似然估计的框架和信息论的相关知识,形式如下

式中n是数据个数,q是独热向量长度,y_j是真实标签的第j维的值,\hat{y}_j是网络对第j类的输出概率值。由于真实标签是独热向量,所以只剩下一个数。

此损失函数又称为交叉熵损失,形式由来在这里省略,可以参考22.11. Information Theory — Dive into Deep Learning 1.0.3 documentation

多层感知机(神经网络)

特点

输出层和输入层之间有一个或多个隐藏层,并通过激活函数转换隐藏层的输出。这样整个网络就可以是非线性函数的表示。

摘抄于《动手学深度学习》

激活函数

一般来说,有了激活函数,就不可能再将我们的多层感知机退化成线性模型。常见的激活函数有ReLU函数,Sigmoid函数

反向传播(梯度计算)

神经网络参数的更新涉及到梯度的计算,使用各种库时,其实是采用了梯度的自动计算(自动微分),大大简化了深度学习算法的实现。 在库可以自动微分之前,即使是对复杂模型的微小调整也需要手工重新计算复杂的导数, 学术论文也不得不分配大量页面来推导更新规则。

这里,举一个简单的例子,展示库代码编写自动微分的基础原则。

网络的正向传播流程如下:

其中符合含义如下:输入向量x,隐藏激活向量h,网络输出向量o,样本标签y,隐藏层权重W^{(1)},输出层权重W^{(2)},损失函数l(o,y)

反向传播

该方法用了求导链式法则,其中涉及的计算有求函数偏导数,以及带入前向传播计算结果

针对上述所举的前向例子,其梯度计算公式应该是

在训练神经网络时,在初始化模型参数后, 我们交替使用前向传播和反向传播,利用反向传播给出的梯度来更新模型参数。 注意,反向传播重复利用前向传播中存储的中间值,以避免重复计算。 带来的影响之一是我们需要保留中间值,直到反向传播完成。 这也是训练比单纯的预测需要更多的内存(显存)的原因之一。 此外,这些中间值的大小与网络层的数量和批量的大小大致成正比。

代码实现

跑通《动手学深度学习》的一个小例子4.2. 多层感知机的从零开始实现 — 动手学深度学习 2.0.0 documentation

算法优化

暂退

在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。示意图如下:

自适应梯度

AdaGrad 及 Adam 等算法可自适应调节学习速率,加速收敛。这里不讨论算法公式更改的设计由来,因为,实际编程过程中,直接调用库即可。为了在别的领域里也可以实现此“自适应”,这里指出造成自适应的公式

摘抄于哈尔滨工业大学屈桢深老师的ppt

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值