新手如何快速入门深度学习

新手如何快速入门深度学习,第1张

新手如何快速入门深度学习
深度学习必备基础
深度学习发展至今已然有几个年头了,上个世纪九十年代的美国银行率先使用深度学习技术做为手写字体识别,但深度学习的惊艳登场并没有留住它一时的辉煌,直到2012年深度学习这个领域才开始渐入人们的眼帘。可以说我们现在拥有着绝佳的学习机会,世界顶级的会的议论文,各大数据库公开的数据源以及开源的力量已经让我们站在了巨人的肩膀上去成长。下面就给大家分享一份深度学习入门指南,让大家能更快更好的加入深度学习这个璀璨的舞台。
必备技能1-python:
python我就不必多说啦吧,有多方便大家用过了都知道,这里强调这点是因为,现在无论是公开的论文还是代码基本在深度学习这个领域都是python为主流的,我在学习的过程中一个最重要的点就是学习别人的代码,通过把高手的代码debug一遍我们才能真正的懂一个技术的原理,那么在这个领域里高手们的代码很多都是python版本的。更重要的一点是,我们入门这个领域肯定不会自己动手一步一步的去实现所有需要的技术代码,一个最直接的学习方法就是结合开源的框架,那么可以说深度学习的开源框架基本都是python接口的,能用这些开源框架是我们学习的一个最基本的手段啦,所以重要的事情说三遍,python!python!python!
必备技能2–线性代数,微积分
很多同学该觉得很头疼了。。。,怎么有是数学啊,没错咱们深度学习需要很好的数据基础,我所说的这俩简直就是九牛一毛,但是作为我们入门来说已经够啦。其实咱们所有的深度学习是什么呢?它就是一个复杂的人工神经网络嘛,那么要去能懂这个神经网络的原理,有机器学习基础的同学们肯定都知道,其实就包括了两部分嘛,前向传播和反向传播。这两部分一个最最最核心的点就是矩阵计算和梯度求导运算啦,所以说咱们要能入门这个领域,这些数学可是还要复习起来的。
必备技能3–英文阅读能力:
这个还需要说啥子嘛?技术都是国外搬来的,咱们要学习的肯定都是国外各路大神的作品啦,比如课程呀,论文呀等等,那么要能跟上大神们的脚步,这点肯定是不能少的吧。
必备技能4–查找资料能力:
这点其实是蛮重要的,也就是我们在学习的过程中,要积累一些数据库还有好的学习资源,比如公开的代码呀,这也就要我们经常去逛逛技术博客,github呀看看有木有一些适合咱们学习的东东,找到有价值的学习资源比咱们自己埋头苦学更有价值的。
避开常见误区
深度学习这个领域的坑可以说还是蛮多的,咱们在进军的路上
一定要避开这些了。
自己挖的坑:
咱们在学习的过程中一定要循序渐进,切不可急于求成。这就像练武功一样,一味的求快求狠只能走火入门。这里我暂且认为想要入门的同学们的基础都是比较薄弱的,咱们不能跳过传统机器学习这条路直接一大步迈进深度学习这个领域中,我们起码要知道神经网络是怎么一回事。这对于咱们理解以及掌握深度学习有着重要的帮助,比如咱们第一步要做的就是去搞明白什么是前向和反向传播以及从头到尾的自己推导一遍,有了这样一个过程咱们再去学习深度学习就会轻松多啦。千万不可自欺欺人,一步还没走稳呢就着急跑去下一个知识点啦,在积累的过程中不要给自己挖坑,确保自己搞明白一个点啦再去深入到下一个点中。
掉进别人的坑:
我们在学习的路上肯定会挖掘到很多的资源,但是这些资源不可盲目学习,我们需要有一定的鉴别能力。就好比说我们跟着一个武功一般的学,怎么也不会学到哪里去,但是我们给一个武林至尊当小弟,我们学到的也不会少嘛。这就是说我们要学习的资源一定要是通过了大家的认可的,在我看来现在百度到的很多资源其实错误的地方还是蛮多的,我们尽量多关注一些国外大神的主页以及github上比较火的项目。
学习路线图
这个路线图是针对咱们要入门的同学制定的,已然成神的同学们可不使用哦。
(一)入门神经网络:
对于咱们要入门的同学来说,第一部也是最重要的一步就是能够去懂什么是神经网络以及把整体流程从头到尾的推一遍,神经网络这个东西还是蛮抽象的,这里有一个入门的课程大家可以参考下深度学习全民皆兵
把神经网络以及深度学习所需的每一个知识点都从头到尾的推了一遍还是很不错的。
(二)选择一个深度学习方向:
深度学习现在来说有两个方向比较成功,一个是自然语言处理,另一个是计算机视觉。在学习的路上,我们需要选择一个自己喜欢的方向去深入,有的同学可能会说我都想去研究个究竟,其实只要有时间这些都不是事。但是我觉得还是选择一个方向去深入比较好,无论对于研究还是工作我们不可能同一阶段去弄这两个事,所以确定好一个深度学习的方向还是很重要的。当我们选择好方向之后我们要学习的东东就确定了,对于自然语言处理我们要学习的就是RNN现在更火的是LSTM,对于计算机视觉我们要学习的就是CNN,大家如果听不懂这几个缩写,没关系的等咱们真正走到了这不的时候再去了解也来得及,这里我们只需要知道我们要两个方向可以选择。
(三)论文与代码:
对于选择好的方向我们首先要弄懂这个网络的原理,最好的办法就是边学边做,结合一个实际的项目。有的同学可能比较愁,我哪有实际项目去结合啊,其实咱们github上的每一位大神的代码咱们都可以当成是一个实际的项目呀,比如人脸检测,物体识别呀,这些公开的代码就是咱们练手的利器呀,我们首先需要从头到尾的完全理解一个找好的项目,这其中包括了很多内容了。比如学习一个深度学习框架,应用公开数据集,训练模型等等。从我自身学习的经验来说,最有价值的做法就是,在一些高端会议上找到一篇开源的而且做的事是咱们感兴趣的的论文,首先通读论文,然后对应于开源的代码开始大干一波(就是把代码和论文对应上,确保自己完全理解),还有些需要注意的点比如说咱们一定要找最新的论文和代码,这些应该就不用我多说啦。在完成了一个项目之后,咱们就有一定功底啦,可以说咱们已经入门深度学习这个领域啦,但仅仅是入门,切不可就此止步。

NLP 是什么?

NLP 是计算机科学领域与 人工智能 领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的学科。NLP 由两个主要的技术领域构成:自然语言理解和自然语言生成。

自然语言理解方向,主要目标是帮助机器更好理解人的语言,包括基础的词法、句法等语义理解,以及需求、篇章、情感层面的高层理解。

自然语言生成方向,主要目标是帮助机器生成人能够理解的语言,比如文本生成、自动文摘等。
NLP 技术基于大数据、知识图谱、 机器学习 、语言学等技术和资源,并可以形成机器翻译、深度问答、对话系统的具体应用系统,进而服务于各类实际业务和产品。

NLP在金融方面

金融行业因其与数据的高度相关性,成为人工智能最先应用的行业之一,而NLP与知识图谱作为人工智能技术的重要研究方向与组成部分,正在快速进入金融领域,并日益成为智能金融的基石。舆情分析舆情主要指民众对社会各种具体事物的情绪、意见、价值判断和愿望等。

事件(Event ):在特定时间、特定地点发生的事情。主题(Topic):也称为话题,指一个种子事件或活动以及与它直接相关的事件和活动。专题(Subject):涵盖多个类似的具体事件或根本不涉及任何具体事件。需要说明的是,国内新闻网站新浪、搜狐等所定义的“专题”概念大多数等同于我们的“主题”概念。热点:也可称为热点主题。热点和主题的概念比较接近,但有所区别。

1 词干提取

什么是词干提取?词干提取是将词语去除变化或衍生形式,转换为词干或原型形式的过程。词干提取的目标是将相关词语还原为同样的词干,哪怕词干并非词典的词目。

2 词形还原

什么是词形还原? 词形还原是将一组词语还原为词源或词典的词目形式的过程。还原过程考虑到了POS问题,即词语在句中的语义,词语对相邻语句的语义等。

3 词向量化什么是词向量化?词向量化是用一组实数构成的向量代表自然语言的叫法。这种技术非常实用,因为电脑无法处理自然语言。词向量化可以捕捉到自然语言和实数间的本质关系。通过词向量化,一个词语或者一段短语可以用一个定维的向量表示,例如向量的长度可以为100。

4 词性标注

什么是词性标注?简单来说,词性标注是对句子中的词语标注为名字、动词、形容词、副词等的过程。

5 命名实体消歧

什么是命名实体消岐?命名实体消岐是对句子中的提到的实体识别的过程。例如,对句子“Apple earned a revenue of 200 Billion USD in 2016”,命名实体消岐会推断出句子中的Apple是苹果公司而不是指一种水果。一般来说,命名实体要求有一个实体知识库,能够将句子中提到的实体和知识库联系起来。

6 命名实体识别

体识别是识别一个句子中有特定意义的实体并将其区分为人名,机构名,日期,地名,时间等类别的任务。   

7 情感分析

什么是情感分析?情感分析是一种广泛的主观分析,它使用自然语言处理技术来识别客户评论的语义情感,语句表达的情绪正负面以及通过语音分析或书面文字判断其表达的情感等等。

8 语义文本相似度

什么是语义文本相似度分析?语义文本相似度分析是对两段文本的意义和本质之间的相似度进行分析的过程。注意,相似性与相关性是不同的。

9语言识别

什么是语言识别?语言识别指的是将不同语言的文本区分出来。其利用语言的统计和语法属性来执行此任务。语言识别也可以被认为是文本分类的特殊情况。

10 文本摘要

什么是文本摘要?文本摘要是通过识别文本的重点并使用这些要点创建摘要来缩短文本的过程。文本摘要的目的是在不改变文本含义的前提下最大限度地缩短文本。

11评论观点抽取

自动分析评论关注点和评论观点,并输出评论观点标签及评论观点极性。目前支持 13 类产品用户评论的观点抽取,包括美食、酒店、汽车、景点等,可帮助商家进行产品分析,辅助用户进行消费决策。

11DNN 语言模型

语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。在机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等系统中都有广泛应用。
12依存句法分析

利用句子中词与词之间的依存关系来表示词语的句法结构信息 (如主谓、动宾、定中等结构关系),并用树状结构来表示整句的的结构 (如主谓宾、定状补等)。
1、NLTK

一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的 jieba 处理库

2、文本处理流程

大致将文本处理流程分为以下几个步骤:

Normalization

Tokenization

Stop words

Part-of-speech Tagging

Named Entity Recognition

Stemming and Lemmatization

下面是各个流程的具体介绍

Normalization

第一步通常要做就是Normalization。在英文中,所有句子第一个单词的首字母一般是大写,有的单词也会全部字母都大写用于表示强调和区分风格,这样更易于人类理解表达的意思。

Tokenization

Token是"符号"的高级表达, 一般值具有某种意义,无法再拆分的符号。在英文自然语言处理中,Tokens通常是单独的词,因此Tokenization就是将每个句子拆分为一系列的词。

Stop Word

Stop Word 是无含义的词,例如’is’/‘our’/‘the’/‘in’/'at’等。它们不会给句子增加太多含义,单停止词是频率非常多的词。 为了减少我们要处理的词汇量,从而降低后续程序的复杂度,需要清除停止词。

Named Entity

Named Entity 一般是名词短语,又来指代某些特定对象、人、或地点 可以使用 ne_chunk()方法标注文本中的命名实体。在进行这一步前,必须先进行 Tokenization 并进行 PoS Tagging。

Stemming and Lemmatization

为了进一步简化文本数据,我们可以将词的不同变化和变形标准化。Stemming 提取是将词还原成词干或词根的过程。

3、Word2vec

Word2vec是一种有效创建词嵌入的方法,它自2013年以来就一直存在。但除了作为词嵌入的方法之外,它的一些概念已经被证明可以有效地创建推荐引擎和理解时序数据。在商业的、非语言的任务中。

### 四、NLP前沿研究方向与算法

1、MultiBERT
2、XLNet
3、bert 模型

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

BERT提出之后,作为一个Word2Vec的替代者,其在NLP领域的11个方向大幅刷新了精度,可以说是近年来自残差网络最优突破性的一项技术了。BERT的主要特点以下几点:

使用了Transformer作为算法的主要框架,Trabsformer能更彻底的捕捉语句中的双向关系;

使用了Mask Language Model(MLM)和 Next Sentence Prediction(NSP) 的多任务训练目标;

使用更强大的机器训练更大规模的数据,使BERT的结果达到了全新的高度,并且Google开源了BERT模型,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。

BERT的本质上是通过在海量的语料的基础上运行自监督学习方法为单词学习一个好的特征表示,所谓自监督学习是指在没有人工标注的数据上运行的监督学习。在以后特定的NLP任务中,我们可以直接使用BERT的特征表示作为该任务的词嵌入特征。所以BERT提供的是一个供其它任务迁移学习的模型,该模型可以根据任务微调或者固定之后作为特征提取器。

模型结构: 由于模型的构成元素Transformer已经解析过,就不多说了,BERT模型的结构如下图最左:

对比OpenAI GPT(Generative pre-trained transformer),BERT是双向的Transformer block连接;就像单向rnn和双向rnn的区别,直觉上来讲效果会好一些。

优点: BERT是截至2018年10月的最新state of the art模型,通过预训练和精调横扫了11项NLP任务,这首先就是最大的优点了。而且它还用的是Transformer,也就是相对rnn更加高效、能捕捉更长距离的依赖。对比起之前的预训练模型,它捕捉到的是真正意义上的bidirectional context信息。

缺点: MLM预训练时的mask问题

[MASK]标记在实际预测中不会出现,训练时用过多[MASK]影响模型表现

每个batch只有15%的token被预测,所以BERT收敛得比left-to-right模型要慢(它们会预测每个token)
BERT火得一塌糊涂不是没有原因的:

使用Transformer的结构将已经走向瓶颈期的Word2Vec带向了一个新的方向,并再一次炒火了《Attention is All you Need》这篇论文;

11个NLP任务的精度大幅提升足以震惊整个深度学习领域;

无私的开源了多种语言的源码和模型,具有非常高的商业价值。

迁移学习又一次胜利,而且这次是在NLP领域的大胜,狂胜。

BERT算法还有很大的优化空间,例如我们在Transformer中讲的如何让模型有捕捉Token序列关系的能力,而不是简单依靠位置嵌入。BERT的训练在目前的计算资源下很难完成,论文中说的训练需要在64块TPU芯片上训练4天完成,而一块TPU的速度约是目前主流GPU的7-8倍。

NLP:计算机或系统真正理解人类语言并以与人类相同的方式处理它的能力。

难度:理解话中的潜在意图;理解句子中的歧义。

歧义包括:单词、句子、语义中歧义。

在文本数据上执行的一些基本 *** 作

    正则表达式:对字符串 *** 作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

    给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
2 可以通过正则表达式,从字符串中获取我们想要的特定部分。

可以读取一个文本文件并根据需要将其转化为一列单词或句子。

方式:
1、将一个单词替换为另一个单词;
2、删除或添加某些特定类型的单词;


    可以通过urllib包获取。

    停止词:索引擎会忽略的常用词。例如:the

    是SciKit-Learn库的一个工具,可以接收任何大量的文本,将每个独特的单词作为特征返回,并计算每个单词在文本中出现的 次数。

TF:术语频率。特定单词的计数与文档中单词总数的比率。
IDF:反向文档频率。文档总数与包含特定单词的文档数量的对数比率。
TF-IDF权重:二者的乘积。

作用: 衡量一个词对于一段文本的重要性

    例如,文本可以被分为正面和负面。通调取TExtBlob包可以获取许多这样的架构。

神经网络的基本结构
基本原理:人工神经元或感知器的基本元素的集合。

采用多个二元输入x1, x2, x3,如果总和大于激活电位,则产生单个二进制输出,神经元会执行称为"发射"的指令,发射的神经元沿着信号传递到与其他树突相连的神经元,如果超过了激活电位,其他神经元也会发射。

神经网络的类型

前馈神经网络:神经网络家族的基本单元

循环神经网络:处理 NLP 中普遍存在的动态输入序列的一个最佳的技术方案。但是很快被经典的LSTM取代

卷积神经网络:应用于文本的卷积神经网络只在两个维度上工作,其中滤波器(卷积核)只需要沿着时间维度移动。卷积也可以用来 加速 LSTM。

递归神经网络:将句子视为树而不是序列
词嵌入:利用所有个体单词 相邻 的单词,使用给定文本中的信息并将其传递给模型。这使得嵌入以密集向量的形式存在,在连续向量空间中表示个体单词的投影。 即将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。
这一步解决的是”将现实问题转化为数学问题“ ,是人工智能非常关键的一步。
嵌入:单词在新学习的向量空间中的 坐标

词嵌入是无监督学习领域最重要的应用之一

2 神经语言模型

    Bengio提出的前馈神经网络语言模型(FNNLM)引入了前馈神经网络,是为词嵌入模型奠定了基础。

该模型中仍然用于词嵌入模型的部分有:

1、 嵌入层:
     作用:记录训练数据集中所有单词的表示。
    初始化:由一组随机权重初始化
    组成:词汇表的大小,词嵌入向量输出的大小、模型输入序列的长度
    结果输出:二维向量,包含给定单词序列中所有单词的最终嵌入

2、隐藏层:
    位置:位于初始层到最终层之间,可以一个或多个
    作用:通过将神经网络中的 非线性函数 应用于先前n个词的词嵌入,来产生 输入文本数据的表示 。

3、Softmax层:
    位置:神经网络体系结构的最后一层
    作用:返回输入词汇表中存在的所用单词的 概率分布

该模型有助于实现当前词汇表中不存在的单词的泛化。

Word2vec 是 Word Embedding 的方法之一, Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量。因为在后续的任务中会直接用到这个词向量。

包含两种模型:CBOW(连续词袋)和skip-gram
区别:执行预测的方式。
CBOW:利用上下文或周围的单词来预测中心词
skip-gram:使用中心词来预测上下文
优点:与单热编码相比,word2vec有利于减我码空间大小,并将单词的表示压缩到所需的向量长度。

word2vec创建单词表示的方式基于单词的上下文。

过程:使用序列中的当前单词来预测周围的单词

周围单词的分类 得分 基于 语法关系 和它们与中心词一起出现的 次数

CBOW模型

CBOW是一种基于窗口的语言模型。(窗口:句子中的一个固定长度的片段,窗口中间的词为中心词,其他词问中心词的上下文)

原理:通过三层神经网络接受上下文的特征向量,预测中心词是什么

结构:输入层、隐藏层、输出层

该模型的6个步骤:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10375236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存