【清华NLP】刘知远团队大模型公开课全网首发|带你从入门到实战

词的表示的基本目的
1.词的相似度 2.词的关系
一、用一组与这个词相关的词表示词
近义词,上位词
问题:
1.词语之间的较小差异无法区分
2.词义会发生变化,出现新的词义
3.主观性的问题,受限于词典的标注
4.数据吸收
5.大量的人工去构建、维护词典
二、把每个词表示成独立的符号
和词表一样长的向量去找一维跟这个词相对应,整个向量的维度跟词表的长度是相当的
用来表示文档时非常有效,能较好地完成两个文档之间的相似度计算

问题:
会假设词根词之间的向量任意之间都是正交的,导致任意两个词之间进行相似度计算都是0.

三、一个词的词义由他经常出现在的位置的上下文有密切的关系
任何一个词都可以用他出现的维度或者重要性去进行表示,可以得到关于每一个词的稠密向量,就可以在这个空间里面利用稠密向量来计算两个词之间的相似度

问题:
1.词表变大,存储需求也会变大
2.有些词出现频度特别少,上下文少,这种方法不好表示
三、分布式表示
建立低维的稠密的向量空间,尝试把每一个词都学到这个空间里,用这个空间里的某一个位置所对应的向量来表示这个词,
在这个空间里我们可以自动的学习出来词与词之间可能存在的相对比较稳定的一些关系

语言模型
目的:

1.计算一个词的序列成为一句合法的话的概率,联合概率
2.根据前面说过的话,预测下一个词是什么
基本假设:
一个未来的词只会受到他前面的词的影响

一个句子的联合概率=里面的每一个词基于前面已经出现的词的条件概率之积
N-gram Model
每一个词是一个单独的符号
4-gram只会考虑相邻的4个词,也就是前面出现的三个词来预测下一个词

Bigram就是2-gram,考虑连续出现的两个词,相当于只考虑前面出现的一个词,预测下一个词是什么
Trigram就是3-gram

在一个大规模数据里统计连续出现的序列的频度,在深度学习出现之前一个非常重要的技术
遵守Markov的假设,只考虑前面的有限的几个词
问题:
1.考虑的长度通常短,N多是2或者3
2.背后还是会假设所有词相互之间都是独立的,上下文基于符号去做统计,不能理解词与词之间的相似度造成了什么

Neural Language Model
每一个词是一个低维的向量
用分布式的表示建构前文和当前词的预测条件概率
1.把词表示成低维的向量
2.把低维的向量拼在一起,形成一个更高的上下文的向量
3.经过非线性的转换,用向量去预测下一个词是什么
通过对上下文的表示完成,
相似的词会有一个相似的向量,就有可能在语境中发挥相似的作用

大模型
预训练语言模型,解决NLP的一个基本的工具
大量数据,大量参数
预训练:会从无标注的数据中去进行学习,通过自监督的一些任务去做预训练,从中得到丰富的知识

微调:引入任务相关的一些数据以对具体任务进行适配
预训练+微调的模式

Neural Network(神经网络)
人工神经网络

w——权重,x——输入,写成粗体代表是向量
例子里是长度为3的向量
权重向量和输入向量的点乘得到的标量值+偏置b,最后送入激活函数f
得到一个人工神经元的输出

每个神经元都会得到一个值,本例中有3个神经元,这一层的输出就有3个值
权重——从向量变成了一个矩阵
本例中权重是一个3×3的矩阵
W12,矩阵中第一行第二列的元素
表示这一个权重是要在计算的过程中和x2这个输入相乘,乘积被加到a1这个神经元上
偏置——从标量变成向量
三个神经元每一个神经元都有一个偏置,可表示为b1,b2,b3,合起来是一个三维的向量
Wx+b运算得到的是一个三维的向量
f激活函数对一个向量是按位进行运算的,对向量中的每一个值进行运算,输出就是每一个值的运算结果,再把他们组装成同等大小的一个向量

多层的神经网络,每层都有若干个神经元,我们可以从输入开始依次计算每一层的结果,即“前向计算”
隐层:输入之上添加的多层网络
(hidden layer),其输出通常使用h来表示
本例中有三个隐层,输出分别记为h1,h2,h3,
每一层的输出结果是由上一层的输出结果经由线性变化和激活函数得到的
输入层(Inout layer)
关于激活函数
如果神经网络中只存在线性运算的话,那么多层的神经网络其实可以被转化为单层的神经网络

把h1的计算公式带入到计算h2的公式中展开,这一层神经网络权重矩阵是w2×w1,偏置是w2b1+b2
所以我们使用非线性的激活函数,防止多层的神经网络塌缩成单一的神经网络

增加若干个隐层可以提高网络的表达能力,如果想要得到我们想要的输出结果,就需要添加网络的最后一层,即输出层



softmax 得到的结果是若干个正值,且和为1,可以说得到的是不同类别的概率分布,通常用于解决多分类的问题