一、自然语言处理的基础
1、图灵测试 就是验证人工智能程序有多智能
让计算机像人一样,能够听懂问题,然后给出答案;
自然语言发展历史:
advances in Natural Lannguage Processing --论文
2、自然语言处理的基本任务和应用
2.1任务:
词性质(动词,名词),命名实体识别(人名,地名,机构名),共指消解(it,she代指的是谁),句法的理论(主谓宾,定状补),中文分词任务
2.2 应用:
1、搜索引擎,query和document的相似段
搜索引擎出广告:文本匹配的问题
2、知识图谱:是搜索引擎重要的点
query如何找知识图谱的实体,如何构建知识图谱
使用自然语言处理,把一篇文章,识别出哪些实体是有关系,然后自动输出到知识图谱中,用于后续的知识图谱的查询
3、个人助手
智能音箱,理解人说的话给出回复
4、机器翻译
5、情感分类和意见挖掘
6、社会科学 books.google.com/ngrams
3、词表示:就要把我们说的词转换为计算机可以理解的表示
3.1 one hot 表示
任何一个词都表示词表大小的向量
star 【0,0,1,0,0】
sun【0,1,0,0,0
】
3.2 上下文表示词
词向量的长度也是字典的大小,但是向量中每个值的是上下文中出现的次数
3.3 word embedding
word2vector 方法,使用一个低维度的向量就是表示一个高纬度的向量且信息不丢失
语言模型
根据前面的词预测后面的词
语言模型的假设:后面的词只依赖前面的词;马尔可夫的假设
N-gram模型 使用条件概率和联合概率计算下一个词,每个词都是一个符号没有啥含义
问题:上下文不能特别大;词之间的相似度是独立的
Neural labaguage Model 模型
使用前面说的wordembedding表示的向量
大模型基础知识
word2vec,RNN,Elmo,Bert
预训练语言模型 作为nlp领域的基础工具
预训练语言模型:从无标注数据学习,使用任务相关数据进行微调,最终获取行业的大模型
这种方式也叫迁移学习
编程需要的环境:
1、http://colab.research.google.com 获取gpu的资源,或者自己买gpu
2、ssh、linux command \vim,Tmux,Virtual &conda&pip,Vscode+remote connection,git,bash
二、神经网络
神经网络的组成元素
单个神经元
单层神经网络
多层神经网络
激活函数的用途:
如果激活函数是线性的函数,那么多层的神经网络可以替换为单层的神经网路;因此需要引入非线性的激活函数;
激活函数:
标准的神经网络
输出层的函数
上面就是线性回归 和 二分类的输出函数
多分类输出使用softmax
如何训练一个神经网络
1、一个简单的回归问题,使用神经网络实现,主要是要设定损失函数(这个很关键)-最小二乘
2、一个二分类问题,使用神经网络进行预测--损失函数就是交叉商,比如情感分类
交叉商的例子
为了达到训练目标,一定要做到最小化某个损失函数
如何最小化损失函数?
神经网络中一般使用梯度下降方法进行最小化损失函数
反向传播算法实现最小化损失函数,
一个简单的例子:word2Vec 使用神经网络实现
CNN:在文本分类领域 把一个句子分割为词组,2个词为一个词组。然后计算不同词之间的关系
CNN的应用
RNN中使用注意力机制
Transformer工具这个模型
1、词典表示--bpe方式
2、位置编码
3、多头自注意力机制
4、bp神经网络
注意力机制的可视化网站:
Dodrioy
预训练语言模型
word2vector的预训练词向量模型
RNN的预训练语言模型 比如elmo