自然语言处理 NLP
本系列是前面我写的深度学习系列 、计算机视觉系列 的延申。所以对于没有前面DNN、CNN相关基础的同学,建议一定一定要从前面看起:
DNN系列:https://blog.csdn.net/friday1203/category_12824284.html
CNN系列:https://blog.csdn.net/friday1203/category_12824257.html
本系列中涉及到前面的知识点我都默认是不需要展开说明的。所以当你看不懂时,从前面一步步看,到这里就是水到渠成的事情了。
一、知识体系框架概览
1、算法的发展脉络
对于让计算机从数据中学习、或者说让计算机从数据中挖掘出背后的规律这一任务,最早人们是使用各种数理统计模型建模分析的,但是统计模型要求数据的复杂度要限制在一定的范围之内,事实上现实中的数据来源越来越广、复杂度也越来大,统计的那套假设、总体、样本、抽样、估计、检验等整套理论越来越不适合了。
于是出现了以追求效果为王的机器学习系列算法出现了,至今像XGBoost、lightGBM、SVM、集成学习等这些经典的机器学习算法依然在小数据领域非常受宠。
随着数据量越来越大,机器学习也出现了天花板,深度学习横空出世了。从全连接神经网络DNN到卷积神经网络CNN再到RNN,基本就是深度学习的入门基础了。本系列就是从RNN讲起。
2、硬件对算法的支持
深度学习的大发展离不开计算机硬软件的发展:
硬件方面:GPU(图形处理单元)、TPU(张量处理单元)、ASICs(应用特定集成电路)等。
软件方面:多核处理器、分布式系统、超线程技术等。
数据存储方面:SSN、RAM、以及新型存储技术如3DXPoint等。
数据计算方面:FFT(快速傅里叶变换)、Strassen算法(快速矩阵乘法)等。
3、当下深度学习的繁荣景象
有了更海量更多样的数据 来源和硬件支持 下,当下的深度学习已经逐渐从,数据中找规律进行预测的低级别任务,转到了机器智能任务,也就是我们耳能祥熟的人工智能AI。就是已经开始探索如何让计算机跨越语义鸿沟,理解人类的视觉感知、声音感知、文本理解等等,如何让计算机像人类一样接受、处理、反馈、交流信息。
在技术方面,计算机视觉、强化学习、对抗式学习、图深究网络、自然语言处理、语音技术、大语言模型技术、预训练技术、生成式语言模型技术、图文模型技术、boosting与深度学习的模型融合等技术一日千里,日新月异。在应用方面更是目不暇接、眼花缭乱。
自然语言处理:如RNN、transformer、BERT、GPT架构、语义分析、情感分析等。
增强学习:技术包括Q-learning、Deep Q Networks(DQN)、蒙特卡洛树搜索(MCCTS)等。
知识图谱:结合大量数据,构建对象之间的关系,支持更复杂的查询和推理。
逻辑推理和符号计算:如专家系统、规则引擎、SAT solvers等。
模拟人类思维的框架和算法:例如认知架构(如SOAR和ACTR)。
4、NLP发展历程
NLP,Natural Language Process 的发展历程是:
(1)规则类语言模型:人工规则--统计学模型--隐马尔可夫模型HMM--条件随机场CRF,svm等。
(2)深度学习模型:无监督网络seq2seq自编码器--循环神经网络RNN----GRU--LSTM长短期记忆网络,应对小规模数据
(3)2015年谷歌将transformer自注意机制摆放到一个高度上,推出transformer架构,后面基于transformer的BERT、GPT语言模型大放异彩。
(4)2020年以后,大语言模型larger language models,LLMs, 比如GPT3.0。中文大模型chatGLM系列也是更多的基于BERT和GPT的融合。
(5)语言大模型爆火后,随之带来的就是大模型的研发、训练微调技术:生物反馈式强化学习RLFH,近端策略优化PPO,奖励权重策略reward-based weighting, DeepSpeed训练引擎等技术。
降低训练成本方面的预训练、微调、自动预料生成、构建大规模预料库等任务。
微调方面的技术:有监督的微调SFT, 低阶自适应微调方法LoRA、提示词前缀微调方法Prefix Tuning、轻量级Prefix微调Prompt Tuning、百倍效率提升的微调方法P-Tuning V2、自适应预算分配微调方法AdaLoRA等。
5、NLP的应用
NLP技术的应用领域:机器翻译、文本摘要、问答系统、搜索引擎、推荐系统、语音助手、聊天机器人、自动摘要、情感分析、语言大模型的相关软件和APP。几乎所有涉及到文本或语音的产品或服务都使用NLP技术。还有比如office、自动编程等特色应用。
NLP和其他领域结合:图生文、文生图、语音文字、视频文字、强化学习和文字、对抗学习和文字、自动驾驶领域和文字。
深度学习之父Geoffrey Hinton:让神经网络理解文字 。
NLP领域的经典会议有ACL和NAACL。
计算机视觉、强化学习、对抗式学习、自动驾驶领域都有借鉴NLP架构的论文。
计算机视觉领域的非卷积架构ViT(Vision Transformer)就是典型代表,就是将transformer应用到视觉领域。
23年3月,谷歌大脑发表《LEAST-TO-MOST PROMPTING》,验证了大模型GPT3.5 + 适当的提示工程可在自动驾驶领域的高难度地面导航数据集SCAN上达到99%的预测精度。(SCAN数据集的平均精度之前可只有50%左右)
6、学习线路
一个完整的深度学习项目,一是要有数据,二是有模型架构,三是恰当的训练。而且三者是环环相扣的:
1、数据和架构要相互匹配。模型架构是根据数据特点设计的,你是什么特点或者什么结构的数据你就得选择什么样的架构。比如你是二维表格数据你非得用卷积网络架构,那数据预处理环节就非常的拧巴。如果你是图片数据,你非得用全连接神经网络,你算力够吗。比如你是简单的数据集,你非得用100层以上的网络跑,或者你是复杂的时序数据,你非得用简单的几层DNN去跑,那都是不合适的,就是你不会取得你想要的效果的。所以架构一定要匹配数据,数据要符合架构的基本要求。
2、架构和训练方式要匹配。你的架构简单,那就简单的梯度下降算法,以及尝试使用各种梯度下降优化算法的技巧,去优化模型即可。如果你的架构及其复杂,比如BERT或者GPT,那传统的梯度下降是无法进行恰当的训练的,你就需要寻找更加高效或者更加低成本的训练技术,比如生物反馈式强化学习RLFH,近端策略优化PPO, 奖励权重策略reward-based weighting,DeepSpeed训练引擎等技术的加持才能很好的训练你的模型。如果你想降低训练成本,你还得掌握预训练、微调等技术。
3、数据和训练。有数据才能训练模型,训练的内容是让模型架构去学习数据。所以首先你得有合适得数据,而数据得获取又是整个深度学习项目中成本最高的一环,所以要想降低成本,你得掌握一些自动生成预料的一些技术。另外,如果你已经有了大量的复杂的原始数据,那你拿这些数据去训练模型时,你还得要掌握很多的数据预处理、数据增强、特征工程等系列技术手段和技术trick,你才能训练出好的模型,就是模型有很强的学习能力和泛化能力。就是才能得到好的效果。
所以本系列也是围绕数据、模型、训练三大方面讲解。