目录
1、词表示
2、语言模型(LM)
3、常用学习网址
自然语言处理
1、词表示
词表示:自然语言中最基本的语言单位表示成机器理解的方式
方式一:词与词之间的相似度
方式二:词与词之间的关系
词义的表示方法:近义词、反义词或隶属与的上位词等相关的词放到一起,表示这个词的词义。
存在问题:词的表示有时候有差异,如果apple表示水果,但也表示苹果公司。同时受限于词典的标注和范围及人工问题。
新的词义的表示方法是:one-hot编码,即向量。
word | id | one-hot-vecotr |
star | 2 | 【0,0,1,0,0,......,0,0】 |
sun | 3 | 【0,0,0,1,0,......,0,0】 |
有多少个词,维度就是多少。并且把文档中所有的词都可以包含在内。比较适用于两个文档中的相似度计算。表示词存在问题,词与词之间的正交,词与词之间相似度都是0。
新表达方式:上下文词语统计个数,计算稠密度表示。
word2vec
2、语言模型(LM)
有能力根据前文预测下一个词。
完成的两个工作:
01 完成计算一个序列的词,它称为一句话的联合概率是什么
02 有能力根据前文预测下一个词。
句子的联合概率拆解成每个词和他前面词的概率乘积。
N-gram模型,给定N,就考虑前面N-1个词的概率。
神经网络经过多层前向转播,中间要经过多次的激活函数,其中的激活函数就是将线性的变换转换为非线性的。如果都是线性的,则容易导致多层神经网络塌压成单一的神经网络。如下图所示,如果每层都是线性变换,最终结果任然是线性的。因此使用激活函数。
激活函数是将 WX+b的激活给激活函数,经过激活函数得到新的结果数据,这些结果数据不是线性的。常用的激活函数有:
sigmoid 将正负无穷大的数据转换为 0--1区间数
tanj 将正负无穷大的数据转换为 -1--1区间数
rlu 正数不变,负数为0
输出层;
01 线性输出层
常用于线性回归,预测一个连续性的值
02 sigmoid的输出层
将数据压缩到 0 -- 1 区间内,可以用来解决二分类问题。用y表示当前模型输入属于哪一个类的概率。用1-y标书输入模型属于另一个类的概率
03 softmax输出层
主要用来解决多分类问题,需要多少个分类,就设置多少个输出。同时对最后一个隐层去应用一个线性层,得到一个输出z,这样可以将隐层通过线性变化成我们需要的一个维度。最后对每个元素进行计算Zi次方 即 exp(Zi),然后除以他们的和。使得最终输出层的维度和是1.
交叉熵
在神经网络中,损失函数越小,正确预测类别的概率越高,模型预测越准确。
为了达到训练目标,通常是希望最小化某一个损失函数,那么如何最小化一个损失函数呢。
神经网络中通常采用梯度下降法,把整个步骤拆分成若干个步骤,每一步缩小参数一点点。
如何调整参数,在每一步缩小这个损失函数呢?思路是首先求损失函对这个模型参数的梯度,这个梯度代表对这个参数进行单位大小的改动而损失函数变换最快的一个方向,顺着这个方向向前走一步,去应用一个对模型参数的一个小的变换,去降低一点点损失。
求解梯度的过程,那么就可以使用链式法则进行求解。
在深度学习场景中,求对每一个参数的梯度是通过反向传播算法实现的。
词向量的来源思想主要就是就是统计语言模型,即概率问题
3、常用学习网址
独热编码:https://www.bilibili.com/video/BV1ut4y1H7r5?p=3&vd_source=58326b6310c128664f1f5d5d6c97c18b
词向量+word2vec:https://www.bilibili.com/video/BV1xJ411i7mE/?p=82&vd_source=58326b6310c128664f1f5d5d6c97c18b
http://platform.openai.com/docs/guides/function-calling