深度学习
JessssseYule
数学博士在读,主要研究方向:预训练,自监督学习,神经科学
展开
-
深度学习建模训练总结(八):如何处理梯度消失(爆炸)
在讨论如何处理梯度消失梯度爆炸的问题之前,先来看看梯度消失梯度爆炸的成因。梯度消失和梯度爆炸本质上是一样的,都是反向传播算法造成的。我们知道,一个神经网络就是一个一层层嵌套的非线性函数,假设现在模型一共有四层,我们求第二层的一个参数更新的梯度:δw2=∂Loss∂w2=∂Loss∂w2∂f4∂f3∂f3∂f2∂f2∂x2\delta w_2 = \frac{\partial Loss}{\partial w_2} = \frac{\partial Loss}{\partial w_2} \frac{\.原创 2020-11-12 09:57:58 · 1720 阅读 · 1 评论 -
深度学习建模训练总结(七):梳理NLP发展里程碑——BERT
bert是近两年非常火的模型,最近简单看了一下,确实有几个很惊艳的地方,这次就来看看bert到底是一个什么运作原理。在正式讨论bert之前,首先需要讨论transformer到底还有什么缺点,之前也提到,transformer完全可以看成是完美版本的RNN,它一方面能够实现动态输入输出,同时也避免了长期依赖的问题,但是,在实际应用的时候,人们还是发现了几点不足,作为特征提取器,直接使用transformer和LSTM、RNN一样,只能单向处理信息,即使使用双向transformer,也不是真正意义上的双向原创 2020-09-28 09:00:44 · 503 阅读 · 0 评论 -
深度学习建模训练总结(六):梳理NLP发展里程碑——细看transformer
之前也提到了,一般而言我们会采用LSTM处理输入的句子,根据上下文等信息调整词向量,但是LSTM终究有长期依赖问题,这是它的结构决定的,而self-attention的出现,既可以实现以上的目的,同时又避免了长期依赖问题,那为什么不用self-attention替代LSTM进行分析呢,这就是transformer提出的缘由。简单来说,transformer就是在seq2seq的基础上,引入multi-head attention,用注意力机制全面替代CNN、LSTM、RNN,从结构上来说,虽然看起来复.原创 2020-09-17 13:26:42 · 567 阅读 · 0 评论 -
深度学习建模训练总结(五):梳理NLP发展里程碑——各种注意力机制对比分析
之前提到,seq2seq的一大缺点是单一的语义向量难以表达长序列的完整语义,而改善这一问题的一个有效方法就是结合注意力机制,在不同的时刻针对输出计算包含不同语义的语义向量:所谓注意力机制,本质上就是在分析过程中引入权重,在本文,我主要介绍两种注意力计算框架:原始的计算框架和multi-head attention,从原始的框架中又进一步划分为:soft attention(key=value)、soft attention(key!=value)、self-attention(query=key=va.原创 2020-09-17 13:22:58 · 6612 阅读 · 1 评论 -
深度学习建模训练总结(四):梳理NLP发展里程碑——seq2seq
因为我自己是比较希望做NLP方向的研究,之前简单回顾了一下基础的神经网络之后,接下来打算就从NLP的角度,来看看模型是怎么一步步改进发展的。对于自然语言处理,首先想到的问题肯定是怎么把自然语言转化为向数字表示,毕竟机器没办法理解人类的语言,只能处理数字,所以人们就研究出了很多embedding模型,关于embedding我想在之后详细谈谈,这里先暂时跳过。假设我们已经对自然语言进行了embedding,那么首先想到的自然就是使用最基本的神经网络进行处理和分析,也就是CNN和LSTM(RNN),这算是N.原创 2020-09-17 13:18:28 · 450 阅读 · 0 评论 -
深度学习建模训练总结(三):细看RNN长期依赖问题与LSTM的改进
一般来说,全连接层和卷积层已经可以处理大部分的情况了,而RNN的出现,主要是针对两个问题,第一,处理变长的输入,第二,分析序列的顺序信息。虽然目前我们可以通过空间金字塔池化搭配卷积网络实现不定长度序列的处理分析,可是池化操作会丢失输入的顺序信息,所以RNN还是有他的作用的,而且他的结构是如此的简单和巧妙,所以这次我就想先回顾一下RNN,然后详细探讨一下它的长期依赖问题,最后再分析LSTM到底为什么能改善这个问题。我们可以先回顾一下如何基于RNN的思想一步步推导出公式。RNN的主要思想在于当前时刻的状态和.原创 2020-09-10 23:22:49 · 3177 阅读 · 1 评论 -
深度学习建模训练总结(二):回顾全连接层和卷积层
最近秋招要准备面试,所以我就想着回顾一下之前学过的内容,同时也想结合这些内容,谈谈如何构建模型和训练优化模型。之前简单介绍了一下如何训练模型,最后提到如果模型无法收敛,可能就要回到模型的结构进行分析,对于模型结构的分析,我认为有两点需要考虑的,第一,我们的场景、问题有什么需求,在构建模型的过程中是否需要根据这些需求设计合理的结构,第二,如何让模型降低损失、提高测试集准确率。当我们谈论神经网络的结构时,有四个最经典也是最常用的结构:全连接层、卷积层、RNN和LSTM,这次我就想谈谈我对全连接层和卷积层的.原创 2020-09-10 18:51:04 · 865 阅读 · 0 评论 -
深度学习建模训练总结(一):如何开始训练
以前都是侧重于看算法看模型,没有真正从零开始写一个模型然后训练它,最近开始自己写模型训练,发现很多东西都值得探讨一下,比如到底不同的模型有什么本质上的区别、神经元数量和神经层数量的不同有什么影响、如何选择激活函数、写好一个模型后怎么训练、训练有没有一个系统的流程等等,所以我就打算尽可能都了解一下,记录一下收获的东西。作为这个系列第一篇文章,我想讨论一下,当你写好一个模型之后,应该如何开始训练。首先第一点,我认为应该使用小数据集训练,看模型能否过拟合。我自己遇过很多次,写好模型之后马上训练,然后发现模型无原创 2020-08-13 19:55:15 · 2050 阅读 · 0 评论 -
工业界的深度学习(四):tensorflow架构及针对Atlas500的算子修改
上次谈tensorflow算子修改已经是几个月之前的事了,这几个月华为开源了mindspore深度学习框架,全面更新了mindstudio,不得不称赞华为确实一直在踏踏实实地做事。新的mindspore深度学习框架,从介绍上来看,它的开发体验更简单,支持云、边缘、手机的快速部署,或许就意味着如果用mindspore写模型,就能直接部署在atlas500上,不用像tensorflow那样一直改算子了,有兴趣的可以深入了解一下。当然,本文的重点还是tensorflow。之前修改算子的时候,说实话因为老板一直原创 2020-05-15 22:11:59 · 1165 阅读 · 0 评论 -
工业界的深度学习(三):针对华为Atlas 500的模型转换及tensorflow算子修改心得
纵观过去写的文章,我觉得最有价值的文章是元学习系列和分位数回归,以分位数回归为例,我记得写的时候网上还没多少中文的资料,只能谷歌一些英文的博客,加上上课的课件才写出来的,最后我觉得出来的文章还是能把分位数回归的思想说清楚的,像这种可能比较小众但是能确确实实帮到其他人的文章,对我来说价值才是最大的,而这次写的关于Atlas500的模型转化以及算子的修改也是如此。首先来谈一下模型如何进行转化,第一步...原创 2020-03-17 21:33:10 · 2935 阅读 · 2 评论 -
自然语言理解概述
在文章的开头,我必须说明,自然语言理解的定义、理论在网上有太多不同的说法,我在这里给出的是我个人认为比较好理解、能梳理清楚各个子领域的一种概述,如果有哪里出错了麻烦指正。所谓自然语言理解,就是希望机器能像人类一样,具备理解语言的能力,就像另一半说没有生气,到底是真的没有生气还是气到肺都炸了,这就需要很高的语言理解能力了。具体来说,我觉得自然语言理解要解决两个问题,第一个是理解什么,第二个是机...原创 2020-03-17 20:01:39 · 8143 阅读 · 0 评论 -
从数学角度再看深度学习
学习人工智能差不多一年,这一年的时间里,先是学了线性回归之类的传统机器学习,然后学了各式各样神经网络的深度学习,把基础都打好了就开始了解自然语言处理,最后实习的时候因为项目的原因又接触了目标识别,所以学了那么多之后到底学了什么,到底深度学习是什么,现在和最初相比,对于深度学习的看法有什么改变,这次就来聊一下。第一个想谈一下的是传统机器学习和深度学习,其实机器学习的范围很广,也可以说深度学习属于...原创 2020-03-12 22:40:30 · 739 阅读 · 0 评论 -
工业界的深度学习(二):边缘场景的模型落地与Atlas 500
之前也提到了,学术界的深度学习和工业界的深度学习区别还是挺大的,这次就来谈一下工业界的模型是如何落地的。首先来回顾一下,项目的目的是对加油站的监控视频做实时分析,看有没有危险行为,就像之前所说的,在加油站部署一个GPU不现实,第一耗电量大,第二机器未必能稳定运行,可能不小心被人撞了一下就断电了,第三那么多加油站每个加油站配一个GPU也是一笔大开销,除了GPU在云端跑数据的传输也是问题,毕竟我们还...原创 2020-03-05 20:51:11 · 2158 阅读 · 7 评论 -
工业界的深度学习(一):服务器训练环境的搭建
最近刚结束了在一家研究院的实习,实习的时候院里想开展一个深度学习的项目,恰好只有我对深度学习有一点点了解,所以就比较幸运地成为了项目的负责人。整个过程很多东西都是第一次接触,有做得好也有做不好的地方,但是不得不承认像这样自己完全负责一个项目真的学习了很多东西,我自己以前很少在网上看到深度学习的算法工程师分享他们的工作经历,所以也一直很期待能把这段时间的经历总结一下分享给大家。首先想说明的是,这个...原创 2020-03-01 22:19:26 · 1640 阅读 · 1 评论 -
YOLOv1
之前提到的R-CNN,需要先找到可能包含物体的框,然后进行前背景分类,消除重叠框,进行边界框回归和分类,这个过程就十分繁琐,速度很慢,虽然准确率不错,但如果想要实现实时的目标检测就很难了,于是接下来就介绍一下速度较快的YOLOv1(you only look once)系列模型。首先来简单介绍一下YOLOv1的思想,我们先来想一下,我们看一幅照片的时候,是不是扫一眼,找到感兴趣的地方(目标),...原创 2020-03-01 21:35:44 · 318 阅读 · 0 评论 -
R-CNN三部曲(三):Faster R-CNN
Fast R-CNN已经改进了很多R-CNN的缺点了,但还是有一个局限导致模型的速度无法进一步提升,那就是region proposals的生成,如果还是用selective search的方法对每个图像挑选两千个region proposals,那么模型始终还是无法得到改进的。而Faster R-CNN就针对这个问题,提出了region proposal network。首先来回顾一下sel...原创 2019-12-10 19:38:58 · 379 阅读 · 0 评论 -
R-CNN三部曲(二):空间金字塔池化与Fast R-CNN
SPPNet、Fast R-CNN是R-CNN的改进版本,这里我不打算单独介绍他们,而是注重介绍他们的改进方法。首先来回顾一下R-CNN有哪些缺点,第一,我们在用CNN对图像进行处理之前,需要处理图像使得他们保持同样的尺寸,一般可以选择扭曲图像或者直接裁剪,不论怎么做都有可能造成图像信息的丢失。第二,R-CNN需要对每个候选框进行一次CNN计算,计算之后还需要用SVM验证。第三,模型包含多...原创 2019-12-10 19:34:38 · 761 阅读 · 0 评论 -
R-CNN三部曲(一):目标检测与R-CNN
R-CNN是深度学习最早应用到目标检测的模型,主要还是对CNN进行改进,补充一些结构功能,使得模型能够满足目标检测的目标位置确定与分类。CNN的图像分类效果是非常好的,遗憾的是它无法对目标进行定位,所以R-CNN的思路就是,既然CNN没法定位目标,那不如把图像中潜在的目标都找出来,再分析找得对不对。第一步要做的就是找出图像中潜在的目标,也就是生成候选区域,方法有很多,比如selective ...原创 2019-12-10 19:28:44 · 496 阅读 · 0 评论 -
LSTM
RNN的主要问题是在BPTT过程中会出现梯度消失或者爆炸,事实上,一般来说我们会更关注梯度消失的问题,其实梯度消失不仅仅是计算机精度造成的,我们也可以从这个角度来理解,从BPTT的推导我们知道,距离比较远的序列数据在当前时刻的BPTT计算时对应的参数指数较大,当参数小于1,就会导致比较旧的数据对于梯度更新的贡献十分少,这就相当于"忘记"了这些数据。所以,虽然我们也可以通过截断的BPTT避免梯度爆...原创 2019-09-06 14:41:24 · 371 阅读 · 0 评论 -
深度学习半年学习心得(如何入门)
从一句代码都不会写到现在学习自然语言处理已经有一年多,虽然标题写的是深度学习的学习心得,但其实更多是这一年多的时间里,关于编程、模型等等的学习的回顾和反思。首先我本科学的是数学,不过说实话学得也不好,很多知识理论考完试就忘了,印象最深的只有实变函数,因为难得逆天,所以实际上,我的背景就是数学学得不好,编程也没怎么接触过(除了用过matlab做数学建模),这样的我却因为一些巧合去了一家企业实习做...原创 2019-10-16 19:53:05 · 15842 阅读 · 16 评论 -
CNN, RNN, Transformer关于特征提取的对比分析
在自然语言领域,不论是什么问题,首先都会有一种比较主流的操作,就是先对输入基于预训练的词向量做embedding,再用一个结构(特征提取器)结合上下文去做多一次embedding,这样得到的词向量,就可以有效地反映出自身的含义,以及在句子中与其他词之间的联系了。即使特征提取器五花八门,但总的来说可以认为都是基于CNN、RNN、transformer的改进版本,所以他们或多或少都有着这几个模型的...原创 2019-10-16 17:06:54 · 5953 阅读 · 0 评论 -
卷积神经网络细节分析
之前曾经简单介绍过cnn的原理,但终究只是感性的理解,如果只是简单调用CNN肯定是足够了,但最近在研究CNN、RNN、Transformer在提取特征的优缺点时,深深感觉到如果不从公式层面推导一次各个模型,是无法深入理解它们的不同之处的。首先要分析的第一个问题是,卷积神经网络为什么不采用卷积运算而是用互相关运算。首先要知道,卷积层的作用是提取局部特征,卷积核需要遍历整幅图像才能获取局部信息,所...原创 2019-10-16 17:01:24 · 472 阅读 · 0 评论 -
CNN发展史简述
相信很多人和我一样,在学习深度学习的时候会发现五花八门的各种模型名称,搞到头皮发麻,所以这次就打算简单介绍一下各种CNN的改进版本,在后续会对部分模型做详细分析介绍。第一个要介绍的是LeNet,诞生于1998年,可以说它就是我们入门时学习的卷积神经网络,包含了最基本的卷积层、池化层、全连接层。第二个是AlexNet,和LeNet相比,使用了ReLU作为激活函数(验证了效果在较深网络超过了si...原创 2019-10-16 16:55:23 · 4228 阅读 · 0 评论 -
多层感知器
在介绍单层感知器的时候,我们提到对于非线性可分问题,单层感知器是很难解决的,比如下面这个例子:很简单的一个分布,但事实上就是无法用直线进行分类,后来就出现了多层感知器,主要改变的地方是把第一层的感知器的输出作为第二层感知器的输入,即使只是简单添加一层感知器,也足以解决xor问题,关键的原因是,多了一层感知器,就像对原来的输入做了一个映射,第一层感知器的目的是对输入进行映射使得数据在新的空间能...原创 2019-08-08 22:57:26 · 3011 阅读 · 0 评论 -
反向传播算法
之前提到神经网络在训练过程中需要根据预测输出和实际输出去调整权重和阈值,但是没有具体说明这个过程,在回归模型中我们往往会采用梯度下降法,这里介绍一种神经网络比较常用的方法,反向传播算法,本质上我觉得它还是梯度下降法。首先我们采用实际输出矢量(actual output vector)和期望输出矢量(desired output vector)的欧式距离作为损失函数(一个简单例子):Ep=1M...原创 2019-08-08 23:02:38 · 339 阅读 · 0 评论 -
BP神经网络
之前从单个感知器介绍到多层感知器,也介绍了反向传播算法,总的来说这些就是神经网络的基础内容,所以现在就来总结一下神经网络的知识点。根据前面的介绍我们已经知道,神经网络就是由神经元构成的网络,神经元实际上和广义线性模型是非常相似的,举个例子,逻辑回归就是一种广义线性模型,它和线性回归的区别就在于对输入变量的加权组合加上了一个link function(sigmoid函数),使得输入变量的输出不再...原创 2019-08-08 23:11:25 · 392 阅读 · 0 评论 -
径向基函数神经网络简述
径向基函数神经网络是不同于BP神经网络的另一种的前馈神经网络,由输入层、一层非线性隐层(径向基层)和线性输出层组成的。关于径向基函数神经网络,首先要介绍一个定理,cover定理,对于一个复杂的在低维空间表现为非线性可分的模型分类问题,当我们从该低维空间由某种非线性变换而得到的高维空间来看待时,原来的问题就可能转化为一个简单的线性可分的模式分类问题。再看回径向基函数神经网络的结构,它只有一层隐...原创 2019-08-08 23:15:36 · 3619 阅读 · 0 评论 -
卷积运算与图像处理
在介绍卷积神经网络之前,我们需要先了解以下卷积运算和互相关运算。很多时候,我们都说卷积神经网络在图像处理方面具有很大的优势,主要原因就在于卷积运算,所以接下来就主要从图像处理和卷积的联系入手进行分析。卷积运算在概率统计中关于随机变量的和的计算中也有出现,从数学上的定义来看,当我们有两个随机变量分别服从密度函数f和g,如果需要求它们的和t的概率密度,那么就有:s(t)=f∗g=∫−∞∞f(x)...原创 2019-08-09 09:32:50 · 3819 阅读 · 2 评论 -
卷积神经网络简述
我们知道了卷积运算和图像处理的关系,接下来将会进一步推导卷积神经网络的一般结构。我们知道如果想检测图像中是否存在1,可以通过输入图像和核函数(特征核)进行卷积运算进行进一步分析,同样的,如果我们要分析一副图像中是否存在人脸,为了简化,直接认为可以通过三个核函数判断,分别是表示左眼、右眼和嘴巴的特征,然后,我们就用输入图像和这三个核函数分别进行卷积,从而得到三个特征映射图,之后,还会利用激活函数...原创 2019-08-09 09:36:48 · 468 阅读 · 0 评论 -
循环神经网络简述
如果说卷积神经网络是为了解决图像识别而提出的,那么循环神经网络(Recurrent Neural Network)就是为了解决自然语言处理而提出的,当然实际上这两种神经网络的用途很广,但是从自然语言处理的角度去看待循环神经网络可以更容易理解它的特性。自然语言处理(Natural Language Processing),简单来说就是让计算机理解人类的语言,从而解决相关的问题,比如现在有一句话"...原创 2019-08-09 09:43:43 · 758 阅读 · 0 评论 -
关于神经网络之强大的个人见解
深度学习因为其强大的能力越来越被应用到不同的领域,深度学习,或者说深层神经网络,说到底还是神经网络,只是基于不同的问题可能会添加一些额外的结构,或者增加大量的隐含层以达到所谓的深度,但这些都只是后话,毕竟即使只是一个简单的线性回归模型我们同样可以做各式各样的改进,为什么就轮不到它那么火呢,这里我想谈一下我个人的一些看法。首先从另一个角度来回顾一下最简单的全连接神经网络,这里我把它看成两个部分,...原创 2020-03-12 22:37:35 · 757 阅读 · 0 评论 -
感知器
在正式介绍神经网络之前,首先来了解一下神经网络的前身,MCP模型(McCulloch-Pitts模型),简单来说他就是一个神经元的建模。上图是生物意义上的神经元,也是我们要建模去模拟的神经元,根据生物的定义,我们建立的MCP模型主要简化成:接受多个输入,得到两种输出(1或者0),表示神经元的激活和抑制状态。用更数学的语言表达,就是:input=w1x1+w2x2+...+wnxninput...原创 2019-08-08 22:51:29 · 1402 阅读 · 0 评论