浅谈自然语言处理(NLP)学习路线(一)— 概述

人工智能97

资料汇总:
引流:大道至简之机器学习系列
😊《流畅的python》:https://pan.baidu.com/s/1l5Tl0yZS0NTixAilH9S2aQ 提取码:38qa
😊《统计学习方法第二版》:https://pan.baidu.com/s/18pg6dUMcMciyO5ZXMrbUJg 提取码:pb7r
😊 西瓜书《机器学习》-周志华:https://pan.baidu.com/s/1mpU-4hfUcVGcjNckjWp6hw 提取码:9yr8
😊 南瓜书(西瓜书公式详解):https://pan.baidu.com/s/1rs6VBcNPf6y6Fda3jDqebA 提取码:k35z
😊 部分论文:seq2seq、word2vector、elmo、transformer、bert 提取码:c3u2

本篇文章属于概述介绍性文章,仅适合于帮助对NLP感兴趣想入门的读者或者准备转行从事NLP的读者来对NLP有一个笼统了解,因此没有太多的细节陈述和公式推导。如果有幸被NLP大佬们阅读,还望多多指出本文瑕疵,给出批评意见,笔者甚为感激!

目录

一、拉齐认知

二、从事NLP需要具备哪些基础技能

1. 开发工具

2. 机器学习

3. 数学基础

4. 基于统计学的文本处理算法

5. 基于深度学习的文本处理

5.1 神经网络语言模型(NNLM)

5.2 Word2Vector

5.3 长短时记忆网络(LSTM)

5.4 进阶神经网络语言模型

6. 算法开发常用的工具库

三、总结

文档撰写习惯,先抛出总结:

本篇博客泛泛介绍了学习NLP应当练好哪些基础,才能够持续性提升, 这里推荐一个学习网站:ai-learning

NLP 基础学习路线总结:

  1. 数学基础:重点是函数性质、导数(特别是对矩阵求偏导)、不同概率的定义和性质、数学期望、参数估计、梯度下降法

  2. 机器学习:重点是LR、Xgboost、HMM、CRF

  3. 传统文本算法: n-gram、tf-idf、textrank、lda

  4. 经典神经网络语言模型:LSTM、NNLM、word2vector、fasttext

  5. 进阶神经网络语言模型:elmo、transformer、gpt、bert

一、拉齐认知

众所周知,视觉和语言绝对是人工智能的两大要素,在人工智能领域, 视觉涉及到图像识别、目标检测、语义分割、图像变换(风格转换等)、图像生成等,商业应用涉及到自动驾驶、视频安全、视频运营等行业的关键帧抽取、精彩片段抽取、姿态估计、行为识别等; 自然语言处理涉及到文本分类、文本聚类、实体识别&抽取、摘要提取、关键词抽取、新词发现、文本生成、翻译问答等,商业应用涉及到家用&工业智能、网络安全等行业中语音转文、图谱构建、即时翻译、舆情分析、内容质量评估等。

以上视觉图像处理和自然语言处理作为基础技术结合起来,还能辅助提升搜广推技术在商业一线场景的变现能力。因此,市场上对图像和语言类算法的人才需求仍然很大,虽然受经济环境影响,岗位需求有所收紧,但收紧的目的是提高招聘门槛,提高用人质量,并非这些技术不管用了,不管是图像还是语言,只有踏踏实实一步一个脚印的去啃,才能提升自己的硬实力。只要技术够硬,就不要去忧前景之虑,这一点希望行业小伙伴们能够拉齐认知。

很多人对于NLP的认识或多或少都有它是一门不够成熟的技术的印象。的确,如果它已经足够成熟了,那还有我们什么事,也正是因为它不够成熟,才会有更多的挑战和机会等着我们去挖掘,我们才有更大的概率成为强者。我们清楚,在人类文明发展历史中,视觉是先于语言出现的,所以难免图像技术发展的比自然语言处理技术要更为充分。一副图像,我们看到是什么样,那它就客观的是什么样,但语言不同,很多时候,你说一句话,它可能夹杂着太多的情绪和内涵在里面,如何能够让计算机理解一句话,正是我们NLP面临的巨大挑战之一,所以如果缺少NLP技术的佐助,人工智能只能是个"聋子",为什么说是"聋子",是因为以后我们传入给机器的很可能是语音,语音再转文字让机器理解,这也反映了自然语言处理和语音处理技术是密不可分的。因此我认为,NLP仍然还有非常多的非常有意义的课题值得我们去研究。

二、从事NLP需要具备哪些基础技能

1. 开发工具

开发工具包括编程语言、常用包,编程语言个人比较建议 Python,其编程风格可读性好,易懂好上手。对于没有基础的同学,可以阅读一些Python的基础入门书籍,这里不作过多推荐。对于有一定基础的同学,强烈推荐大家读一读《流畅的Python》这本书。电子书传送门:https://pan.baidu.com/s/1l5Tl0yZS0NTixAilH9S2aQ 密码: 38qa

至于编程平台,学习阶段可以使用jupyter notebook,工程开发阶段推荐使用Pycharm。

Linux常用命令一定要会,我们工作环境基本都是在无图形界面的Linux系统中,打交道最多的就是服务器,所以要从感性层面熟悉Linux系统。

Java和SQL也需要会基础,因为在工作中,模型的线上服务接口开发和部署几乎都会是基于Java去做的。而SQL是因为很多公司大量的数据都是存在后台数据库中,很多时候需要你自己写SQL代码查询、筛选和处理数据,除此之外,还要掌握一些基础的ES(Elasticsearch)搜索语句,由于它强大的搜索性能,现在被广泛应用在搜索推荐场景。将数据导出后,才适合用Python做进一步的数据分析处理。

谈到数据分析处理,这是NLP非常重要的一步,有句话说的很好:数据质量决定了指标的上限,模型优化只是在不断逼近这个上限。因此,算法工程师一定要懂得数据先行的道理。python中的pandas包对于数据分析是非常好用的,建议同学们花时间重点学一下它,pandas一般用在分析数据分布,组合数据,筛选数据等。此外,正则表达式也是一个非常常用技术,一般会用它来清洗数据中的一些噪声,例如html标签、url、特殊字符等。如果是较为简单的数据匹配,例如通过一些关键词来筛选数据,有时候前缀树Trie树也是一个非常好用的辅助工具,它的匹配效率比正则匹配高很多。Trie树有python实现的接口,参考 https://github.com/abusix/ahocorapy。具体的数据分析处理方法,还需要具体问题具体分析,这里只做普及式介绍。

2. 机器学习

参考学习资料:

书籍:见文章开头

统计学习方法代码实现(Jupyter版)

我把NLP的技术分为两大类:基于机器学习的传统NLP技术和基于深度学习的新兴NLP技术。其实图像也是如此。但不管是哪一类,我都想首要的抛出我的观点,学习NLP,一定要先掌握经典机器学习算法。为什么呢?就我个人经验来看,人工智能不管如何发展,最后究其祖先,都仍然脱离不了机器学习算法的影子,而机器学习无非就是包了一层高级外衣的概率论与数理统计原理。所以, 先学好常见机器学习算法!

关于机器学习的学习路线,这里有张我个人认为总结的比较好的图分享给大家(图2-1):

浅谈自然语言处理(NLP)学习路线(一)— 概述

大家可订阅笔者的专栏-大道至简系列之机器学习系列,我会跟着大家一起学习,持续更新,这里大家参照上图先有个印象。

3. 数学基础

不管是深度学习还是机器学习都包含了大量数学的内容,因此大家必须对数学基础也应当有所掌握,最常见的就是微积分、概率论、统计学、矩阵论、数值分析,因为这些都涉及到机器学习算法的一些公式由来,和一些优化方法的原理。依我个人见解,并不是说非要全部掌握相关的数学原理,毕竟除了业界的少数大佬,我相信大部分玩儿机器学习和深度学习的小伙伴并非纯数学专业和数学领域的专家,我们在学习的过程中,一定要有的放矢,对于一些核心的公式我们要重点吃透,用到哪里学到哪里,先把基本概念厘清,先把重点结论记住并跟着学习资料尝试推导,遇到不懂的地方,先做个标记,等全部学完,并coding实战过,再回过头来,把之前不懂的地方搞清楚,这个时候很可能需要延伸查阅许多辅助资料,过程很痛苦,但是我希望大家能坚持下来。如果遇到一些需要追溯到上古时代的数学原理,我个人建议不要去死扣,记住结论即可,例如EM算法中的Jensen不等式,如果有精力,可以去尝试推导证明一下它是怎么来的,如果精力有限,那么记住它的结论即可,除非今后真的遇到必须理解它的证明过程才能进行下去的工作再去学也不迟。

总结来说,要了解的数学知识有:
(1)概率论与数理统计:联合概率、条件概率、概率密度、概率分布、数学期望、参数估计等;
(2)高等数学:微积分、几何基础、函数(连续性、收敛性、凸函数等)、极限等;
(3)线性代数:矩阵运算、矩阵求导、矩阵变换,可行解分析等;
(4)数值分析:二分法、牛顿法、最小二乘法、最速下降法等;

感觉很琐碎有木有,还是那句话,用到哪学到哪,学到哪,查到哪。

4. 基于统计学的文本处理算法

说两个比较经典的基于统计学的文本处理算法:统计语言模型(N-Gram)和TF-IDF,n-gram模型一般用来判断一段文字是否符合自然语法,tf-idf一般用来做关键词提取或者词过滤,在搜索推荐场景也会用来做词权重计算。对于关键词提取,还有个很有名的算法是textrank,GitHub上有个中文的textrank开源实现:https://github.com/letiantian/TextRank4ZH

tf-idf使用前提是基于多篇文档来计算的,每个词不仅需要考虑在其所在文章中的出现频率,还要考虑在一堆文章中出现的情况,而textrank仅针对一篇文章就能计算出关键词 ,这是因为tf-idf算法是纯统计类的,而textrank用到了图计算的概念,这里先不展开,后续有机会补上。

TF-IDF公式补充:
浅谈自然语言处理(NLP)学习路线(一)— 概述
i是第i个词,j是wi所在的第j篇文章,N是第j篇文章所有词之和。TF就是某篇文章中某个词出现的频率;
浅谈自然语言处理(NLP)学习路线(一)— 概述
D是所有文章数之和,dj是第j篇文章。IDF指的是文章数之和与包含某个词的文章数之和的比值。
浅谈自然语言处理(NLP)学习路线(一)— 概述
由公式可以看出,当某个词在一篇文章中出现的次数多而在其它文章中出现的少,TF-IDF值越大,说明该词在本篇文中的重要性高。

我重点讲一下n-gram模型,因为它和我们后面的Bert等语言模型有着发展脉络的关系。简单来讲,n-gram模型是个纯粹的语言模型,但是是基于统计的语言模型,它的算法思想由来起源于我们人类的语言习惯。例如"我热爱自然语言处理技术"和"我热情自然话语处理技术"这两句话,n-gram模型能够判断出哪句话符合人类语言习惯的概率较大,直观上,我们一眼就能看出前一句更符合我们的语言习惯。对于模型来说,它是怎么做到的呢?是这样的,当我们喂给模型足够多的正规语言样本后,经过统计,它能够算出每个字或者词与后续的字词组合起来的概率有多大,例如上面的例子,当我们的训练样本中出现的是"我热爱自然语言处理技术",那么在测试样本中,它就会根据由训练样本统计出来的词表计算:"我"出现的条件下"热爱"出现的概率,"我热爱"出现的条件下,"自然"出现的概率,以此类推,最终就是

P("我, 热爱, 自然, 语言, 处理, 技术") =
P("我")P("热爱"|"我")P("自然"|"我, 热爱")P("语言"|"我, 热爱, 自然")P("处理"|"我, 热爱, 自然, 语言")P("技术"|"我, 热爱, 自然, 语言, 处理")

也就是 第t个单词出现的概率与前 i 到 t-1 个单词相关

浅谈自然语言处理(NLP)学习路线(一)— 概述

对于上述公式能求出这段文字的一个概率,当然,我这里只是为了大家有个直观感受,写的过于简单,实际操作要更复杂一些。看,这其实就是求似然概率。n-gram中的n表示限制每次要计算相邻的n个词的似然值。

除了上述介绍的算法之外,作为NLP算法工程师还应当掌握隐马尔科夫模型(HMM)、条件随机场(CRF),因为它们和命名实体、分词、词性标注等实际任务都有很强的关联,特别是近几年Bert的爆发,已经有很多实验证明,Bert+CRF在做实体识别、词性标注等任务上的效果非常可观,而隐马尔科夫模型的另一个重要应用场景就是语音识别,李开复先森就是用它,完成了卡内基梅隆大学的博士毕业论文。可见这两个算法是如此的重要。当然,它们也属于机器学习算法的范畴,以后慢慢再道。其它的算法我没介绍到,并不是不重要,有没有一种可能,就是本人没有考虑到,亦或是我在实际工作中用到的比较少。总之,欢迎小伙伴们进行补充哈~

5. 基于深度学习的文本处理

介绍完传统文本处理算法,终于到了我们的重头戏了,那就是基于神经网络的文本处理模型了。不过要抱歉的是,这方面内容比较多比较杂,所以我按照比较经典的模型有选择性的进行脉络简述,细节上,我会在往后的博客里会跟着大家一起品~

5.1 神经网络语言模型(NNLM)

第一个我想介绍的是神经网络语言模型(NNLM),有一些童鞋比较少听说过这个网络,感觉它很低调,但是我个人认为,这是个非常经典的NLP基础网络,是一款非常适合基于深度神经网络的NLP入门的模型。可以认为它是n-gram模型的高级版,因为它利用神经网络技术对公式

浅谈自然语言处理(NLP)学习路线(一)— 概述​进行了描述,与此同时,NNLM网络中做了词嵌入的工作,因此它还生成了后面会讲到的非常有名的word2vector模型原形。所以我认为它在传统文本算法和神经网络文本算法中间起到了承上启下的重要纽带作用。而且该网络中还用到了残差的思想,这一设计在目前非常著名的Transformer模型中也有应用,所以我说,NNLM虽然简单,但是非常经典和重要,想学NLP的小伙伴,应当对它有所掌握。

NNLM模型可以用以下公式描述:

浅谈自然语言处理(NLP)学习路线(一)— 概述

y是网络的输出,b+Wx是线性层,和我们的线性回归是一样的,W、U、d、H都是一些权值矩阵,x是网络的输入。简而言之,它是由一个线性组份b+Wx和一个非线性层组成的。它的网络结构长这样(图5-1-1):

浅谈自然语言处理(NLP)学习路线(一)— 概述

学网络一定要从维度变换学起,那么把这个图转换成维度变换图(图5-1-2):

浅谈自然语言处理(NLP)学习路线(一)— 概述

有点丑,以后具体介绍该网络的时候再补个美颜版的哈~

上图中,input-id是one-hot形式的向量,3是网络输入文本的大小,3个词,比如'我'、'爱','你'。3000是我们预先定义好的词表,有3000个词,那么input-id每一行中,每个输入词在3000词表里对应的位置为1,其余位置为0。

对于网络的输出y,其实还有一层处理,就是softmax,它能够将一次输出的所有预测值映射到0~1之间,转换成概率值,且所有概率值之和为1,最大的那个概率值所在的位置就是我们要预测的单词。对于softmax的介绍,网上有太多了,而且一看就懂,这里不再赘述。

5.2 Word2Vector

这是个非常有名的模型,而且我个人猜测,NLP之星Bert十有八九也是或多或少受到这个模型的启发而设计出来的。word2vector这个模型吧,有两种实现方式:CBOW和Skip-gram。对于一段文本,第一一个滑动窗口大小,那么窗口每滑到文本的一个位置,就用窗口内的周围此预测窗口内的中心词,这种方式叫做CBOW,同理,用窗口内的中心词预测窗口内的剩余词,这种方式叫Skip-gram。了解Bert的同学有木有感觉很熟悉?

在n-gram模型中,它只能统计每个词的分布,但无法考虑每个词的上下文语义信息,这对于自然语言的理解是非常不利的。而在word2vector中,由于工作机制的不同,它能够兼顾每个词上下文的语义信息,显然它的表现会比n-gram好很多。

在图5-1-2中,input-id是我们要输入的3个词的one-hot,它和C点乘能够得到3个词的向量表示,这个C就是word2vector的前身。所以只要训练好C,那么我们就能够得到词表范围内任意词的向量表示,这个向量表示可以用在超级多的地方,例如相似词检索(两个词向量求余弦距离)、相似文本判断(多个词向量)、文本分类等。

最后补充一句,word2vector有一个更高级的优化版-fasttext

5.3 长短时记忆网络(LSTM)

LSTM属于RNN网络,它是个序列模型,因此对处理同为序列样本的文本来说非常适合,所以LSTM是不得不掌握的另一个重要网络。网上关于该网络的介绍都烂大街了,感兴趣的小伙伴可以自行查阅,如果有需要我专门出一篇文章讲它的,可以私信留言~

这里只强调两点: LSTM的网络结构以及 LSTM的重要公式

(1)LSTM网络结构:

浅谈自然语言处理(NLP)学习路线(一)— 概述

(2)LSTM的重要公式

遗忘门:浅谈自然语言处理(NLP)学习路线(一)— 概述

输入门:浅谈自然语言处理(NLP)学习路线(一)— 概述

候选集:浅谈自然语言处理(NLP)学习路线(一)— 概述

更新门:浅谈自然语言处理(NLP)学习路线(一)— 概述

输出门:浅谈自然语言处理(NLP)学习路线(一)— 概述

隐向量输出:浅谈自然语言处理(NLP)学习路线(一)— 概述

以上内容必须熟记,图要会画,公式要会写,而且每个公式都能和图对应起来解释。

一般来讲,一段文字输入到LSTM单元后,我们可以取每一步输出的ht,接一些后续计算实现词性标注、实体等任务,也可以取最后一步输出的ht接一个线性层做文本分类,或者直接把它当成段文字的向量表示用作向量检索。

补充一点内容,我们平常所说的seq2seq,其实并不是一种模型,而是泛指序列到序列的任务,例如翻译、问答等,它是由Encoder-Decoder框架组成的,而其中的encoder和decoder,又是由各种神经网络组成的,比如它们可以是LSTM、GRU、CNN、Transformer等。

5.4 进阶神经网络语言模型

5.1~5.3我们介绍了一些传统的经典NLP神经网络,我认为要入门NLP,对于神经网络部分的学习,这些是基础中的基础了。后面的像基于Transformer的Bert及其变种、XLNet、elmo、T5、GPT系列等高级神将网络,基本都是在这些基础网络的结构上做比较深层次的改进和发展了,所以,千里之行始于足下,一定要注重基础知识的学习!

一方面,高级神经网络一直在出新,没有一一介绍的必要,也没有可能介绍完,当然后期我会持续性的撰写相关博客和大家一起交流学习。另一方面,本着以不变应万变的哲学观,本节就简单的告诉大家,对于高级神经网络我认为应该先学会哪些。

第一:Transformer。特别是对于自注意力机制,一定要弄懂,我会专门抽一期讲这个网络;

第二:elmo。它也是传统神经网络向高级神经网络进阶的枢纽;

第三:GPT。它是第一个基于Transformer应用的高级神经网络,理解它,就能对比的理解Bert为何而来;

第四:Bert。其重要性我就不用多说了,一定要深入掌握,它是自Bert诞生到现在,各种新兴高级神经网络的基石,像ALBert、RoBerta、XLNet、T5等,都是基于它的各种优化变种。

6. 算法开发常用的工具库

作为NLP算法工程师,一些常用的开源包应该能够熟练使用,这里列举几种:

sklearn:机器学习算法集成包,包含了大部分机器学习算法以及数据处理和可视化API;

transformers:pytorch版的各种深度神经网络语言模型实现,目前该库已经封装成了api,并提供了许多预训练模型,模型定义在src/transformers/models下,推荐阅读模型源码;

nltk:自然语言处理工具包,涵盖了大量NLP任务接口;

gensim:也是一个自然语言处理库,涵盖了常用的传统自然语言处理算法;

jieba:最常用的分词工具,它还包含了词性标注、关键词抽取等功能;

三、总结

本篇博客泛泛介绍了学习NLP应当练好哪些基础,才能够持续性提升, 这里推荐一个学习网站:ai-learning

好了,告一段落,对NLP 基础学习路线做个总结:

  1. 数学基础:重点是函数性质、导数(特别是对矩阵求偏导)、不同概率的定义和性质、数学期望、参数估计、梯度下降法

  2. 机器学习:重点是LR、Xgboost、HMM、CRF

  3. 传统文本算法: n-gram、tf-idf、textrank、lda

  4. 经典神经网络语言模型:LSTM、NNLM、word2vector、fasttext

  5. 进阶神经网络语言模型:elmo、transformer、gpt、bert

由于时间有限,写的比较仓促,希望各位读者对文中出现的错误之处能及时指出并给与批评,感谢关注!

Original: https://blog.csdn.net/qq_36583400/article/details/126294167
Author: 尚拙谨言
Title: 浅谈自然语言处理(NLP)学习路线(一)--- 概述



相关阅读1

Title: 关于如何用LSTM算法处理多样本数据(tensorflow)

第一次写文章的菜鸟,如果有错误,欢迎指正。

基本情况介绍:最近在做轨迹预测方面的工作,数据是某个路段的一条条独立的轨迹数据,每条轨迹大概200个样本点,我打算用10个时间步来预测下一个时间步的某个特征。代码是在jupyter notebook中编写的。

存在问题:每条轨迹样本点太短,单独训练一条轨迹或者每条轨迹依次导入模型训练 显然不现实;那么如果首尾拼接起来呢,如上面所说 用连续十个时间步预测下一个时间步,在数据的交界处,组成是个时间步的数据是由两段轨迹组成,这样似乎给模型训练带来不必要的小问题。

所用到的数据表格形式:

表内的数据内容 timexyvxvyaxay

234

我的思路是将每条轨迹(对应每个样本数据)分别放到xlsx文件的一个 sheet中,每个样本的数据个数可以不一样,然后分别读取到一个变量中, 处理成我们想要的样子,最后再拼接起来。

首先读取数据

dataset = pd.ExcelFile("文件名.xlsx") #csv文件是没有sheet的
sheet=dataset.sheet_names#读取xlsx文件中每张表的名称
for name in sheet: #一个for循环遍历所有的表
    locals()[name]=dataset.parse(name) #将每张表的数据放到对应名称的变量中(注意要用locals)
for i in range(1,23): #后面的23,其实是表的数量+1
    dataset=locals()['dataset_' + str(i)]  #locals的作用可以自己查一下,后面[]内的是表 名,dataset_1,dataset_2,....,这些变量在上面已经赋值了,现在将其放入'dataset'这个变量中
    dataset.set_index(["time"], inplace=True)#设置表中'time'所在列为索引
    locals()['dataset_' + str(i)]=dataset#最后将dataset的数据再返回'dataset_i'中,方便后面调用

归一化,并构建输入输出

for i in range(1,189): # 后面的为表的个数+1
    dataset=locals()['dataset_' + str(i)]#数据读取到'dataset_i'中
    columns = ['x','y','vx','vy','ax','ay'] #将表格中每列的数据归一化
    for col in columns:
        scaler = MinMaxScaler()
        dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1,1))
    locals()['x_' + str(i)]=dataset#构建输入特征数据,保存到'x_i'中
    locals()['y_' + str(i)]=dataset.drop(columns=['vx','vy','ax','ay'], axis=1) #构建输出数据,保存到'y_i'中

构建一个函数

def create_dataset(X, y, seq_len=10): # seq_len序列长度就是一个输入样本的长度,在这里就是,用前十个时间步的数据,来预测第十一个时间步的某个特征
    features = []
    targets = []

    for i in range(0, len(x) - seq_len, 1):
        data = x.iloc[i:i+seq_len] #输入数据,实际上是第(i+1)到第(i+seq_len)的数据,共有seq_len个数据
        label = y.iloc[i+seq_len] # 标签数据,实际上是第(i+seq_len+1)个数据,也就是上面那段数据的后一个时间步的数据
        # 保存到features和labels
        features.append(data)
        targets.append(label)

    # 返回
    return np.array(features), np.array(targets)

处理所有的'x_i'和'y_i',然后拼接在一起

train_dataset, train_labels = create_dataset(x_1,y_1, seq_len=10)#调用上面构建的函数,为什么要把x_1和y_1单独拿出来呢,是为了方便后面的拼接,不知道有没有其他方便的算法
for i in range(2,151): #这里大概总样本数据的0.8作为训练集
    dataset=locals()['x_' + str(i)]#将'x_i'和'y_i'的数据赋给一个中间变量,方便后面调用
    labels=locals()['y_' + str(i)]
    input_dataset, output_labels = create_dataset(dataset,labels, seq_len=10)
    train_dataset = np.r_[train_dataset,input_dataset]  #这里得上下拼接用r,c为左右拼接
    train_labels = np.r_[train_labels,output_labels]#最后两行代码,就随着for循环,将'x_i'和'y_i'中的数据不断拼接到train_dataset 和train_labels中

这样就构建好训练集啦,根据自己的数据特点,进行修改即可。

Original: https://blog.csdn.net/weixin_44538872/article/details/120518549
Author: 想发文章的潜潜
Title: 关于如何用LSTM算法处理多样本数据(tensorflow)

相关阅读2

Title: 小米激光投影仪与当贝X3哪个更值得买,当贝X3高亮值得看

关于米家激光投影仪和当贝X3激光投影仪哪个好,之前有2次写过相关体验的内容,发现作为5000元左右同价位的投影仪,依然有很多网友搜索询问关于米家激光投影仪和当贝X3实测流明亮度,当贝X3和小米激光投影仪哪个更值得选择等相关问题,今天再扩展聊聊。

一、参数结论

还是以往的规矩,先分享一张2款投影仪参数对照图表,让网友可以更清晰看出2款投影仪的区别与不同。

浅谈自然语言处理(NLP)学习路线(一)— 概述

通过上面图表可以看出2款投影仪都是采用激光光源,亮度相差800ANSI流明亮度,在配置、系统功能等方面当贝X3是全面占优比米家激光投影仪。家用更好智能体验,当贝X3是更值得推荐,下面看下各方面对比。

二、光源亮度

米家激光投影仪和当贝X3激光投影仪都是采用ALPD激光光源,具有都寿命长、抗环境光强低噪等特点;

在亮度上,当贝X3激光投影仪达到3200ANSI流明亮度,真正做到了白天能看,配上原装抗光幕效果接近电视,是国内智能投影仪业内标杆级亮度;

而米家激光投影仪是2400ANSI流明亮度,与国内同价位投影仪亮度保持一致,白天使用还是会受限的。

浅谈自然语言处理(NLP)学习路线(一)— 概述

浅谈自然语言处理(NLP)学习路线(一)— 概述

三、画质区别

同样的显示芯片同样的1080P分辨率,但是因为当贝X3激光投影仪和米家激光投影仪,相差了800ANSI流明亮度,画质效果对比看出明显差异来,

当贝X3的3200AN流明亮度,加上臻彩画质引擎Pro与HDR10+高动态解码,画质明暗细节更加到位,下图红框内基石条纹、房拱、楼梯等细微地方表现更为优异。

而米家激光投影仪2400ANSI流明亮度,与当贝X3对比区别就能看出来,画质优化还是有提升的空间的。

浅谈自然语言处理(NLP)学习路线(一)— 概述

四、系统差异

1、桌面以及资源

当贝X3激光投影仪是全新交互桌面,开机没有广告快速启动,桌面软件和电影等频道可以自由转换,和手机一样移动、删除添加等,还有多任务切换、精彩预览等小功能,支持远/近场语音遥控。

资源上,当贝X3有芒果TV/爱奇艺/优酷等视频、音乐、体育、教育等全网内容,语音遥控精准搜索内容,安装打开软件、追剧看电影等一句话的事。

浅谈自然语言处理(NLP)学习路线(一)— 概述

米家激光投影仪系统, 开关机有广告,国内多数投影仪都在用传统、老式固定桌面,整体略显混乱。支持和当贝X3同样的远/近场语音遥控。

资源方面是采用小米视频资源,相比当贝X3语音遥控时,有时不够精准,不显示未听清等,不过由于一直没有新品,系统体验过程中,被不少用户吐槽卡、系统运行慢等问题。

浅谈自然语言处理(NLP)学习路线(一)— 概述

2、投屏

而对于投影仪用得比较多的投屏功能,米家激光投影仪采用的是第三方投屏软件,投屏广告不受控制,不定时会跳出广告,影响投屏观看流畅体验,很不友好。

浅谈自然语言处理(NLP)学习路线(一)— 概述

当贝X3是采用的是自研当贝投屏,无广告!专为喜欢使用投屏的网友设计,支持苹果、华为、小米等主流品牌手机;汇集了Air Play、DBcast、DLNA等多种同屏、投屏技术,倾心打造多屏跨屏互动的完美影音体验,体验更多不同玩法。

浅谈自然语言处理(NLP)学习路线(一)— 概述

另外像当贝X3激光投影仪云游戏专区、20毫秒HDMI游戏模式(外接SWITCH等游戏主机)、手机找回遥控器、手机远程看家等功能,米家激光投影仪都是 没有的亟待开发!

五、音效

米家激光投影仪与当贝X3激光投影仪,同样支持杜比&DTS音效,双10W音箱,感受浩瀚震撼声场。

另外当贝X3支持蝰蛇音效,超重低音应有尽有,超大屏在家K歌、追剧看电影等等影院级享受。

六、遥控交互

米家激光投影仪和当贝X3激光投影仪,都是支持远/近场语音遥控的,但是如上系统所说,当贝X3激光投影仪的语音识别能力更强、智能语音库更丰富相比米家激光投影仪。

而且当贝X3激光投影仪的遥控器除了常规快进退音量键以外,还有个侧边键,一触即达图像、系统等快捷设置省心,符合现在使用习惯。

而米家激光投影仪就是常规的遥控器设计,独有的常规遥控功能,与5000多元的米家激光投影仪有点不搭。

浅谈自然语言处理(NLP)学习路线(一)— 概述

七、其它

另外像当贝X3自动入幕、智能避障、智能息屏等功能,米家激光投影仪都是没有的,个人呼吁下小米相关负责人关注下,毕竟现在国内投影仪正处于高速发展期。

所以综上所说,个人更推荐当贝X3激光投影仪,家用更加智能,玩法更加丰富,相比米家激光投影仪,相信你看了也会这么选。

那以上就是为大家带来的米家激光投影仪与当贝X3激光投影仪买哪个,当贝X3和小米激光投影仪哪个更好值得选择购买相关问题内容,希望对于大家遴选2款投影仪有所帮助,喜欢本篇内容可以点赞收藏,有什么疑问欢迎评论交流。

Original: https://blog.csdn.net/tangtianxia/article/details/123764126
Author: 唐天下文化
Title: 小米激光投影仪与当贝X3哪个更值得买,当贝X3高亮值得看

相关阅读3

Title: 学习笔记18--自动驾驶智能化指标评测体系(上)

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶系统设计及应用》书籍的笔记.

2.自动驾驶智能化指标评测体系

自动驾驶测试与评价体系主要主要分为测试与评价两部分;

  • 测试体系为纵向分层、横向分阶段的测试体系,以"安全第一"为原则推进各个测试阶段,包括:模型在环(MIL)、软件在环(SIL)、硬件在环(HIL)、车辆在环(VIL)、道路在环(RIL)测试;
  • 模型在环(MIL)、软件在环(SIL)、硬件在环(HIL)为实验室环境测试,为后续的车辆在环和道路在环测试做铺垫;
  • 自动驾驶评价体系主要分为分级体系、评价标准和综合评价模型三部分;每一部分是后一部分的基础,是后一部分得以开展的先决条件;
  • 分级体系部分包括:分级理论、智能化分级、ODD分级及对应场景等内容,主要着眼于构建自动驾驶分级体系,为后续的评价和应用做铺垫;
  • 评价标准部分包括:基于仿真环境的评价标准、基于车辆在环的评价标准、基于道路在环的评价标准,目标是制定自动驾驶仿真、车辆在环、道路在环分级对应评价标准,用以指导研发测试工作;
  • 综合评价模型部分包括:智能化能力模型、评价项目、权重矩阵和评价标准,用于全面系统评价自动驾驶能力,指导自动驾驶车商用量产工作;

自动驾驶测试与评价体系框架如下图所示:
浅谈自然语言处理(NLP)学习路线(一)— 概述

; 2.1 测试场景

《北京市自动驾驶车辆封闭测试场地技术要求(试行)》对测试场景的要求进行如下规定:

  1. 自然环境:晴天,白天,能见度500m以上,干燥路面;
  2. 交通流:通过模拟机动车、模拟行人、模拟自行车等设备模拟动态交通流;
  3. 道路:按照评估内容,选择封闭试验场地内对应能力评估场地,合理动态布设;
  4. 速度:按照城市道路一般交通流速度,自动驾驶车辆的速度限制在60km/h以下;

百度基于实际测试工作,提出的自动驾驶场景ADS库建设框架如下图所示:
浅谈自然语言处理(NLP)学习路线(一)— 概述

  • 自动驾驶测试场景结构分为三层:数据层、场景层、测试执行层;
  • 数据层负责从各方面采集场景构建所需要的实际数据,并将其处理导入场景层;
  • 场景层作为测试体系的底层基础,需要对测试体系起到聚合的效果,同时需要将测试内容进行拆分细化;
  • 测试层也可以通过调用场景库中场景为测试服务,并将测试结果反馈给场景库;
  • 场景库是场景的载体平台,通过包括场景数据采集,分析挖掘,测试验证和应用改进等步骤和机制将各层数据关联,实现内容闭环;

2.1.1 场景数据采集

  • 场景数据采集是场景构建的第一步,该步骤主要采集场景建立过程中所需要的各种数据,如:车辆状态位置信息、障碍物信息、地理信息等;
  • 数据采集主要依靠车辆采集平台实现,车辆需要根据需求统一安装激光雷达、摄像头、毫米波雷达等采集设备,规定采集变量和参数格式,在采集回来后可以利用自动化工具对数据进行自动特征提取和数字化;
  • 另一方面场景数据是来自文字记录或图表示意的行业标准法规测试场景、交通事故数据库、气象数据库等非数字化来源;
  • 场景数据采集主要包含:采集要求定义、采集方案制定、数据预处理、数据传输四个环节;

2.1.2 场景分析挖掘

  • 场景分析挖掘:对上一步采集到的数据需要首先处理,如:场景理解、数据清洗、特征提取挖掘等,统一格式后导入到场景库;
  • 导入场景库中的数据需要围绕场景进行聚合、生成和优化等环节,从而构建各个不同场景;如:对于十字路口场景、主车信息、障碍物信息、道路信息等都是与特定场景绑定在一起的,此时场景库的场景是单独和孤立的场景,需要给场景增加各类标签和规则,通过标签和规则进行统一管理查询和调用;
  • 场景库应包含各种类型,各种维度,涵盖主要典型场景和各种极端场景,如:不同道路类型等级、交通标志和标线识别、天气状况、障碍物识别与应对、人机交互、最小风险状态等;
  • 以能力为导向,将场景库按能力划分为7大类共70个能力项,如下表所示:序号层级能力描述1Layer 1-道路保持在车道内行驶2换道3在路口直行或转向4掉头5进出主辅路6通过车流交织路段7通过上下坡8通过环岛9通过立交桥10通过隧道11靠边停车12起步13泊车14通过收费站15通过铁路道口16在特殊路面材质道路上行驶17Layer 2-交通规则依据限速要求行驶18遵守交通信号灯19遵守停止避让标志指示20遵守禁行和禁停标志标线21正确使用待行区22正确使用可变导向车道23识别并遵守限行指示24识别并正确使用限制性车道25识别并遵守不同类型车道线26识别并响应车道导向指示27正确使用灯光和鸣笛28识别出交通设施并做出应对29识别特殊区域标志并应对通过30Layer 3-临时交通环境变化能检测出临时交通设施并遵守31识别并应对改道指示32能检测出路面异物并应对33能检测出路面深坑并应对34能检测出施工区域并绕行35能检测出交通标志标线变更或缺少并遵守36能检测出临时交通信号灯变化并遵守37依据警察或交通指挥人的指引行驶38Layer 4-障碍物识别及应对对前方静止车辆行人做出反应39跟车行驶40应对前方车辆切入或切出41超车42完成换道或并道,且避让目标车道内的车辆行人43应对相邻车道内的车辆行人44在路口避让车辆行人45应对行人穿行马路46应对前方车辆急刹或行人突然出现的紧急情况47应对占用部分车道的车辆行人或其他障碍物48能检测出故障车辆或违规停车并绕行49能检测出路面小体积障碍物或动物并避让50能检测出次要障碍物并应对51识别并避让应急车辆52能检测出车辆上方障碍物并应对53应对前方借道行驶车辆54理解其他车辆灯光鸣笛的意图,理解行人的手势55能检测出交通参与者的其他危险行为并应对56Layer 5-自然环境应对光线变化57应对雨天58应对雪天59应对雾天或雾霾60应对低温或高温61应对不理想的通信或信号环境62Layer 6-人机交互能进行人机交互63允许乘客输入目的地并规划路线64按乘客要求变更路线或靠边停车65停车到指定位置并允许乘客上下车66Layer 7-安全性及最小风险状态紧急制动67应对功能失效68应对系统入侵69意外情况发出警示及接管请求70意外情况下回退到最小风险状态并安全停车
  • 场景库建设是在场景设计的基础上,采集相关数据并整合进入场景库平台,场景库建设分为数据采集、数据处理和数据管理;
  • 数据采集:主要针对场景设计中确定的场景进行数据采集工作,进一步确定各参数信息,数据采集主要有采集平台、采集规划和采集结果三方面主要内容;
  • 数据处理:主要包括数据标准化、数据分析及数据标注等方面;
    • 数据标准化:对采集过来的数据进行处理,统一数据的标准格式,为后续存储计算使用打下基础;
    • 数据分析:基于处理后的数据对其进行分析,寻找其中的规律,促进测试相关工作质量和效率的提升;
    • 数据标注:基于采集的实际场景,利用深度学习的算法或人工对各种障碍物,包括:红绿灯、点云、车辆和行人等进行标注,以促进自动驾驶相关算法的训练和改进;
  • 数据管理:主要包括数据平台建设、数据格式定义、外部接口标准等;
    • 数据平台建设:搭建承载场景数据的技术平台,可以存储、调用、展示采集来的数据;
    • 数据格式定义:规定了在数据平台存储的数据格式;
    • 外部接口标准:定义了数据平台对外输出和调用的接口标准,为场景测试和平台开发做铺垫;
2.1.3 场景测试执行
  • 每个数字化的"场景"通过关联"数据""标注"后,即可用于测试层,进入场景构建的第三步,场景测试验证和应用改进;
  • 场景测试验证主要是将场景库内已经构建好的场景实例抽取出来,用包括虚拟场景验证、实车场景验证和专家评审等验证方法评价和确认场景的真实性、代表性和有效性,以更好地服务于技术和产品测试和研发工作,包括:仿真测试、模型在环测试(MIL)、硬件在环测试(HIL)、车辆在环测试(VIL)、道路测试和功能安全等测试环节;
  • 场景库建设内容如下表所示:测试方向测试内容数据采集采集路径规划采集平台传感器安装与标定数据存储数据同步数据传输数据处理数据清洗数据标准化数据存储数据分析数据标注2D/3D标注点云标注深度学习算法标注模型训练模型评估数据管理数据平台建设数据库结构数据格式数据查询展示数据接口标准场景测试仿真测试车辆在环测试道路测试
2.2 仿真环境评价指标
  • 仿真测试:指对自动驾驶系统在计算机里进行虚拟场景的测试;
  • 仿真测试目的:测试自动驾驶系统在各种虚拟场景下的感知、决策和控制能力;通过仿真测试能够复现实际情况下各种可能场景,从而测试自动驾驶系统的决策控制能力,发现问题,避免问题进入后续测试环节,从而降低风险提高开发效率;
  • 仿真环境测试阶段评价指标分为:定位、感知、预测、决策规划和控制5个方面,每个方面包含具体的测试指标,如下表所示:定位定位横向误差定位纵向误差定位直线误差定位俯仰角误差定位横滚角误差定位航向角误差感知红绿灯灯型识别准确率红绿灯灯型识别召回率红绿灯灯型颜色准确率红绿灯灯型颜色召回率障碍物识别距离最小分类距离识别障碍物离地高度障碍物识别准确率障碍物识别召回率行人识别准确率行人识别召回率障碍物朝向正确率Heading成功率Tracking成功率预测对车辆预测准确率对车辆预测召回率对行人预测准确率对行人预测召回率对自行车预测准确率对自行车预测召回率车辆直行轨迹预测车辆直行变道轨迹预测车辆左、右转弯轨迹预测决策规划直行策略跟车策略Stop策略主动变道策略普通变道主动变道低速车辆主动变道禁止连续变道策略变道取消策略停止线掉头策略路口直接掉头左转弯右转弯其他策略控制油门控制精度油门控制误差转向控制有效精度制动精度误差直线跟踪纵向误差直线跟踪横向误差转弯跟踪误差换道跟踪误差掉头误差

Original: https://blog.csdn.net/qq_39032096/article/details/126611438
Author: FUXI_Willard
Title: 学习笔记18--自动驾驶智能化指标评测体系(上)