卖萌屋算法工程师思维导图part3—深度学习篇

卖萌屋的妹子们(划掉)作者团整理的算法工程师思维导图,求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。

下面是第三部分深度学习的内容~

公众号后台回复思维导图获取完整手册(Xmind脑图源文件,学习起来更方便(ง •_•)ง

编码器

  • DNN

    • 反向传播

    • 梯度消失与爆炸

      反向传播到梯度消失爆炸
      https://zhuanlan.zhihu.com/p/76772734

      原因

      本质上是因为梯度反向传播中的连乘效应。其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的

      激活函数导数*权值<1,多个小于1的数连乘之后,那将会越来越小,导致靠近输入层的层的权重的偏导几乎为0,也就是说几乎不更新,这就是梯度消失的根本原因。连乘下来就会导致梯度过大,导致梯度更新幅度特别大,可能会溢出,导致模型无法收敛。

      解决方案

      梯度爆炸:正则化/截断 梯度消失:

      1.改变激活函数:relu(tanh导数也小于1),但会出现dead relu

      2.batchnorm:使权值w落在激活函数敏感的区域,梯度变化大,避免梯度消失,同时加快收敛

      3.残差结构:求导时总有1在

  • CNN

    • 归纳偏置:locality & spatial invariance

    • 1*1卷积核

      作用:1.升维降维(in_channel -> out_channel) 2.非线性 与全连接层的区别:输入尺寸是否可变,全连接层的输入尺寸是固定的,卷积层的输入尺寸是任意的

    • 反向传播

      通过平铺的方式转换成全联接层

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

      avg pooling:相当于成了w = [1/4, 1/4, 1/4, 1/4]

    • 稀疏交互与权重共享

      每个输 出神经元仅与前一层特定局部区域内的冲经元存在连接权重 在卷积神经网络中,卷积核中的 每一个元素将作用于每一次局部输入的特定位置上 参数共享的物理意义是使得卷积层具高平移等变性。假如图像中有一 只猫,那么无论百出现在图像中的任何位置 3 我们都应该将 '8i只别为猫 在猫的 圄片上先进行卷积,再向右平移 l像素的输出,与先将圄片向右平移 J像 素再进行卷积操作的输出结果是相等的。

    • 池化本质:降采样

      平均池化:避免估计方差增大,对背景对保留效果好 最大池化:避免估计均值偏移,提取纹理信息

      油化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋 转操作的不变性。

  • RNN

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

    • 归纳偏置:sequentiality & time invariance

    • BPTT

    • 梯度消失与爆炸

      原因:

      https://zhuanlan.zhihu.com/p/76772734
      DNN中各个权重的梯度是独立的,该消失的就会消失,不会消失的就不会消失。RNN的特殊性在于,它的权重是共享的。当距离长了,最前面的导数就会消失或爆炸,但当前时刻整体的梯度并不会消失,因为它是求和的过程。RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。

      解决方案: LSTM长时记忆单元

    • LSTM

      消失:通过长时记忆单元,类似残差链接。但后来加了遗忘门,遗忘门介于0-1,梯度仍有可能消失 爆炸:梯度仍可能爆炸,但LSTM机制复杂,多了一层激活函数sigmoid,可以通过正则与裁剪解决https://zhuanlan.zhihu.com/p/30465140

      各模块可以使用其他激活函数吗?

      sigmoid符合门控的物理意义 tanh在-1到1之间,以0为中心,和大多数特征分布吻合,且在0处比sigmoid梯度大易收敛

      一开始没有遗忘门,也不是sigmoid,后来发现这样效果好

      relu的梯度是0/1,1的时候相当于同一个矩阵W连成,仍旧会梯度消失或爆炸的问题

      综上所述,当采用 ReLU 作为循环神经网络中隐含层的激活函数时,只有当 W的取值在单位矩阵附近时才能取得比较好的效果,因此需要将 W初始化为单位矩阵。实验证明,初始化 W为单位矩阵并使用 ReLU 激活函数在一些应用中取得了与长短期记忆模型相似的结果.

    • GRU要点:结构、与LSTM的异同

  • Transformer

    • 结构

    • QK非对称变换

      双线性点积模型,引入非对称性,更具健壮性(Attention mask对角元素值不一定是最大的,也就是说当前位置对自身的注意力得分不一定最高)。

    • Scaled Dot Product

      为什么是缩放点积,而不是点积模型?当输入信息的维度 d 比较高,点积模型的值通常有比较大方差,从而导致 softmax 函数的梯度会比较小。因此,缩放点积模型可以较好地解决这一问题。

      相较于加性模型,点积模型具备哪些优点?常用的Attention机制为加性模型和点积模型,理论上加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高(实际上,随着维度d的增大,加性模型会明显好于点积模型)。

    • Multi-head

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

      多头机制为什么有效?

      1.类似于CNN中通过多通道机制进行特征选择;

      2.Transformer中先通过切头(spilt)再分别进行Scaled Dot-Product Attention,可以使进行点积计算的维度d不大(防止梯度消失),同时缩小attention mask矩阵。

    • FFN

      Transformer在抛弃了 LSTM 结构后,FFN 中的 ReLU成为了一个主要的提供非线性变换的单元。

激活函数

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

  • tanh

    相比Sigmoid函数, tanh的输出范围时(-1, 1),解决了Sigmoid函数的不是zero-centered输出问题;幂运算的问题仍然存在;tanh导数范围在(0, 1)之间,相比sigmoid的(0, 0.25),梯度消失(gradient vanishing)问题会得到缓解,但仍然还会存在。

    要点: Xavier初始化、公式、导数

  • relu

    相比Sigmoid和tanh,ReLU摒弃了复杂的计算,提高了运算速度。解决了梯度消失问题,收敛速度快于Sigmoid和tanh函数

    缺点:爆炸梯度(通过梯度裁剪来解决) 如果学习率过大,会出现dead relu的不可逆情况 — 激活为0时不进行学习(通过加参数的ReLu解决) 激活值的均值和方差不是0和1。(通过从激活中减去约0.5来部分解决这个问题。在fastai的视频力有个更好的解释)

    Leaky relu:增加了参数要点:He初始化、公式、导数

  • gelu

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

    https://blog.csdn.net/liruihongbob/article/details/86510622

    ReLu:缺乏随机因素,只用0和1

    https://www.cnblogs.com/shiyublog/p/11121839.html

    GeLu:在激活中引入了随机正则的思想,根据当前input大于其余inputs的概率进行随机正则化,即为在mask时依赖输入的数据分布,即x越小越有可能被mask掉,因此服从bernoulli(Φ(x))

    高斯误差线性单元

    对于每一个输入 x,其服从于标准正态分布 N(0, 1),它会乘上一个伯努利分布 Bernoulli(Φ(x)),其中Φ(x) = P(X ≤ x)。这么选择是因为神经元的输入趋向于正太分布,这么设定使得当输入x减小的时候,输入会有一个更高的概率被dropout掉。

    Gelu(x) = xΦ(x) = xP(X ≤ x)

  • sigmoid

    激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);

    反向传播求误差梯度时,求导涉及除法;

    Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布

    优点

    激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);反向传播求误差梯度时,求导涉及除法;Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布

  • softmax

    sigmoid是softmax的特例:

    https://blog.csdn.net/weixin_37136725/article/details/53884173

损失函数

  • 分类

    • 0-1 loss

    • hinge loss

    • sigmoid loss

    • cross entropy

      求导:
      https://zhuanlan.zhihu.com/p/60042105

  • 回归

    • square loss

      对异常点敏感

    • absolute loss

      对异常点鲁棒,但是y=f时不可导

    • Huber loss

优化算法

  • 求解析解:凸函数

  • 迭代法

    • 一阶法:梯度下降

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

      SGD

      数据要shuffle 一开始重j去采用较大的学习速率 ,当误差曲线进入平台期后,;成小学习速菜做更精细的调整。最优的学习速 率方案也通常需要调参才能得到。

      随机梯度下降法无法收敛 1.batch size太小,震荡 2.峡谷和鞍点

      Adam

      指数加权:

      1.不用像mean一样统计个数重新计算avg

      2.历史久远的权重会呈指数衰减

      动量=惯性保持:累加了之前步的速度

      1.增强了整体方向的速度,加快收敛

      2.消减了错误方向的速度,减少震荡

      AdaGrad=环境感知:根据不同参数的一些经验性判断,自适应地确定参数的学习速率,不同参数的重新步幅是不同的。

      1.更新频率低的参数可以有较大幅度的更新,更新频率高的步幅可以减小。AdaGrad方法采用 “历史梯度平方和”来衡量不同参数的梯度的稀疏性 3 取值越小表明越稀疏

      参数中每个维度的更新速率都不一样!!!

      2.随着时间的推移,学习率越来越小,保证了结果的最终收敛

      缺点:即使Adam有自适应学习率,也需要调整整体学习率(warmup)

      AdamW是Adam在权重上使用了L2正则化,这样小的权重泛化性能更好。

    • 二阶法:牛顿法

      在高维情况下, Hessian ~E 阵求逆的计算复杂度很大 3 而且当目标函数非口时,二阶法有可能会收 敛到鞍点( Saddle Point ) 。

      鞍点:一个不是局部最小值的驻点(一阶导数为0的点)称为鞍点。数学含义是:目标函数在此点上的梯度(一阶导数)值为 0, 但从改点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。

正则化

  • 修改数据

    • 增加数据

    • label smoothing

  • 修改结构:Normalisation

    • Batchnorm:

      为什么对NN层中归一化?

      随着网络训练的进行 , 每个隐层的参数变化使得后一层的输入 发生变化 3 从而每-批训练数据的分布也随之改变 3 致使网络在每次迭 代中都需要拟合不罔的数据分布,增大训练的复杂度以及过拟合的风险。

      为什么增加新的分布?

      以Sigmoid函数为例,批量归一化 之后数据整体处于函数的非饱和区域,只包含线性变躁,破坏了之前学 习到的特征分布 。

      在CNN的应用

      在全连接网络中是对每个神经元进行归一化,也就是每个神经元都会学习一个γ和β。批量归一化在卷积神经网络中应用时,需要注意卷积神经网络的参数共享机制 。每一个卷积核的参数在不同位置的楠经元当中是共享 的, 因此也应该被一起归一化。在卷积中,每层由多少个卷积核,就学习几个γ和β

      预测

      在预测时无法计算均值和方差,通常需要在训练时根据mini-batch和指数加权平均计算,直接用于预测

    • Layernorm

      对比BatchNorm

      1.对于RNN来说,sequence的长度是不一致的,换句话说RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一个特殊sequence比其他sequence长很多,这样training时,计算很麻烦。

      2.不依赖batch size:在hidden size的维度进行layernorm,跟batch和seq_len无关。beta和gamma的维度都是(hidden_size,),每个神经元有自己的均值和方差,因为不同单元是不同的feature,量纲不一样。normalisaion通常在非线性函数之前,LN在BERT中主要起到白化的作用,增强模型稳定性(如果删除则无法收敛)。

  • 修改结构:Dropout

    本质上是模型集成。

    实现:1.训练时不动,预测时乘p 2.反向传播传播时除p,预测不动。

  • 修改结构:weight decay

    在更新w时减去一个常数,跟L2求导之后的公式一致
    https://bbabenko.github.io/weight-decay/

  • Weight decay和L2正则在SGD情况下等价,Adam下不等:https://zhuanlan.zhihu.com/p/40814046

    权重越大惩罚应该越大,但adam的adagrad调整使得惩罚变小

  • 修改结构:正则项

    • L1

      稀疏解的好处:1.特征选择,减少计算 2.避免过拟合,增强鲁棒性

      解空间的解释:加上了菱形约束,容易在尖角处碰撞出解

      贝叶斯角度解释:加了laplace分布,在0点的概率要更高

    • L2

      解空间角度:加了球形约束,等高线切在圆上贝叶斯角度:加了高斯分布,在0点附近的概率更大且相近

  • 训练技巧

    • early stopping

    • warmup

      刚开始小一些,防止对前几个batch的过拟合,之后见过了不少数据,可以慢慢升高。之后参数基本上稳定了,就小学习率精细调整。

公众号后台回复思维导图获取完整手册(Xmind脑图源文件,学习起来更方便(ง •_•)ง

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | Zero-Shot Transfer Learning for Event Extraction

事件抽取的目标是在非结构化的文本中确认事件的触发词&#xff08;Eventtrigger&#xff09;和参与者&#xff08;Event argument&#xff09;&#xff0c;并判断触法词的事件类型&#xff08;Eventtype&#xff09;&#xff0c;判断参与者在事件中的扮演的角色&#xff08;Arg…

今日头条Java后台Java研发三面题目

最近有同学在优知学院留言区留言是否能发布今日头条的面试题目&#xff0c;这位同学&#xff0c;题目来了哦~ 一面 concurrent包下面用过哪些&#xff1f; countdownlatch功能实现 synchronized和lock区别&#xff0c;重入锁 thread和runnable的区别 AtomicInteger实现原理…

实时事理逻辑知识库(事理图谱)终身学习项目-EventKGNELL(学迹)

EventKGNELL EventKGNELL, event knowlege graph never end learning system, a event-centric knowledge base search system&#xff0c;实时事理逻辑知识库终身学习和事件为核心的知识库搜索项目。包括事件概念抽取、事件因果逻辑抽取、事件数据关联推荐与推理。 项目地址&…

python--从入门到实践--chapter 15 16 17 生成数据/下载数据/web API

1.随机漫步 random_walk.py from random import choice class RandomWalk():def __init__(self, num_points5000):self.num_points num_pointsself.x_value [0]self.y_value [0]def fill_walk(self):while len(self.x_value) < self.num_points:x_direction choice([1…

ACL2020 | 基于Knowledge Embedding的多跳知识图谱问答

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;舒意恒&#xff08;南京大学硕士生&#xff0c;知识图谱方向&#xff09;背景什么是知识图谱问答&#xff1f;知识图谱&#xff08;KG&#xff09;是一个多关系图&#xff0c;其中包含数以百万计的实体&#xff0c;以及…

论文浅尝 | 基于超平面的时间感知知识图谱嵌入

链接&#xff1a;http://talukdar.net/papers/emnlp2018_HyTE.pdf本文主要关注 KG embedding 中三元组成立的时间有效性问题&#xff0c;比如三元组(Cristiano Ronaldo, playsFor, Manchester United)&#xff0c;其成立的有效时间段是2003年到2009年&#xff0c;这个使三元组有…

Java面试进阶:Dubbo、Zookeeper面试题锦集

Dubbo面试题锦集 1、默认也推荐使用netty框架&#xff0c;还有mina。 2、默认是阻塞的&#xff0c;可以异步调用&#xff0c;没有返回值的可以这么做。 3、推荐使用zookeeper注册中心&#xff0c;还有redis等不推荐。 4、默认使用Hessian序列化&#xff0c;还有Duddo、FastJ…

POJ 1064 分割线缆(二分查找)

题目链接&#xff1a;http://poj.org/problem?id1064 题目大意&#xff1a;多根电缆切成指定段数&#xff08;每段相同长度&#xff09;&#xff0c;求每段线缆的最大长度&#xff08;精确到0.01&#xff09; 这题精度控制是难点&#xff0c;方法很简单&#xff0c;二分查找…

Learning to rank基本算法小结

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/26539920 Learning to rank基本算法小结最近工作中需要调研一下搜索排序相关的方法&#xff0c;这里写一篇水文&#xff0c;总结一下几天下来的调研成果。包括Learning to rank 基本方法Learning to rank 指标介绍LambdaMART…

命名实体识别难在哪?

亚里士多德在《形而上学》中认为&#xff0c;对于存在&#xff0c;最重要的问题&#xff0c;就是给世间万物的存在基于语言来分层和分类。从神说要有光起&#xff0c;到基友给你取了个外号叫狗蛋。你会发现&#xff0c;创造与命名&#xff0c;在历史中往往等同。名字是自我概念…

论文浅尝 | 面向简单知识库问答的模式修正强化策略

链接&#xff1a;http://aclweb.org/anthology/C18-1277知识库问答研究旨在利用结构化事实回答自然语言问题&#xff0c;在网络中&#xff0c;简单问题占据了相当大的比例。本文提出在完成模式抽取和实体链接后&#xff0c;构建一个模式修正机制&#xff0c;从而缓解错误积累问…

最全BAT数据库面试89题:mysql、大数据、redis

数据库 mysql面试题目&#xff1a; MySQL InnoDB、Mysaim的特点&#xff1f; 乐观锁和悲观锁的区别&#xff1f;&#xff1f; 行锁和表锁的区别&#xff1f; 数据库隔离级别是什么&#xff1f;有什么作用&#xff1f; MySQL主备同步的基本原理。 如何优化数据库性能&#…

POJ 3481 Double Queue

题目链接&#xff1a;http://poj.org/problem?id3481 题目大意&#xff1a; 给你0-3四个指令&#xff1a; 0 退出 1 添加优先级为P 的 K值&#xff0c;进入队列 2 最高优先级出队 3 最低优先级出队 思路&#xff1a; 利用map数据对key默认升序排列。 AC代码如下&#xff…

理解 Word Embedding,全面拥抱 ELMO

原文链接&#xff1a;https://www.infoq.cn/article/B8-BMA1BUfuh5MxQ687T 理解 Word Embedding&#xff0c;全面拥抱 ELMO DataFun社区 阅读数&#xff1a;4238 2019 年 6 月 15 日提到 Word Embedding &#xff0c;如果你的脑海里面冒出来的是 Word2Vec &#xff0c;Glove &…

肝了1W字!文本生成评价指标的进化与推翻

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;林镇坤&#xff08;中山大学研一&#xff0c;对文本生成和猫感兴趣&#xff09;前言文本生成目前的一大瓶颈是如何客观&#xff0c;准确的评价机器生成文本的质量。一个好的评价指标&#xff08;或者设置合理的损失函数…

美团大脑 | 知识图谱的建模方法及其应用

本文转载自公众号: 美团技术团队.作为人工智能时代最重要的知识表示方式之一&#xff0c;知识图谱能够打破不同场景下的数据隔离&#xff0c;为搜索、推荐、问答、解释与决策等应用提供基础支撑。美团大脑围绕吃喝玩乐等多种场景&#xff0c;构建了生活娱乐领域超大规模的知识图…

最全Java面试208题,涵盖大厂必考范围!强烈建议收藏~

这些题目是去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。 一.java基础面试知识点 java中和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别…

大规模事理常识知识系统“学迹”的定位、应用与不足

我们于3月16正式对外发布了一个面向事理的实时学习和搜索系统Demo&#xff0c;取名叫“学迹”&#xff0c;取自“学事理&#xff0c;知行迹”(https://xueji.zhiwenben.com)。“学迹”的发布&#xff0c;进一步拓宽了现有知识库的门类&#xff0c;为进一步获取特定事件的概念解…

数据结构--散列表 Hash Table

文章目录1.线性探测 哈希表代码2.拉链法 哈希表代码1. 散列表用的是数组支持按照下标随机访问数据的特性&#xff0c;所以散列表其实就是数组的一种扩展&#xff0c;由数组演化而来。可以说&#xff0c;如果没有数组&#xff0c;就没有散列表。 2. 散列函数&#xff0c;设计的基…

论文浅尝 | 面向自动分类归纳的端到端强化学习

动机术语层次在许多自然语言处理任务中扮演着重要角色。然而&#xff0c;大部分现有的术语层次是人工构建的&#xff0c;其覆盖范围有限&#xff0c;或者某些领域上不可用。因此&#xff0c;最近的工作集中在自动化的术语层次归纳(automatictaxonomy induction)上。之前的研究工…